diff --git a/plugins/impex/CMakeLists.txt b/plugins/impex/CMakeLists.txt index 6468ef842d..4050c9e01f 100644 --- a/plugins/impex/CMakeLists.txt +++ b/plugins/impex/CMakeLists.txt @@ -1,50 +1,56 @@ project(kritafilters) add_subdirectory(libkra) if(CMAKE_SIZEOF_VOID_P EQUAL 4) add_definitions( -DCPU_32_BITS ) endif() if(JPEG_FOUND AND HAVE_LCMS2) add_subdirectory(jpeg) endif() if(TIFF_FOUND) add_subdirectory(tiff) endif() if(PNG_FOUND) add_subdirectory(png) add_subdirectory(csv) endif() if(OPENEXR_FOUND) add_subdirectory(exr) endif() if(Poppler_Qt5_FOUND) add_subdirectory(pdf) endif() if(LIBRAW_FOUND) add_subdirectory(raw) endif() add_subdirectory(svg) add_subdirectory(qimageio) add_subdirectory(ora) add_subdirectory(ppm) add_subdirectory(xcf) add_subdirectory(psd) add_subdirectory(qml) add_subdirectory(tga) add_subdirectory(heightmap) add_subdirectory(brush) add_subdirectory(spriter) add_subdirectory(video) add_subdirectory(kra) if (GIF_FOUND) add_subdirectory(gif) endif() + +# +# Look for libheif; needs a findHeif.cmake module +# if (HEIF_FOUND) + add_subdirectory(heif) +# endif() diff --git a/plugins/impex/heif/CMakeLists.txt b/plugins/impex/heif/CMakeLists.txt new file mode 100644 index 0000000000..85f2a091ee --- /dev/null +++ b/plugins/impex/heif/CMakeLists.txt @@ -0,0 +1,32 @@ +include_directories(SYSTEM ${HEIF_INCLUDE_DIR} ) + +add_definitions(${HEIF_DEFINITIONS}) + + +set(kritaheifimport_SOURCES + HeifImport.cpp + HeifConverter.cpp +) + +add_library(kritaheifimport MODULE ${kritaheifimport_SOURCES}) + +target_link_libraries(kritaheifimport kritaui kritalibkra + ${OPENHEIF_LIBRARIES} +) + +install(TARGETS kritaheifimport DESTINATION ${KRITA_PLUGIN_INSTALL_DIR}) + +set(kritaheifexport_SOURCES + HeifExport.cpp + HeifConverter.cpp +) + +ki18n_wrap_ui(kritaheifexport_SOURCES WdgHeifExport.ui ) + +add_library(kritaheifexport MODULE ${kritaheifexport_SOURCES}) + +target_link_libraries(kritaheifexport kritaui kritalibkra kritaimpex ${HEIF_LIBRARIES} ) + +install(TARGETS kritaheifexport DESTINATION ${KRITA_PLUGIN_INSTALL_DIR}) + +install( PROGRAMS krita_heif.desktop DESTINATION ${XDG_APPS_INSTALL_DIR}) diff --git a/plugins/impex/heif/HeifConverter.cpp b/plugins/impex/heif/HeifConverter.cpp new file mode 100644 index 0000000000..0cc1174cd7 --- /dev/null +++ b/plugins/impex/heif/HeifConverter.cpp @@ -0,0 +1,103 @@ +/* + * Copyright (c) 2005 Adrian Page + * Copyright (c) 2010 Cyrille Berger + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include "HeifConverter.h" + +#include +#include +#include + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include "kis_iterator_ng.h" + +#include "kis_kra_savexml_visitor.h" + +struct HeifConverter::Private { + Private() + : doc(0) + {} + + bool showNotifications; + KisImageSP image; + KisDocument *doc; + QString errorMessage; +}; + +HeifConverter::HeifConverter(KisDocument *doc, bool showNotifications) + : d(new Private) +{ + d->doc = doc; + d->showNotifications = showNotifications; +} + +HeifConverter::~HeifConverter() +{ +} + +KisImageBuilder_Result HeifConverter::buildImage(const QString &filename) +{ + // Open the file + // Read it + // Convert the libheif image data to layer(s) in d->image + return KisImageBuilder_RESULT_OK; +} + +KisImageSP HeifConverter::image() +{ + return d->image; +} + +QString HeifConverter::errorMessage() const +{ + return d->errorMessage; +} + +KisImageBuilder_Result HeifConverter::buildFile(const QString &filename, KisImageSP image) +{ + // open the file + // Iterate over the layer's pixels + // KisSequentialIterator it(image->rootLayer()->projection(), paintRegion); + // while (it.nextPixel()) { + // + // } + // write the data to the file + return KisImageBuilder_RESULT_OK; +} + + +void HeifConverter::cancel() +{ + warnKrita << "WARNING: Cancelling of an EXR loading is not supported!"; +} + + diff --git a/plugins/impex/heif/HeifConverter.h b/plugins/impex/heif/HeifConverter.h new file mode 100644 index 0000000000..0081a8247c --- /dev/null +++ b/plugins/impex/heif/HeifConverter.h @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2010 Cyrille Berger + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef _EXR_CONVERTER_H_ +#define _EXR_CONVERTER_H_ + +#include + +#include + +#include "kis_types.h" +#include + +class KisDocument; + +class HeifConverter : public QObject +{ + Q_OBJECT +public: + HeifConverter(KisDocument *doc, bool showNotifications); + ~HeifConverter() override; +public: + KisImageBuilder_Result buildImage(const QString &filename); + KisImageBuilder_Result buildFile(const QString &filename, KisImageSP image); + + /** + * Retrieve the constructed image + */ + KisImageSP image(); + QString errorMessage() const; +private: + KisImageBuilder_Result decode(const QString &filename); + +public Q_SLOTS: + virtual void cancel(); +private: + struct Private; + const QScopedPointer d; +}; + +#endif diff --git a/plugins/impex/heif/HeifExport.cpp b/plugins/impex/heif/HeifExport.cpp new file mode 100644 index 0000000000..a3fabe559c --- /dev/null +++ b/plugins/impex/heif/HeifExport.cpp @@ -0,0 +1,149 @@ +/* + * Copyright (c) 2010 Cyrille Berger + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include "HeifExport.h" + +#include +#include +#include + +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include "HeifConverter.h" + + +class KisExternalLayer; + +K_PLUGIN_FACTORY_WITH_JSON(ExportFactory, "krita_heif_export.json", registerPlugin();) + +EXRExport::EXRExport(QObject *parent, const QVariantList &) : KisImportExportFilter(parent) +{ +} + +EXRExport::~EXRExport() +{ +} + +KisPropertiesConfigurationSP EXRExport::defaultConfiguration(const QByteArray &/*from*/, const QByteArray &/*to*/) const +{ + KisPropertiesConfigurationSP cfg = new KisPropertiesConfiguration(); + cfg->setProperty("quality", 100); + cfg->setProperty("lossless", true); + return cfg; +} + +KisConfigWidget *EXRExport::createConfigurationWidget(QWidget *parent, const QByteArray &/*from*/, const QByteArray &/*to*/) const +{ + return new KisWdgOptionsHeif(parent); +} + +KisImportExportFilter::ConversionStatus EXRExport::convert(KisDocument *document, QIODevice */*io*/, KisPropertiesConfigurationSP /*configuration*/) +{ + KisImageSP image = document->savingImage(); + + HeifConverter heifConverter(document, !batchMode()); + + KisImageBuilder_Result res; + + res = heifConverter.buildFile(filename(), image); + + dbgFile << " Result =" << res; + switch (res) { + case KisImageBuilder_RESULT_INVALID_ARG: + document->setErrorMessage(i18n("This layer cannot be saved to HEIF.")); + return KisImportExportFilter::WrongFormat; + + case KisImageBuilder_RESULT_EMPTY: + document->setErrorMessage(i18n("The layer does not have an image associated with it.")); + return KisImportExportFilter::WrongFormat; + + case KisImageBuilder_RESULT_NO_URI: + document->setErrorMessage(i18n("The filename is empty.")); + return KisImportExportFilter::CreationError; + + case KisImageBuilder_RESULT_NOT_LOCAL: + document->setErrorMessage(i18n("HEIF images cannot be saved remotely.")); + return KisImportExportFilter::InternalError; + + case KisImageBuilder_RESULT_OK: + if (!heifConverter.errorMessage().isNull()) { + document->setErrorMessage(heifConverter.errorMessage()); + } + return KisImportExportFilter::OK; + default: + break; + } + + document->setErrorMessage(i18n("Internal Error")); + return KisImportExportFilter::InternalError; + +} + +void EXRExport::initializeCapabilities() +{ + // This checks before saving for what the file format supports: anything that is supported needs to be mentioned here + + addCapability(KisExportCheckRegistry::instance()->get("NodeTypeCheck/KisGroupLayer")->create(KisExportCheckBase::SUPPORTED)); + addCapability(KisExportCheckRegistry::instance()->get("MultiLayerCheck")->create(KisExportCheckBase::SUPPORTED)); + addCapability(KisExportCheckRegistry::instance()->get("sRGBProfileCheck")->create(KisExportCheckBase::SUPPORTED)); + + QList > supportedColorModels; + supportedColorModels << QPair() + << QPair(RGBAColorModelID, Float16BitsColorDepthID) + << QPair(RGBAColorModelID, Float32BitsColorDepthID) + << QPair(GrayAColorModelID, Float16BitsColorDepthID) + << QPair(GrayAColorModelID, Float32BitsColorDepthID) + << QPair(GrayColorModelID, Float16BitsColorDepthID) + << QPair(GrayColorModelID, Float32BitsColorDepthID) + << QPair(XYZAColorModelID, Float16BitsColorDepthID) + << QPair(XYZAColorModelID, Float32BitsColorDepthID); + addSupportedColorModels(supportedColorModels, "HEIF"); +} + + +void KisWdgOptionsHeif::setConfiguration(const KisPropertiesConfigurationSP cfg) +{ + chkLossless->setChecked(cfg->getBool("lossless", true)); + sliderQuality->setValue(cfg->getInt("quality", 100)); +} + +KisPropertiesConfigurationSP KisWdgOptionsHeif::configuration() const +{ + KisPropertiesConfigurationSP cfg = new KisPropertiesConfiguration(); + cfg->setProperty("flatten", chkLossless->isChecked()); + cfg->setProperty("quality", sliderQuality->value()); + return cfg; +} + +#include + diff --git a/plugins/impex/heif/HeifExport.h b/plugins/impex/heif/HeifExport.h new file mode 100644 index 0000000000..00bd4bcbda --- /dev/null +++ b/plugins/impex/heif/HeifExport.h @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2010 Cyrille Berger + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef HEIF_EXPORT_H_ +#define HEIF_EXPORT_H_ + +#include + +#include +#include +#include "ui_WdgHeifExport.h" + +class KisWdgOptionsHeif : public KisConfigWidget, public Ui::WdgHeifExport +{ + Q_OBJECT + +public: + KisWdgOptionsHeif(QWidget *parent) + : KisConfigWidget(parent) + { + setupUi(this); + } + + void setConfiguration(const KisPropertiesConfigurationSP cfg) override; + KisPropertiesConfigurationSP configuration() const override; +}; + + +class EXRExport : public KisImportExportFilter +{ + Q_OBJECT +public: + EXRExport(QObject *parent, const QVariantList &); + ~EXRExport() override; + + // This should return true if the library can work with a QIODevice, and doesn't want to open the file by itself + bool supportsIO() const override { return false; } + + KisImportExportFilter::ConversionStatus convert(KisDocument *document, QIODevice *io, KisPropertiesConfigurationSP configuration = 0) override; + KisPropertiesConfigurationSP defaultConfiguration(const QByteArray& from = "", const QByteArray& to = "") const override; + KisConfigWidget *createConfigurationWidget(QWidget *parent, const QByteArray& from = "", const QByteArray& to = "") const override; + void initializeCapabilities() override; + +}; + +#endif diff --git a/plugins/impex/heif/HeifImport.cpp b/plugins/impex/heif/HeifImport.cpp new file mode 100644 index 0000000000..55fe67055e --- /dev/null +++ b/plugins/impex/heif/HeifImport.cpp @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2010 Cyrille Berger + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include "HeifImport.h" + +#include +#include + +#include + +#include +#include + +#include "HeifConverter.h" + +K_PLUGIN_FACTORY_WITH_JSON(ImportFactory, "krita_heif_import.json", registerPlugin();) + +HeifImport::HeifImport(QObject *parent, const QVariantList &) : KisImportExportFilter(parent) +{ +} + +HeifImport::~HeifImport() +{ +} + +KisImportExportFilter::ConversionStatus HeifImport::convert(KisDocument *document, QIODevice */*io*/, KisPropertiesConfigurationSP /*configuration*/) +{ + HeifConverter imageBuilder(document, !batchMode()); + + switch (imageBuilder.buildImage(filename())) { + case KisImageBuilder_RESULT_UNSUPPORTED: + case KisImageBuilder_RESULT_UNSUPPORTED_COLORSPACE: + document->setErrorMessage(i18n("Krita does support this type of EXR file.")); + return KisImportExportFilter::NotImplemented; + + case KisImageBuilder_RESULT_INVALID_ARG: + document->setErrorMessage(i18n("This is not a HEIF file.")); + return KisImportExportFilter::BadMimeType; + + case KisImageBuilder_RESULT_NO_URI: + case KisImageBuilder_RESULT_NOT_LOCAL: + document->setErrorMessage(i18n("The HEIF file does not exist.")); + return KisImportExportFilter::FileNotFound; + + case KisImageBuilder_RESULT_BAD_FETCH: + case KisImageBuilder_RESULT_EMPTY: + document->setErrorMessage(i18n("The HEIF file is corrupted.")); + return KisImportExportFilter::ParsingError; + + case KisImageBuilder_RESULT_FAILURE: + document->setErrorMessage(i18n("Krita could not create a new image.")); + return KisImportExportFilter::InternalError; + + case KisImageBuilder_RESULT_OK: + Q_ASSERT(imageBuilder.image()); + document -> setCurrentImage(imageBuilder.image()); + return KisImportExportFilter::OK; + + default: + break; + } + + return KisImportExportFilter::StorageCreationError; +} + +#include + diff --git a/plugins/impex/heif/HeifImport.h b/plugins/impex/heif/HeifImport.h new file mode 100644 index 0000000000..07e5205f46 --- /dev/null +++ b/plugins/impex/heif/HeifImport.h @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2010 Cyrille Berger + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef HEIF_IMPORT_H_ +#define HEIF_IMPORT_H_ + +#include + +#include + +class HeifImport : public KisImportExportFilter +{ + Q_OBJECT +public: + HeifImport(QObject *parent, const QVariantList &); + ~HeifImport() override; + bool supportsIO() const override { return false; } + KisImportExportFilter::ConversionStatus convert(KisDocument *document, QIODevice *io, KisPropertiesConfigurationSP configuration = 0) override; +}; + +#endif diff --git a/plugins/impex/heif/WdgHeifExport.ui b/plugins/impex/heif/WdgHeifExport.ui new file mode 100644 index 0000000000..4540c0f643 --- /dev/null +++ b/plugins/impex/heif/WdgHeifExport.ui @@ -0,0 +1,73 @@ + + + WdgHeifExport + + + + 0 + 0 + 400 + 243 + + + + + + + + 0 + 0 + + + + This option will merge all layers. It is advisable to check this option, otherwise other applications might not be able to read your file correctly. + + + &Lossless + + + false + + + + + + + &Quality: + + + sliderQuality + + + + + + + 100 + + + 100 + + + Qt::Horizontal + + + + + + + Qt::Vertical + + + + 20 + 200 + + + + + + + + + diff --git a/plugins/impex/heif/krita_heif.desktop b/plugins/impex/heif/krita_heif.desktop new file mode 100644 index 0000000000..5045f427d2 --- /dev/null +++ b/plugins/impex/heif/krita_heif.desktop @@ -0,0 +1,124 @@ +[Desktop Entry] +Categories=Qt;KDE;Office;Graphics; +Exec=krita %u +GenericName=Application for Drawing and Handling of Images +GenericName[ar]=تطبيق لرسم الصّور والتّعامل معها +GenericName[bg]=Приложение за рисуване и обработка на изображения +GenericName[bs]=Aplikacija za crtanje i upravljanje slikom +GenericName[ca]=Aplicació per a dibuix i modificació d'imatges +GenericName[ca@valencia]=Aplicació per a dibuix i modificació d'imatges +GenericName[da]=Tegne- og billedbehandlingsprogram +GenericName[de]=Programm zum Zeichnen und Bearbeiten von Bildern +GenericName[el]=Εφαρμογή για επεξεργασία και χειρισμό εικόνων +GenericName[en_GB]=Application for Drawing and Handling of Images +GenericName[eo]=Aplikaĵo por Desegnado kaj Mastrumado de Bildoj +GenericName[es]=Aplicación para dibujo y manipulación de imágenes +GenericName[et]=Joonistamise ja pilditöötluse rakendus +GenericName[eu]=Irudiak marrazteko eta manipulatzeko aplikazioa +GenericName[fa]=کاربرد برای ترسیم و به کار بردن تصاویر +GenericName[fi]=Ohjelma kuvien piirtämiseen ja käsittelyyn +GenericName[fr]=Application pour dessiner et manipuler des images +GenericName[fy]=Aplikaasje om ôfbyldings mei te tekenjen en te bewurkjen +GenericName[ga]=Feidhmchlár le haghaidh Líníochta agus Láimhseála Íomhánna +GenericName[gl]=Aplicativo de debuxo e edición de imaxes +GenericName[he]=יישום לצביעה וניהול תמונות +GenericName[hi]=छवियों को ड्रा करने तथा उन्हें प्रबन्धित करने का अनुप्रयोग +GenericName[hne]=फोटू मन ल ड्रा करे अउ ओ मन ल प्रबन्धित करे के अनुपरयोग +GenericName[hu]=Rajzoló és képkezelő +GenericName[is]=Teikni og myndvinnsluforrit +GenericName[it]=Applicazione di disegno e gestione di immagini +GenericName[ja]=描画と画像操作のためのアプリケーション +GenericName[kk]=Кескінді салу және өңдеу бағдарламасы +GenericName[ko]=그림 그리기 및 처리 프로그램 +GenericName[lv]=Programma zīmēšanai un attēlu apstrādei +GenericName[nb]=Program for tegning og bildehåndtering +GenericName[nds]=Programm för't Teken un Bildhanteren +GenericName[ne]=रेखाचित्र बनाउन र छविको ह्यान्डल गर्नका लागि अनुप्रयोग +GenericName[nl]=Toepassing om afbeeldingen te tekenen en te bewerken +GenericName[pl]=Program do rysowania i obróbki obrazów +GenericName[pt]=Aplicação de Desenho e Manipulação de Imagens +GenericName[pt_BR]=Aplicativo de desenho e manipulação de imagens +GenericName[ru]=Приложение для рисования и редактирования изображений +GenericName[sk]=Aplikácia na kresnenie a manilupáciu s obrázkami +GenericName[sl]=Program za risanje in rokovanje s slikami +GenericName[sv]=Program för att rita och hantera bilder +GenericName[ta]=பிம்பங்களை கையாளுதல் மற்றும் வரைதலுக்கான பயன்னாடு +GenericName[tr]=Çizim ve Resim İşleme Uygulaması +GenericName[uk]=Програма для малювання і обробки зображень +GenericName[uz]=Rasm chizish dasturi +GenericName[uz@cyrillic]=Расм чизиш дастури +GenericName[wa]=Programe po dessiner et apougnî des imådjes +GenericName[x-test]=xxApplication for Drawing and Handling of Imagesxx +GenericName[zh_CN]=绘制和处理图像的应用程序 +GenericName[zh_TW]=繪圖與影像處理的應用程式 +Icon=calligrakrita +MimeType=image/heif; +Name=Krita +Name[af]=Krita +Name[ar]=كريتا +Name[bg]=Krita +Name[br]=Krita +Name[bs]=Krita +Name[ca]=Krita +Name[ca@valencia]=Krita +Name[cs]=Krita +Name[cy]=Krita +Name[da]=Krita +Name[de]=Krita +Name[el]=Krita +Name[en_GB]=Krita +Name[eo]=Krita +Name[es]=Krita +Name[et]=Krita +Name[eu]=Krita +Name[fi]=Krita +Name[fr]=Krita +Name[fy]=Krita +Name[ga]=Krita +Name[gl]=Krita +Name[he]=Krita +Name[hi]=केरिता +Name[hne]=केरिता +Name[hr]=Krita +Name[hu]=Krita +Name[ia]=Krita +Name[is]=Krita +Name[it]=Krita +Name[ja]=Krita +Name[kk]=Krita +Name[ko]=Krita +Name[lt]=Krita +Name[lv]=Krita +Name[mr]=क्रिटा +Name[ms]=Krita +Name[nb]=Krita +Name[nds]=Krita +Name[ne]=क्रिता +Name[nl]=Krita +Name[pl]=Krita +Name[pt]=Krita +Name[pt_BR]=Krita +Name[ro]=Krita +Name[ru]=Krita +Name[se]=Krita +Name[sk]=Krita +Name[sl]=Krita +Name[sv]=Krita +Name[ta]=கிரிட்டா +Name[tg]=Krita +Name[tr]=Krita +Name[ug]=Krita +Name[uk]=Krita +Name[uz]=Krita +Name[uz@cyrillic]=Krita +Name[wa]=Krita +Name[xh]=Krita +Name[x-test]=xxKritaxx +Name[zh_CN]=Krita +Name[zh_TW]=Krita +StartupNotify=true +Terminal=false +Type=Application +X-KDE-SubstituteUID=false +X-KDE-Username= +NoDisplay=true diff --git a/plugins/impex/heif/krita_heif_export.json b/plugins/impex/heif/krita_heif_export.json new file mode 100644 index 0000000000..4ab2c4da68 --- /dev/null +++ b/plugins/impex/heif/krita_heif_export.json @@ -0,0 +1,12 @@ +{ + "Icon": "", + "Id": "Krita HEIF Export Filter", + "Type": "Service", + "X-KDE-Export": "image/x-heif,application/x-extension-heif", + "X-KDE-Library": "kritaexrexport", + "X-KDE-ServiceTypes": [ + "Krita/FileFilter" + ], + "X-KDE-Weight": "1", + "X-KDE-Extensions" : "heif,heic" +} diff --git a/plugins/impex/heif/krita_heif_import.json b/plugins/impex/heif/krita_heif_import.json new file mode 100644 index 0000000000..b2c69d40e6 --- /dev/null +++ b/plugins/impex/heif/krita_heif_import.json @@ -0,0 +1,12 @@ +{ + "Icon": "", + "Id": "Krita HEIF Import Filter", + "Type": "Service", + "X-KDE-Import": "image/x-heif,application/x-extension-heif", + "X-KDE-Library": "kritaheifimport", + "X-KDE-ServiceTypes": [ + "Krita/FileFilter" + ], + "X-KDE-Weight": "1", + "X-KDE-Extensions" : "heif,heic" +}