Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_tga_export.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2007 Boudewijn Rempt <boud@valdyas.org>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7#include "kis_tga_export.h"
8
9#include <QCheckBox>
10#include <QSlider>
11
12#include <kpluginfactory.h>
13#include <QApplication>
17#include <kis_paint_device.h>
18#include <KisDocument.h>
19#include <kis_image.h>
20#include <kis_paint_layer.h>
21
22#include "tga.h"
23
24K_PLUGIN_FACTORY_WITH_JSON(KisTGAExportFactory, "krita_tga_export.json", registerPlugin<KisTGAExport>();)
25
26KisTGAExport::KisTGAExport(QObject *parent, const QVariantList &) : KisImportExportFilter(parent)
27{
28}
29
33
35{
36 Q_UNUSED(configuration);
37 QRect rc = document->savingImage()->bounds();
38 QImage image = document->savingImage()->projection()->convertToQImage(0, 0, 0, rc.width(), rc.height(), KoColorConversionTransformation::internalRenderingIntent(), KoColorConversionTransformation::internalConversionFlags());
39
40 QDataStream s(io);
41 s.setByteOrder(QDataStream::LittleEndian);
42
43 const QImage& img = image;
44 const bool hasAlpha = (img.format() == QImage::Format_ARGB32);
45 static constexpr quint8 originTopLeft = TGA_ORIGIN_UPPER + TGA_ORIGIN_LEFT; // 0x20
46 static constexpr quint8 alphaChannel8Bits = 0x08;
47
48 for (int i = 0; i < 12; i++)
49 s << targaMagic[i];
50
51 // write header
52 s << quint16(img.width()); // width
53 s << quint16(img.height()); // height
54 s << quint8(hasAlpha ? 32 : 24); // depth (24 bit RGB + 8 bit alpha)
55 s << quint8(hasAlpha ? originTopLeft + alphaChannel8Bits : originTopLeft); // top left image (0x20) + 8 bit alpha (0x8)
56
57 for (int y = 0; y < img.height(); y++) {
58 for (int x = 0; x < img.width(); x++) {
59 const QRgb color = img.pixel(x, y);
60 s << quint8(qBlue(color));
61 s << quint8(qGreen(color));
62 s << quint8(qRed(color));
63 if (hasAlpha)
64 s << quint8(qAlpha(color));
65 }
66 }
67
69}
70
72{
73
74 QList<QPair<KoID, KoID> > supportedColorModels;
75 supportedColorModels << QPair<KoID, KoID>()
76 << QPair<KoID, KoID>(RGBAColorModelID, Integer8BitsColorDepthID);
77 addSupportedColorModels(supportedColorModels, "TGA");
78}
79
80
81
82#include "kis_tga_export.moc"
83
const KoID Integer8BitsColorDepthID("U8", ki18n("8-bit integer/channel"))
const KoID RGBAColorModelID("RGBA", ki18n("RGB/Alpha"))
The base class for import and export filters.
void addSupportedColorModels(QList< QPair< KoID, KoID > > supportedColorModels, const QString &name, KisExportCheckBase::Level level=KisExportCheckBase::PARTIALLY)
void initializeCapabilities() override
KisImportExportErrorCode convert(KisDocument *document, QIODevice *io, KisPropertiesConfigurationSP configuration=0) override
~KisTGAExport() override
KisTGAExport(QObject *parent, const QVariantList &)
K_PLUGIN_FACTORY_WITH_JSON(KritaASCCDLFactory, "kritaasccdl.json", registerPlugin< KritaASCCDL >();) KritaASCCDL
unsigned int QRgb
#define TGA_ORIGIN_UPPER
Definition tga.h:44
#define TGA_ORIGIN_LEFT
Definition tga.h:41
const uchar targaMagic[12]
Definition tga.h:24