init
Some checks failed
Docker. / Ubuntu (push) Has been cancelled
User-agent updater. / User-agent (push) Failing after 15s
Lock Threads / lock (push) Failing after 10s
Waiting for answer. / waiting-for-answer (push) Failing after 22s
Needs user action. / needs-user-action (push) Failing after 8s
Can't reproduce. / cant-reproduce (push) Failing after 8s
Close stale issues and PRs / stale (push) Has been cancelled
172
Telegram/ThirdParty/kimageformats/autotests/CMakeLists.txt
vendored
Normal file
@@ -0,0 +1,172 @@
|
||||
#find_package(Qt5Test ${REQUIRED_QT_VERSION} NO_MODULE)
|
||||
|
||||
include(ECMMarkAsTest)
|
||||
|
||||
add_definitions(-DPLUGIN_DIR="${CMAKE_CURRENT_BINARY_DIR}/../bin")
|
||||
remove_definitions(-DQT_NO_CAST_FROM_ASCII)
|
||||
|
||||
macro(kimageformats_read_tests)
|
||||
cmake_parse_arguments(KIF_RT "" "FUZZ" "" ${ARGN})
|
||||
set(_fuzzarg)
|
||||
if (KIF_RT_FUZZ)
|
||||
set(_fuzzarg -f ${KIF_RT_FUZZ})
|
||||
endif()
|
||||
|
||||
if (NOT TARGET readtest)
|
||||
add_executable(readtest readtest.cpp)
|
||||
target_link_libraries(readtest Qt${QT_MAJOR_VERSION}::Gui)
|
||||
target_compile_definitions(readtest
|
||||
PRIVATE IMAGEDIR="${CMAKE_CURRENT_SOURCE_DIR}/read")
|
||||
ecm_mark_as_test(readtest)
|
||||
endif()
|
||||
|
||||
foreach(_testname ${KIF_RT_UNPARSED_ARGUMENTS})
|
||||
add_test(
|
||||
NAME kimageformats-read-${_testname}
|
||||
COMMAND readtest ${_fuzzarg} ${_testname}
|
||||
)
|
||||
endforeach(_testname)
|
||||
endmacro()
|
||||
|
||||
macro(kimageformats_write_tests)
|
||||
cmake_parse_arguments(KIF_RT "" "FUZZ" "" ${ARGN})
|
||||
set(_fuzzarg)
|
||||
if (KIF_RT_FUZZ)
|
||||
set(_fuzzarg -f ${KIF_RT_FUZZ})
|
||||
endif()
|
||||
|
||||
if (NOT TARGET writetest)
|
||||
add_executable(writetest writetest.cpp)
|
||||
target_link_libraries(writetest Qt${QT_MAJOR_VERSION}::Gui)
|
||||
target_compile_definitions(writetest
|
||||
PRIVATE IMAGEDIR="${CMAKE_CURRENT_SOURCE_DIR}/write")
|
||||
ecm_mark_as_test(writetest)
|
||||
endif()
|
||||
foreach(_testname ${KIF_RT_UNPARSED_ARGUMENTS})
|
||||
string(REGEX MATCH "-lossless$" _is_lossless "${_testname}")
|
||||
string(REGEX MATCH "-nodatacheck" _is_no_data_check "${_testname}")
|
||||
unset(lossless_arg)
|
||||
unset(no_data_check_arg)
|
||||
if (_is_lossless)
|
||||
set(lossless_arg "--lossless")
|
||||
string(REGEX REPLACE "-lossless$" "" _testname "${_testname}")
|
||||
endif()
|
||||
if (_is_no_data_check)
|
||||
set(no_data_check_arg "--no-data-check")
|
||||
string(REGEX REPLACE "-nodatacheck$" "" _testname "${_testname}")
|
||||
endif()
|
||||
add_test(
|
||||
NAME kimageformats-write-${_testname}
|
||||
COMMAND writetest ${lossless_arg} ${no_data_check_arg} ${_fuzzarg} ${_testname}
|
||||
)
|
||||
endforeach(_testname)
|
||||
endmacro()
|
||||
|
||||
# Basic read tests
|
||||
# Loads each <format> image in read/<format>/, and compares the
|
||||
# result against the data read from the corresponding png file
|
||||
kimageformats_read_tests(
|
||||
hdr
|
||||
pcx
|
||||
psd
|
||||
qoi
|
||||
ras
|
||||
rgb
|
||||
tga
|
||||
)
|
||||
|
||||
if (KF5Archive_FOUND)
|
||||
kimageformats_read_tests(
|
||||
kra
|
||||
ora
|
||||
)
|
||||
endif()
|
||||
|
||||
if (TARGET avif)
|
||||
kimageformats_read_tests(
|
||||
avif
|
||||
)
|
||||
kimageformats_write_tests(
|
||||
avif-nodatacheck-lossless
|
||||
)
|
||||
endif()
|
||||
|
||||
if (LibHeif_FOUND)
|
||||
kimageformats_read_tests(
|
||||
heif
|
||||
)
|
||||
# because the plug-ins use RGB->YUV conversion which sometimes results in 1 value difference.
|
||||
kimageformats_write_tests(FUZZ 1
|
||||
heif-nodatacheck-lossless
|
||||
)
|
||||
|
||||
if (LibHeif_VERSION VERSION_GREATER_EQUAL "1.17.0")
|
||||
kimageformats_read_tests(FUZZ 1
|
||||
hej2
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (LibJXL_FOUND AND LibJXLThreads_FOUND)
|
||||
kimageformats_read_tests(
|
||||
jxl
|
||||
)
|
||||
kimageformats_write_tests(
|
||||
jxl-nodatacheck-lossless
|
||||
)
|
||||
endif()
|
||||
|
||||
# Allow some fuzziness when reading this formats, to allow for
|
||||
# rounding errors (eg: in alpha blending).
|
||||
kimageformats_read_tests(FUZZ 1
|
||||
xcf
|
||||
)
|
||||
|
||||
# Basic write tests
|
||||
# Loads each png image in write/, writes the data out
|
||||
# as a <format> image, and compares the result against the
|
||||
# the corresponding <format> file.
|
||||
# You can append -lossless to the format to indicate that
|
||||
# reading back the image data will result in an identical image.
|
||||
kimageformats_write_tests(
|
||||
pcx-lossless
|
||||
pic-lossless
|
||||
qoi-lossless
|
||||
rgb-lossless
|
||||
tga # fixme: the alpha images appear not to be written properly
|
||||
)
|
||||
|
||||
# EPS read tests depend on the vagaries of GhostScript
|
||||
# which we cannot even guarantee to find, so disable them for now
|
||||
#if (BUILD_EPS_PLUGIN)
|
||||
# kimageformats_read_tests(eps)
|
||||
# kimageformats_write_tests(eps)
|
||||
#endif()
|
||||
if (OpenEXR_FOUND)
|
||||
kimageformats_read_tests(
|
||||
exr
|
||||
)
|
||||
endif()
|
||||
|
||||
if (LibRaw_FOUND)
|
||||
kimageformats_read_tests(
|
||||
raw
|
||||
)
|
||||
endif()
|
||||
|
||||
find_package(Qt${QT_MAJOR_VERSION}Test ${REQUIRED_QT_VERSION} CONFIG QUIET)
|
||||
|
||||
if(NOT TARGET Qt${QT_MAJOR_VERSION}::Test)
|
||||
message(STATUS "Qt${QT_MAJOR_VERSION}Test not found, some autotests will not be built.")
|
||||
return()
|
||||
endif()
|
||||
|
||||
add_executable(pictest pictest.cpp)
|
||||
target_link_libraries(pictest Qt${QT_MAJOR_VERSION}::Gui Qt${QT_MAJOR_VERSION}::Test)
|
||||
ecm_mark_as_test(pictest)
|
||||
add_test(NAME kimageformats-pic COMMAND pictest)
|
||||
|
||||
add_executable(anitest anitest.cpp)
|
||||
target_link_libraries(anitest Qt${QT_MAJOR_VERSION}::Gui Qt${QT_MAJOR_VERSION}::Test)
|
||||
ecm_mark_as_test(anitest)
|
||||
add_test(NAME kimageformats-ani COMMAND anitest)
|
||||
BIN
Telegram/ThirdParty/kimageformats/autotests/ani/test.ani
vendored
Normal file
BIN
Telegram/ThirdParty/kimageformats/autotests/ani/test_1.png
vendored
Normal file
|
After Width: | Height: | Size: 813 B |
BIN
Telegram/ThirdParty/kimageformats/autotests/ani/test_2.png
vendored
Normal file
|
After Width: | Height: | Size: 697 B |
BIN
Telegram/ThirdParty/kimageformats/autotests/ani/test_3.png
vendored
Normal file
|
After Width: | Height: | Size: 810 B |
119
Telegram/ThirdParty/kimageformats/autotests/anitest.cpp
vendored
Normal file
@@ -0,0 +1,119 @@
|
||||
/*
|
||||
SPDX-FileCopyrightText: 2020 Kai Uwe Broulik <kde@broulik.de>
|
||||
|
||||
SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
|
||||
*/
|
||||
|
||||
#include <QImage>
|
||||
#include <QImageReader>
|
||||
#include <QTest>
|
||||
|
||||
static bool imgEquals(const QImage &im1, const QImage &im2)
|
||||
{
|
||||
const int height = im1.height();
|
||||
const int width = im1.width();
|
||||
for (int i = 0; i < height; ++i) {
|
||||
const auto *line1 = reinterpret_cast<const quint8 *>(im1.scanLine(i));
|
||||
const auto *line2 = reinterpret_cast<const quint8 *>(im2.scanLine(i));
|
||||
for (int j = 0; j < width; ++j) {
|
||||
if (line1[j] - line2[j] != 0) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
class AniTests : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
private Q_SLOTS:
|
||||
void initTestCase()
|
||||
{
|
||||
QCoreApplication::addLibraryPath(QStringLiteral(PLUGIN_DIR));
|
||||
}
|
||||
|
||||
void testReadMetadata()
|
||||
{
|
||||
QImageReader reader(QFINDTESTDATA("ani/test.ani"));
|
||||
|
||||
QVERIFY(reader.canRead());
|
||||
|
||||
QCOMPARE(reader.imageCount(), 4);
|
||||
|
||||
QCOMPARE(reader.size(), QSize(32, 32));
|
||||
|
||||
QCOMPARE(reader.text(QStringLiteral("Title")), QStringLiteral("ANI Test"));
|
||||
QCOMPARE(reader.text(QStringLiteral("Author")), QStringLiteral("KDE Community"));
|
||||
}
|
||||
|
||||
void textRead()
|
||||
{
|
||||
QImageReader reader(QFINDTESTDATA("ani/test.ani"));
|
||||
QVERIFY(reader.canRead());
|
||||
QCOMPARE(reader.currentImageNumber(), 0);
|
||||
|
||||
QImage aniFrame;
|
||||
QVERIFY(reader.read(&aniFrame));
|
||||
|
||||
QImage img1(QFINDTESTDATA("ani/test_1.png"));
|
||||
img1.convertTo(aniFrame.format());
|
||||
|
||||
QVERIFY(imgEquals(aniFrame, img1));
|
||||
|
||||
QCOMPARE(reader.nextImageDelay(), 166); // 10 "jiffies"
|
||||
|
||||
QVERIFY(reader.canRead());
|
||||
// that read() above should have advanced us to the next frame
|
||||
QCOMPARE(reader.currentImageNumber(), 1);
|
||||
|
||||
QVERIFY(reader.read(&aniFrame));
|
||||
QImage img2(QFINDTESTDATA("ani/test_2.png"));
|
||||
img2.convertTo(aniFrame.format());
|
||||
|
||||
QVERIFY(imgEquals(aniFrame, img2));
|
||||
|
||||
// The "middle" frame has a longer delay than the others
|
||||
QCOMPARE(reader.nextImageDelay(), 333); // 20 "jiffies"
|
||||
|
||||
QVERIFY(reader.canRead());
|
||||
QCOMPARE(reader.currentImageNumber(), 2);
|
||||
|
||||
QVERIFY(reader.read(&aniFrame));
|
||||
QImage img3(QFINDTESTDATA("ani/test_3.png"));
|
||||
img3.convertTo(aniFrame.format());
|
||||
|
||||
QVERIFY(imgEquals(aniFrame, img3));
|
||||
|
||||
QCOMPARE(reader.nextImageDelay(), 166);
|
||||
|
||||
QVERIFY(reader.canRead());
|
||||
QCOMPARE(reader.currentImageNumber(), 3);
|
||||
|
||||
QVERIFY(reader.read(&aniFrame));
|
||||
// custom sequence in the ANI file should get us back to img2
|
||||
QVERIFY(imgEquals(aniFrame, img2));
|
||||
|
||||
QCOMPARE(reader.nextImageDelay(), 166);
|
||||
|
||||
// We should have reached the end now
|
||||
QVERIFY(!reader.canRead());
|
||||
QVERIFY(!reader.read(&aniFrame));
|
||||
|
||||
// Jump back to the start
|
||||
QVERIFY(reader.jumpToImage(0));
|
||||
|
||||
QVERIFY(reader.canRead());
|
||||
QCOMPARE(reader.currentImageNumber(), 0);
|
||||
|
||||
QCOMPARE(reader.nextImageDelay(), 166);
|
||||
|
||||
QVERIFY(reader.read(&aniFrame));
|
||||
QVERIFY(imgEquals(aniFrame, img1));
|
||||
}
|
||||
};
|
||||
|
||||
QTEST_MAIN(AniTests)
|
||||
|
||||
#include "anitest.moc"
|
||||
37
Telegram/ThirdParty/kimageformats/autotests/fuzzyeq.cpp
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
/*
|
||||
SPDX-FileCopyrightText: 2014 Alex Merry <alex.merry@kdemail.net>
|
||||
|
||||
SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
|
||||
*/
|
||||
|
||||
template<class Trait>
|
||||
static bool fuzzyeq(const QImage &im1, const QImage &im2, uchar fuzziness)
|
||||
{
|
||||
Q_ASSERT(im1.format() == im2.format());
|
||||
Q_ASSERT(im1.depth() == 24 || im1.depth() == 32 || im1.depth() == 64);
|
||||
|
||||
const int height = im1.height();
|
||||
const int width = im1.width();
|
||||
for (int i = 0; i < height; ++i) {
|
||||
const Trait *line1 = reinterpret_cast<const Trait *>(im1.scanLine(i));
|
||||
const Trait *line2 = reinterpret_cast<const Trait *>(im2.scanLine(i));
|
||||
for (int j = 0; j < width; ++j) {
|
||||
if (line1[j] > line2[j]) {
|
||||
if (line1[j] - line2[j] > fuzziness) {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
if (line2[j] - line1[j] > fuzziness) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// allow each byte to be different by up to 1, to allow for rounding errors
|
||||
static bool fuzzyeq(const QImage &im1, const QImage &im2, uchar fuzziness)
|
||||
{
|
||||
return (im1.depth() == 64) ? fuzzyeq<quint16>(im1, im2, fuzziness) : fuzzyeq<quint8>(im1, im2, fuzziness);
|
||||
}
|
||||
BIN
Telegram/ThirdParty/kimageformats/autotests/long-runs.pic
vendored
Normal file
BIN
Telegram/ThirdParty/kimageformats/autotests/pic/4x4-alpha-uncompressed.pic
vendored
Normal file
BIN
Telegram/ThirdParty/kimageformats/autotests/pic/4x4-alpha.pic
vendored
Normal file
BIN
Telegram/ThirdParty/kimageformats/autotests/pic/4x4-alpha.png
vendored
Normal file
|
After Width: | Height: | Size: 98 B |
BIN
Telegram/ThirdParty/kimageformats/autotests/pic/4x4-simple-color-uncompressed.pic
vendored
Normal file
BIN
Telegram/ThirdParty/kimageformats/autotests/pic/4x4-simple-color.pic
vendored
Normal file
BIN
Telegram/ThirdParty/kimageformats/autotests/pic/4x4-simple-color.png
vendored
Normal file
|
After Width: | Height: | Size: 90 B |
BIN
Telegram/ThirdParty/kimageformats/autotests/pic/long-comment.pic
vendored
Normal file
BIN
Telegram/ThirdParty/kimageformats/autotests/pic/long-runs.pic
vendored
Normal file
BIN
Telegram/ThirdParty/kimageformats/autotests/pic/long-runs.png
vendored
Normal file
|
After Width: | Height: | Size: 117 B |
BIN
Telegram/ThirdParty/kimageformats/autotests/pic/short-comment.pic
vendored
Normal file
208
Telegram/ThirdParty/kimageformats/autotests/pictest.cpp
vendored
Normal file
@@ -0,0 +1,208 @@
|
||||
/*
|
||||
SPDX-FileCopyrightText: 2014 Alex Merry <alex.merry@kdemail.net>
|
||||
|
||||
SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include <QBuffer>
|
||||
#include <QFile>
|
||||
#include <QFileInfo>
|
||||
#include <QImage>
|
||||
#include <QImageReader>
|
||||
#include <QImageWriter>
|
||||
#include <QTest>
|
||||
#include <QUuid>
|
||||
|
||||
Q_DECLARE_METATYPE(QImage::Format)
|
||||
|
||||
class PicTests : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
private:
|
||||
void common_data()
|
||||
{
|
||||
QTest::addColumn<QString>("picfile");
|
||||
QTest::addColumn<QString>("pngfile");
|
||||
QTest::addColumn<QString>("comment");
|
||||
// whether the pic file has/should have an alpha channel
|
||||
QTest::addColumn<bool>("alpha");
|
||||
// the format to convert the png file to before writing
|
||||
// or comparing to the read image; this can be used to
|
||||
// induce loss of data (eg: make the image monochrome)
|
||||
QTest::addColumn<QImage::Format>("pngformat");
|
||||
QTest::addColumn<bool>("compress");
|
||||
|
||||
QTest::newRow("4x4 no alpha RLE") << QFINDTESTDATA("pic/4x4-simple-color.pic") << QFINDTESTDATA("pic/4x4-simple-color.png") << QString() << false
|
||||
<< QImage::Format_RGB32 << true;
|
||||
|
||||
QTest::newRow("4x4 no alpha raw") << QFINDTESTDATA("pic/4x4-simple-color-uncompressed.pic") << QFINDTESTDATA("pic/4x4-simple-color.png") << QString()
|
||||
<< false << QImage::Format_RGB32 << false;
|
||||
|
||||
QTest::newRow("Short comment") << QFINDTESTDATA("pic/short-comment.pic") << QFINDTESTDATA("pic/4x4-simple-color.png")
|
||||
<< QStringLiteral("Test comment value") << false << QImage::Format_RGB32 << true;
|
||||
|
||||
QTest::newRow("Long comment") << QFINDTESTDATA("pic/long-comment.pic") << QFINDTESTDATA("pic/4x4-simple-color.png")
|
||||
<< QStringLiteral("Test comment value that goes right up to the end of the comment field and has no") << false
|
||||
<< QImage::Format_RGB32 << true;
|
||||
|
||||
QTest::newRow("Long run-lengths") << QFINDTESTDATA("pic/long-runs.pic") << QFINDTESTDATA("pic/long-runs.png") << QString() << false
|
||||
<< QImage::Format_RGB32 << true;
|
||||
|
||||
QTest::newRow("4x4 with alpha RLE") << QFINDTESTDATA("pic/4x4-alpha.pic") << QFINDTESTDATA("pic/4x4-alpha.png") << QString() << true
|
||||
<< QImage::Format_ARGB32 << true;
|
||||
|
||||
QTest::newRow("4x4 with alpha raw") << QFINDTESTDATA("pic/4x4-alpha-uncompressed.pic") << QFINDTESTDATA("pic/4x4-alpha.png") << QString() << true
|
||||
<< QImage::Format_ARGB32 << false;
|
||||
}
|
||||
|
||||
private Q_SLOTS:
|
||||
void initTestCase()
|
||||
{
|
||||
QCoreApplication::addLibraryPath(QStringLiteral(PLUGIN_DIR));
|
||||
}
|
||||
|
||||
void testWrite_data()
|
||||
{
|
||||
common_data();
|
||||
|
||||
// NB: 4x4-simple-color only uses solid red, blue, green and white,
|
||||
// so there is no actual data loss in converting to RGB16.
|
||||
// This just tests that the pic plugin can deal with different
|
||||
// input formats.
|
||||
QTest::newRow("altered format") << QFINDTESTDATA("pic/4x4-simple-color.pic") << QFINDTESTDATA("pic/4x4-simple-color.png") << QString() << false
|
||||
<< QImage::Format_RGB16 << true;
|
||||
}
|
||||
|
||||
void testRead_data()
|
||||
{
|
||||
common_data();
|
||||
|
||||
// TODO: test reading files with unusual channel setups
|
||||
// (eg: one channel for each component)
|
||||
}
|
||||
|
||||
void testWrite()
|
||||
{
|
||||
QFETCH(QString, picfile);
|
||||
QFETCH(QString, pngfile);
|
||||
QFETCH(QString, comment);
|
||||
QFETCH(QImage::Format, pngformat);
|
||||
QFETCH(bool, compress);
|
||||
|
||||
QImageReader pngReader(pngfile, "png");
|
||||
QImage pngImage;
|
||||
QVERIFY2(pngReader.read(&pngImage), qPrintable(pngReader.errorString()));
|
||||
pngImage = pngImage.convertToFormat(pngformat);
|
||||
|
||||
QFile expFile(picfile);
|
||||
QVERIFY2(expFile.open(QIODevice::ReadOnly), qPrintable(expFile.errorString()));
|
||||
QByteArray expData = expFile.readAll();
|
||||
|
||||
QByteArray picData;
|
||||
QBuffer buffer(&picData);
|
||||
QImageWriter imgWriter(&buffer, "pic");
|
||||
imgWriter.setText(QStringLiteral("Description"), comment);
|
||||
imgWriter.setCompression(compress);
|
||||
imgWriter.write(pngImage);
|
||||
|
||||
if (expData != picData) {
|
||||
QString fileNameBase = QUuid::createUuid().toString().remove(QLatin1Char('{')).remove(QLatin1Char('}'));
|
||||
QFile dumpFile(fileNameBase + QStringLiteral(".pic"));
|
||||
QVERIFY2(dumpFile.open(QIODevice::WriteOnly), qPrintable(dumpFile.errorString()));
|
||||
dumpFile.write(picData);
|
||||
QString msg =
|
||||
QStringLiteral("Written data (") + dumpFile.fileName() + QStringLiteral(") differed from expected data (") + picfile + QLatin1Char(')');
|
||||
QFAIL(qPrintable(msg));
|
||||
}
|
||||
}
|
||||
|
||||
void testRead()
|
||||
{
|
||||
QFETCH(QString, picfile);
|
||||
QFETCH(QString, pngfile);
|
||||
QFETCH(bool, alpha);
|
||||
QFETCH(QImage::Format, pngformat);
|
||||
|
||||
QImageReader inputReader(picfile, "pic");
|
||||
QImageReader expReader(pngfile, "png");
|
||||
|
||||
QImage inputImage;
|
||||
QImage expImage;
|
||||
|
||||
QVERIFY2(expReader.read(&expImage), qPrintable(expReader.errorString()));
|
||||
QVERIFY2(inputReader.read(&inputImage), qPrintable(inputReader.errorString()));
|
||||
|
||||
QCOMPARE(inputImage.width(), expImage.width());
|
||||
QCOMPARE(inputImage.height(), expImage.height());
|
||||
QCOMPARE(inputImage.hasAlphaChannel(), alpha);
|
||||
QCOMPARE(inputImage.format(), alpha ? QImage::Format_ARGB32 : QImage::Format_RGB32);
|
||||
|
||||
expImage = expImage.convertToFormat(pngformat);
|
||||
expImage = expImage.convertToFormat(alpha ? QImage::Format_ARGB32 : QImage::Format_RGB32);
|
||||
if (inputImage != expImage) {
|
||||
QString fileNameBase = QUuid::createUuid().toString().remove(QLatin1Char('{')).remove(QLatin1Char('}'));
|
||||
QFile picDumpFile(fileNameBase + QStringLiteral("-expected.data"));
|
||||
QVERIFY2(picDumpFile.open(QIODevice::WriteOnly), qPrintable(picDumpFile.errorString()));
|
||||
picDumpFile.write(reinterpret_cast<const char *>(inputImage.bits()), inputImage.sizeInBytes());
|
||||
QFile pngDumpFile(fileNameBase + QStringLiteral("-actual.data"));
|
||||
QVERIFY2(pngDumpFile.open(QIODevice::WriteOnly), qPrintable(pngDumpFile.errorString()));
|
||||
pngDumpFile.write(reinterpret_cast<const char *>(expImage.bits()), expImage.sizeInBytes());
|
||||
QString msg = QStringLiteral("Read image (") + picDumpFile.fileName() + QStringLiteral(") differed from expected image (") + pngDumpFile.fileName()
|
||||
+ QLatin1Char(')');
|
||||
QFAIL(qPrintable(msg));
|
||||
}
|
||||
}
|
||||
|
||||
void testPreReadComment_data()
|
||||
{
|
||||
testRead_data();
|
||||
}
|
||||
|
||||
void testPreReadComment()
|
||||
{
|
||||
QFETCH(QString, picfile);
|
||||
QFETCH(QString, comment);
|
||||
|
||||
QImageReader inputReader(picfile, "pic");
|
||||
|
||||
QCOMPARE(inputReader.text(QStringLiteral("Description")), comment);
|
||||
}
|
||||
|
||||
void testPreReadSize_data()
|
||||
{
|
||||
testRead_data();
|
||||
}
|
||||
|
||||
void testPreReadSize()
|
||||
{
|
||||
QFETCH(QString, picfile);
|
||||
QFETCH(QString, pngfile);
|
||||
|
||||
QImageReader inputReader(picfile, "pic");
|
||||
QImageReader expReader(pngfile, "png");
|
||||
|
||||
QCOMPARE(inputReader.size(), expReader.size());
|
||||
}
|
||||
|
||||
void testPreReadImageFormat_data()
|
||||
{
|
||||
testRead_data();
|
||||
}
|
||||
|
||||
void testPreReadImageFormat()
|
||||
{
|
||||
QFETCH(QString, picfile);
|
||||
QFETCH(bool, alpha);
|
||||
|
||||
QImageReader inputReader(picfile, "pic");
|
||||
|
||||
QCOMPARE(inputReader.imageFormat(), alpha ? QImage::Format_ARGB32 : QImage::Format_RGB32);
|
||||
}
|
||||
};
|
||||
|
||||
QTEST_MAIN(PicTests)
|
||||
|
||||
#include "pictest.moc"
|
||||
BIN
Telegram/ThirdParty/kimageformats/autotests/read/avif/bw.avif
vendored
Normal file
|
After Width: | Height: | Size: 629 B |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/avif/bw.png
vendored
Normal file
|
After Width: | Height: | Size: 743 B |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/avif/bwa.avif
vendored
Normal file
|
After Width: | Height: | Size: 823 B |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/avif/bwa.png
vendored
Normal file
|
After Width: | Height: | Size: 574 B |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/avif/rgb.avif
vendored
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/avif/rgb.png
vendored
Normal file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/avif/rgba.avif
vendored
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/avif/rgba.png
vendored
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/avif/rotated090.avif
vendored
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/avif/rotated090.png
vendored
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/avif/rotated090_left-to-right.avif
vendored
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/avif/rotated090_left-to-right.png
vendored
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/avif/rotated090_top-to-bottom.avif
vendored
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/avif/rotated090_top-to-bottom.png
vendored
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/avif/rotated180.avif
vendored
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/avif/rotated180.png
vendored
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/avif/rotated180_left-to-right.avif
vendored
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/avif/rotated180_left-to-right.png
vendored
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/avif/rotated180_top-to-bottom.avif
vendored
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/avif/rotated180_top-to-bottom.png
vendored
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/avif/rotated270.avif
vendored
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/avif/rotated270.png
vendored
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/avif/rotated270_left-to-right.avif
vendored
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/avif/rotated270_left-to-right.png
vendored
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/avif/rotated270_top-to-bottom.avif
vendored
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/avif/rotated270_top-to-bottom.png
vendored
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/avif/unrotated.avif
vendored
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/avif/unrotated.png
vendored
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/avif/unrotated_left-to-right.avif
vendored
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/avif/unrotated_left-to-right.png
vendored
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/avif/unrotated_top-to-bottom.avif
vendored
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/avif/unrotated_top-to-bottom.png
vendored
Normal file
|
After Width: | Height: | Size: 17 KiB |
502
Telegram/ThirdParty/kimageformats/autotests/read/eps/bw.eps
vendored
Normal file
@@ -0,0 +1,502 @@
|
||||
%!PS-Adobe-3.0 EPSF-3.0
|
||||
%Produced by poppler pdftops version: 0.24.5 (http://poppler.freedesktop.org)
|
||||
%%Creator: KDE EPS image plugin
|
||||
%%LanguageLevel: 2
|
||||
%%DocumentSuppliedResources: (atend)
|
||||
%%BoundingBox: 0 0 32 32
|
||||
%%HiResBoundingBox: 0 0 32 32
|
||||
%%DocumentSuppliedResources: (atend)
|
||||
%%EndComments
|
||||
%%BeginProlog
|
||||
%%BeginResource: procset xpdf 3.00 0
|
||||
%%Copyright: Copyright 1996-2011 Glyph & Cog, LLC
|
||||
/xpdf 75 dict def xpdf begin
|
||||
% PDF special state
|
||||
/pdfDictSize 15 def
|
||||
/pdfSetup {
|
||||
/setpagedevice where {
|
||||
pop 2 dict begin
|
||||
/Policies 1 dict dup begin /PageSize 6 def end def
|
||||
{ /Duplex true def } if
|
||||
currentdict end setpagedevice
|
||||
} {
|
||||
pop
|
||||
} ifelse
|
||||
} def
|
||||
/pdfSetupPaper {
|
||||
2 array astore
|
||||
/setpagedevice where {
|
||||
pop 2 dict begin
|
||||
/PageSize exch def
|
||||
/ImagingBBox null def
|
||||
currentdict end setpagedevice
|
||||
} {
|
||||
pop
|
||||
} ifelse
|
||||
} def
|
||||
/pdfStartPage {
|
||||
pdfDictSize dict begin
|
||||
/pdfFillCS [] def
|
||||
/pdfFillXform {} def
|
||||
/pdfStrokeCS [] def
|
||||
/pdfStrokeXform {} def
|
||||
/pdfFill [0] def
|
||||
/pdfStroke [0] def
|
||||
/pdfFillOP false def
|
||||
/pdfStrokeOP false def
|
||||
/pdfLastFill false def
|
||||
/pdfLastStroke false def
|
||||
/pdfTextMat [1 0 0 1 0 0] def
|
||||
/pdfFontSize 0 def
|
||||
/pdfCharSpacing 0 def
|
||||
/pdfTextRender 0 def
|
||||
/pdfPatternCS false def
|
||||
/pdfTextRise 0 def
|
||||
/pdfWordSpacing 0 def
|
||||
/pdfHorizScaling 1 def
|
||||
/pdfTextClipPath [] def
|
||||
} def
|
||||
/pdfEndPage { end } def
|
||||
% PDF color state
|
||||
/cs { /pdfFillXform exch def dup /pdfFillCS exch def
|
||||
setcolorspace } def
|
||||
/CS { /pdfStrokeXform exch def dup /pdfStrokeCS exch def
|
||||
setcolorspace } def
|
||||
/sc { pdfLastFill not { pdfFillCS setcolorspace } if
|
||||
dup /pdfFill exch def aload pop pdfFillXform setcolor
|
||||
/pdfLastFill true def /pdfLastStroke false def } def
|
||||
/SC { pdfLastStroke not { pdfStrokeCS setcolorspace } if
|
||||
dup /pdfStroke exch def aload pop pdfStrokeXform setcolor
|
||||
/pdfLastStroke true def /pdfLastFill false def } def
|
||||
/op { /pdfFillOP exch def
|
||||
pdfLastFill { pdfFillOP setoverprint } if } def
|
||||
/OP { /pdfStrokeOP exch def
|
||||
pdfLastStroke { pdfStrokeOP setoverprint } if } def
|
||||
/fCol {
|
||||
pdfLastFill not {
|
||||
pdfFillCS setcolorspace
|
||||
pdfFill aload pop pdfFillXform setcolor
|
||||
pdfFillOP setoverprint
|
||||
/pdfLastFill true def /pdfLastStroke false def
|
||||
} if
|
||||
} def
|
||||
/sCol {
|
||||
pdfLastStroke not {
|
||||
pdfStrokeCS setcolorspace
|
||||
pdfStroke aload pop pdfStrokeXform setcolor
|
||||
pdfStrokeOP setoverprint
|
||||
/pdfLastStroke true def /pdfLastFill false def
|
||||
} if
|
||||
} def
|
||||
% build a font
|
||||
/pdfMakeFont {
|
||||
4 3 roll findfont
|
||||
4 2 roll matrix scale makefont
|
||||
dup length dict begin
|
||||
{ 1 index /FID ne { def } { pop pop } ifelse } forall
|
||||
/Encoding exch def
|
||||
currentdict
|
||||
end
|
||||
definefont pop
|
||||
} def
|
||||
/pdfMakeFont16 {
|
||||
exch findfont
|
||||
dup length dict begin
|
||||
{ 1 index /FID ne { def } { pop pop } ifelse } forall
|
||||
/WMode exch def
|
||||
currentdict
|
||||
end
|
||||
definefont pop
|
||||
} def
|
||||
% graphics state operators
|
||||
/q { gsave pdfDictSize dict begin } def
|
||||
/Q {
|
||||
end grestore
|
||||
/pdfLastFill where {
|
||||
pop
|
||||
pdfLastFill {
|
||||
pdfFillOP setoverprint
|
||||
} {
|
||||
pdfStrokeOP setoverprint
|
||||
} ifelse
|
||||
} if
|
||||
} def
|
||||
/cm { concat } def
|
||||
/d { setdash } def
|
||||
/i { setflat } def
|
||||
/j { setlinejoin } def
|
||||
/J { setlinecap } def
|
||||
/M { setmiterlimit } def
|
||||
/w { setlinewidth } def
|
||||
% path segment operators
|
||||
/m { moveto } def
|
||||
/l { lineto } def
|
||||
/c { curveto } def
|
||||
/re { 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
|
||||
neg 0 rlineto closepath } def
|
||||
/h { closepath } def
|
||||
% path painting operators
|
||||
/S { sCol stroke } def
|
||||
/Sf { fCol stroke } def
|
||||
/f { fCol fill } def
|
||||
/f* { fCol eofill } def
|
||||
% clipping operators
|
||||
/W { clip newpath } def
|
||||
/W* { eoclip newpath } def
|
||||
/Ws { strokepath clip newpath } def
|
||||
% text state operators
|
||||
/Tc { /pdfCharSpacing exch def } def
|
||||
/Tf { dup /pdfFontSize exch def
|
||||
dup pdfHorizScaling mul exch matrix scale
|
||||
pdfTextMat matrix concatmatrix dup 4 0 put dup 5 0 put
|
||||
exch findfont exch makefont setfont } def
|
||||
/Tr { /pdfTextRender exch def } def
|
||||
/Tp { /pdfPatternCS exch def } def
|
||||
/Ts { /pdfTextRise exch def } def
|
||||
/Tw { /pdfWordSpacing exch def } def
|
||||
/Tz { /pdfHorizScaling exch def } def
|
||||
% text positioning operators
|
||||
/Td { pdfTextMat transform moveto } def
|
||||
/Tm { /pdfTextMat exch def } def
|
||||
% text string operators
|
||||
/xyshow where {
|
||||
pop
|
||||
/xyshow2 {
|
||||
dup length array
|
||||
0 2 2 index length 1 sub {
|
||||
2 index 1 index 2 copy get 3 1 roll 1 add get
|
||||
pdfTextMat dtransform
|
||||
4 2 roll 2 copy 6 5 roll put 1 add 3 1 roll dup 4 2 roll put
|
||||
} for
|
||||
exch pop
|
||||
xyshow
|
||||
} def
|
||||
}{
|
||||
/xyshow2 {
|
||||
currentfont /FontType get 0 eq {
|
||||
0 2 3 index length 1 sub {
|
||||
currentpoint 4 index 3 index 2 getinterval show moveto
|
||||
2 copy get 2 index 3 2 roll 1 add get
|
||||
pdfTextMat dtransform rmoveto
|
||||
} for
|
||||
} {
|
||||
0 1 3 index length 1 sub {
|
||||
currentpoint 4 index 3 index 1 getinterval show moveto
|
||||
2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get
|
||||
pdfTextMat dtransform rmoveto
|
||||
} for
|
||||
} ifelse
|
||||
pop pop
|
||||
} def
|
||||
} ifelse
|
||||
/cshow where {
|
||||
pop
|
||||
/xycp {
|
||||
0 3 2 roll
|
||||
{
|
||||
pop pop currentpoint 3 2 roll
|
||||
1 string dup 0 4 3 roll put false charpath moveto
|
||||
2 copy get 2 index 2 index 1 add get
|
||||
pdfTextMat dtransform rmoveto
|
||||
2 add
|
||||
} exch cshow
|
||||
pop pop
|
||||
} def
|
||||
}{
|
||||
/xycp {
|
||||
currentfont /FontType get 0 eq {
|
||||
0 2 3 index length 1 sub {
|
||||
currentpoint 4 index 3 index 2 getinterval false charpath moveto
|
||||
2 copy get 2 index 3 2 roll 1 add get
|
||||
pdfTextMat dtransform rmoveto
|
||||
} for
|
||||
} {
|
||||
0 1 3 index length 1 sub {
|
||||
currentpoint 4 index 3 index 1 getinterval false charpath moveto
|
||||
2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get
|
||||
pdfTextMat dtransform rmoveto
|
||||
} for
|
||||
} ifelse
|
||||
pop pop
|
||||
} def
|
||||
} ifelse
|
||||
/Tj {
|
||||
fCol
|
||||
0 pdfTextRise pdfTextMat dtransform rmoveto
|
||||
currentpoint 4 2 roll
|
||||
pdfTextRender 1 and 0 eq {
|
||||
2 copy xyshow2
|
||||
} if
|
||||
pdfTextRender 3 and dup 1 eq exch 2 eq or {
|
||||
3 index 3 index moveto
|
||||
2 copy
|
||||
currentfont /FontType get 3 eq { fCol } { sCol } ifelse
|
||||
xycp currentpoint stroke moveto
|
||||
} if
|
||||
pdfTextRender 4 and 0 ne {
|
||||
4 2 roll moveto xycp
|
||||
/pdfTextClipPath [ pdfTextClipPath aload pop
|
||||
{/moveto cvx}
|
||||
{/lineto cvx}
|
||||
{/curveto cvx}
|
||||
{/closepath cvx}
|
||||
pathforall ] def
|
||||
currentpoint newpath moveto
|
||||
} {
|
||||
pop pop pop pop
|
||||
} ifelse
|
||||
0 pdfTextRise neg pdfTextMat dtransform rmoveto
|
||||
} def
|
||||
/TJm { 0.001 mul pdfFontSize mul pdfHorizScaling mul neg 0
|
||||
pdfTextMat dtransform rmoveto } def
|
||||
/TJmV { 0.001 mul pdfFontSize mul neg 0 exch
|
||||
pdfTextMat dtransform rmoveto } def
|
||||
/Tclip { pdfTextClipPath cvx exec clip newpath
|
||||
/pdfTextClipPath [] def } def
|
||||
/Tclip* { pdfTextClipPath cvx exec eoclip newpath
|
||||
/pdfTextClipPath [] def } def
|
||||
% Level 2/3 image operators
|
||||
/pdfImBuf 100 string def
|
||||
/pdfImStr {
|
||||
2 copy exch length lt {
|
||||
2 copy get exch 1 add exch
|
||||
} {
|
||||
()
|
||||
} ifelse
|
||||
} def
|
||||
/skipEOD {
|
||||
{ currentfile pdfImBuf readline
|
||||
not { pop exit } if
|
||||
(%-EOD-) eq { exit } if } loop
|
||||
} def
|
||||
/pdfIm { image skipEOD } def
|
||||
/pdfImM { fCol imagemask skipEOD } def
|
||||
/pr { 2 index 2 index 3 2 roll putinterval 4 add } def
|
||||
/pdfImClip {
|
||||
gsave
|
||||
0 2 4 index length 1 sub {
|
||||
dup 4 index exch 2 copy
|
||||
get 5 index div put
|
||||
1 add 3 index exch 2 copy
|
||||
get 3 index div put
|
||||
} for
|
||||
pop pop rectclip
|
||||
} def
|
||||
/pdfImClipEnd { grestore } def
|
||||
% shading operators
|
||||
/colordelta {
|
||||
false 0 1 3 index length 1 sub {
|
||||
dup 4 index exch get 3 index 3 2 roll get sub abs 0.004 gt {
|
||||
pop true
|
||||
} if
|
||||
} for
|
||||
exch pop exch pop
|
||||
} def
|
||||
/funcCol { func n array astore } def
|
||||
/funcSH {
|
||||
dup 0 eq {
|
||||
true
|
||||
} {
|
||||
dup 6 eq {
|
||||
false
|
||||
} {
|
||||
4 index 4 index funcCol dup
|
||||
6 index 4 index funcCol dup
|
||||
3 1 roll colordelta 3 1 roll
|
||||
5 index 5 index funcCol dup
|
||||
3 1 roll colordelta 3 1 roll
|
||||
6 index 8 index funcCol dup
|
||||
3 1 roll colordelta 3 1 roll
|
||||
colordelta or or or
|
||||
} ifelse
|
||||
} ifelse
|
||||
{
|
||||
1 add
|
||||
4 index 3 index add 0.5 mul exch 4 index 3 index add 0.5 mul exch
|
||||
6 index 6 index 4 index 4 index 4 index funcSH
|
||||
2 index 6 index 6 index 4 index 4 index funcSH
|
||||
6 index 2 index 4 index 6 index 4 index funcSH
|
||||
5 3 roll 3 2 roll funcSH pop pop
|
||||
} {
|
||||
pop 3 index 2 index add 0.5 mul 3 index 2 index add 0.5 mul
|
||||
funcCol sc
|
||||
dup 4 index exch mat transform m
|
||||
3 index 3 index mat transform l
|
||||
1 index 3 index mat transform l
|
||||
mat transform l pop pop h f*
|
||||
} ifelse
|
||||
} def
|
||||
/axialCol {
|
||||
dup 0 lt {
|
||||
pop t0
|
||||
} {
|
||||
dup 1 gt {
|
||||
pop t1
|
||||
} {
|
||||
dt mul t0 add
|
||||
} ifelse
|
||||
} ifelse
|
||||
func n array astore
|
||||
} def
|
||||
/axialSH {
|
||||
dup 0 eq {
|
||||
true
|
||||
} {
|
||||
dup 8 eq {
|
||||
false
|
||||
} {
|
||||
2 index axialCol 2 index axialCol colordelta
|
||||
} ifelse
|
||||
} ifelse
|
||||
{
|
||||
1 add 3 1 roll 2 copy add 0.5 mul
|
||||
dup 4 3 roll exch 4 index axialSH
|
||||
exch 3 2 roll axialSH
|
||||
} {
|
||||
pop 2 copy add 0.5 mul
|
||||
axialCol sc
|
||||
exch dup dx mul x0 add exch dy mul y0 add
|
||||
3 2 roll dup dx mul x0 add exch dy mul y0 add
|
||||
dx abs dy abs ge {
|
||||
2 copy yMin sub dy mul dx div add yMin m
|
||||
yMax sub dy mul dx div add yMax l
|
||||
2 copy yMax sub dy mul dx div add yMax l
|
||||
yMin sub dy mul dx div add yMin l
|
||||
h f*
|
||||
} {
|
||||
exch 2 copy xMin sub dx mul dy div add xMin exch m
|
||||
xMax sub dx mul dy div add xMax exch l
|
||||
exch 2 copy xMax sub dx mul dy div add xMax exch l
|
||||
xMin sub dx mul dy div add xMin exch l
|
||||
h f*
|
||||
} ifelse
|
||||
} ifelse
|
||||
} def
|
||||
/radialCol {
|
||||
dup t0 lt {
|
||||
pop t0
|
||||
} {
|
||||
dup t1 gt {
|
||||
pop t1
|
||||
} if
|
||||
} ifelse
|
||||
func n array astore
|
||||
} def
|
||||
/radialSH {
|
||||
dup 0 eq {
|
||||
true
|
||||
} {
|
||||
dup 8 eq {
|
||||
false
|
||||
} {
|
||||
2 index dt mul t0 add radialCol
|
||||
2 index dt mul t0 add radialCol colordelta
|
||||
} ifelse
|
||||
} ifelse
|
||||
{
|
||||
1 add 3 1 roll 2 copy add 0.5 mul
|
||||
dup 4 3 roll exch 4 index radialSH
|
||||
exch 3 2 roll radialSH
|
||||
} {
|
||||
pop 2 copy add 0.5 mul dt mul t0 add
|
||||
radialCol sc
|
||||
encl {
|
||||
exch dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
|
||||
0 360 arc h
|
||||
dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
|
||||
360 0 arcn h f
|
||||
} {
|
||||
2 copy
|
||||
dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
|
||||
a1 a2 arcn
|
||||
dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
|
||||
a2 a1 arcn h
|
||||
dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
|
||||
a1 a2 arc
|
||||
dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
|
||||
a2 a1 arc h f
|
||||
} ifelse
|
||||
} ifelse
|
||||
} def
|
||||
end
|
||||
%%EndResource
|
||||
%%EndProlog
|
||||
%%BeginSetup
|
||||
xpdf begin
|
||||
%%EndSetup
|
||||
pdfStartPage
|
||||
[] 0 d
|
||||
1 i
|
||||
0 j
|
||||
0 J
|
||||
10 M
|
||||
1 w
|
||||
/DeviceGray {} cs
|
||||
[0] sc
|
||||
/DeviceGray {} CS
|
||||
[0] SC
|
||||
false op
|
||||
false OP
|
||||
{} settransfer
|
||||
0 0 32 32 re
|
||||
W
|
||||
q
|
||||
/DeviceRGB {} cs
|
||||
[0 0 0] sc
|
||||
/DeviceRGB {} CS
|
||||
[0 0 0] SC
|
||||
[1 0 0 -1 0 32] cm
|
||||
q
|
||||
q
|
||||
Q
|
||||
Q
|
||||
q
|
||||
q
|
||||
q
|
||||
[1 0 0 1 0 0] cm
|
||||
[32 0 0 -32 0 32] cm
|
||||
/DeviceRGB setcolorspace
|
||||
<<
|
||||
/ImageType 1
|
||||
/Width 32
|
||||
/Height 32
|
||||
/ImageMatrix [32 0 0 -32 0 32]
|
||||
/BitsPerComponent 8
|
||||
/Decode [0 1 0 1 0 1]
|
||||
/DataSource currentfile
|
||||
/ASCII85Decode filter
|
||||
<< >> /DCTDecode filter
|
||||
>>
|
||||
pdfIm
|
||||
s4IA0!"_al8O`[\!<E0k!([(is4[N@!!30%!W`<'!WiE)!WiE*"Tni/!s8`1"9Sf4
|
||||
"pYA<"pYA=#n%%F#RUhB#7:nI$4@7N$k*@I%M'!W%LW[R%0,&^6NI5i!WrN,"p4r3
|
||||
$j[(D$k*OQ$k*OQ$k*OQ$k*OQ$k*OQ$k*OQ$k*OQ$k*OQ$k*OQ$k*OQ$k*OQ$k*OQ
|
||||
$k30O!"fJ:+93Md!?qLF&HMtG!WU(<*rl9A"T\W)!<E3$z!!!!"!WrQ/"pYD?$4Hm
|
||||
P!4<@<!W`B*!X&T/"U"r.!!.KK!WrE*&Hrdj0gQ!W;.0\RE>10ZOeE%*6F"?A;UOt
|
||||
Z1LbBV#mqFa(`=5<-7:2j.Ps"@2`NfY6UX@47n?3D;cHat='/U/@q9._B4u!oF*)P
|
||||
JGBeCZK7nr5LPUeEP*;,qQC!u,R\HRQV5C/hWN*81['d?O\@K2f_o0O6a2lBFdaQ^
|
||||
rf%8R-g>V&OjQ5OekiqC&o(2MHp@n@XqZ"J6*ru?D!<E3%!<E3%!<<*"!!!!"!WrQ
|
||||
/"pYD?$4HmP!4<C=!W`?*"9Sc3"U"r.!<RHF!<N?8"9fr'"qj4!#@VTc+u4]T'LIq
|
||||
UZ,$_k1K*]W@WKj'(*k`q-1Mcg)&ahL-n-W'2E*TU3^Z;(7Rp!@8lJ\h<``C+>%;)
|
||||
SAnPdkC3+K>G'A1VH@gd&KnbA=M2II[Pa.Q$R$jD;USO``Vl6SpZEppG[^WcW]#)A
|
||||
'`Q#s>ai`&\eCE.%f\,!<j5f=akNM0qo(2MHp@n@XqZ#7L$j-M1!YGMH!'^J^BE%s
|
||||
`Q[ch>,l[jrG5O;H4@((,Nu7daD.`FnrL6**b\LH,D=SYd",m^?i=l4k#>Y&g9bUO
|
||||
>MtTa;Y#@t+:FeG9N]V>#1:nBP>^,H<Xa\&[!aI?'6uhG.,.T@e?5D#_rr@Yb0!Ms
|
||||
rN7qV%pM`e<#$Di["F`gj5:Si-rrBm_r]g2Pi93&5#Ca_N')YD#cKpI1VVR`"G%EX
|
||||
@*FZrXV0tH*!!N,t!.q]X8,]]A5(CE_ir9#3PN#*LMfE5YgM6Sih.[I+D+6(5b@cc
|
||||
G]RTni-.='e5N&$f,_@oPe/ga&,EF3"BFt:;l!LD5!,US+f+\4m`r=@l+`@\b!qEF
|
||||
lMI#lQ%eAR[36>9-p&$>GXA=[:$]!_#_qfCOpC4P?DSg0,)pr1_K`8=Zq8`L8#+t-
|
||||
(fDZ)=I=JaBepM&/?8)KLP/oBHd_ANBj^7d-n,*jV<rW/OB`?-fHo]aT7qpscJ%%(
|
||||
R-n[*E0dKT>q+1!H,_-(pWAX?K!.Y%%~>
|
||||
%-EOD-
|
||||
Q
|
||||
Q
|
||||
Q
|
||||
Q
|
||||
showpage
|
||||
%%PageTrailer
|
||||
pdfEndPage
|
||||
%%Trailer
|
||||
end
|
||||
%%DocumentSuppliedResources:
|
||||
%%EOF
|
||||
BIN
Telegram/ThirdParty/kimageformats/autotests/read/eps/bw.png
vendored
Normal file
|
After Width: | Height: | Size: 1.0 KiB |
134
Telegram/ThirdParty/kimageformats/autotests/read/eps/rgb-gimp-2.8.10.eps
vendored
Normal file
@@ -0,0 +1,134 @@
|
||||
%!PS-Adobe-3.0 EPSF-3.0
|
||||
%%Creator: GIMP PostScript file plugin V 1.17 by Peter Kirchgessner
|
||||
%%Title: rgb-gimp-2.8.10.eps
|
||||
%%CreationDate: Sun Feb 2 02:52:43 2014
|
||||
%%DocumentData: Clean7Bit
|
||||
%%LanguageLevel: 2
|
||||
%%Pages: 1
|
||||
%%BoundingBox: 14 14 47 47
|
||||
%%EndComments
|
||||
%%BeginProlog
|
||||
% Use own dictionary to avoid conflicts
|
||||
10 dict begin
|
||||
%%EndProlog
|
||||
%%Page: 1 1
|
||||
% Translate for offset
|
||||
14.173228346456694 14.173228346456694 translate
|
||||
% Translate to begin of first scanline
|
||||
0 32 translate
|
||||
32 -32 scale
|
||||
% Image geometry
|
||||
32 32 8
|
||||
% Transformation matrix
|
||||
[ 32 0 0 32 0 0 ]
|
||||
% Strings to hold RGB-samples per scanline
|
||||
/rstr 32 string def
|
||||
/gstr 32 string def
|
||||
/bstr 32 string def
|
||||
{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop}
|
||||
{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop}
|
||||
{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop}
|
||||
true 3
|
||||
%%BeginData: 2062 ASCII Bytes
|
||||
colorimage
|
||||
iW"E~>
|
||||
iW"E~>
|
||||
iW"E~>
|
||||
iW"E~>
|
||||
iW"E~>
|
||||
iW"E~>
|
||||
rr3l8qtTj[qY'@Go(;YFp\t!Umd0N=o(_nMr;Q_H~>
|
||||
rr3i7qYL3ks8Murs8DQZo^(l=rV?9dq>(!grVqB~>
|
||||
r;RQ3p?_#1q>0g\p$Lr7o'Pf>qXX=HmJ?e]J,~>
|
||||
s8O,=nBneOeC:XDIuUA;Vpk(NI>;j;^80&UU>,VGs*t~>
|
||||
s8O#:mE3iKrr2]^qto3FY/,OEk3:(>i7$6GnbW7bJ,~>
|
||||
rVm`6lE4o2NnVdeaJsl,X.4m!h9;V"Fb\WIrr7K~>
|
||||
s8O,:dtV1_a1#Lk*\DP`CmWLr:eDd]L5N6=1n+(:s*t~>
|
||||
s8O,9a`ji]s8DBPr:?UcD3._\p<BGMc*bj_hs^ODs*t~>
|
||||
rVm`2``!BaL!tg.P)5E?Jo4/5k)G";*GsX+rr7K~>
|
||||
s8O,:dtV(?^W)3l,qa=M0ic')HZVDbS;t:!3h5jBs*t~>
|
||||
s8O,9a`jcXrr2Q\rUZO=,XY[bjk[5SdDjJqi:$XEs*t~>
|
||||
rVm`2b&TI#Ia!RuR(;e8\XeMEkdHG>:6"Q8rr7K~>
|
||||
s8O,=nBnbIg$IS)PE2AfH[*g.m,5FVe(Eg,Y20$Us*t~>
|
||||
s8O#:mE3fIrr;omrVXuD-qC)gq"Nk)m-X34oD8IdJ,~>
|
||||
rVm`6m`W8Uc0*E]bh_dWnF>o5qX3(qb0feZrr7K~>
|
||||
rr3l7qY0[\rr)Zao'<Q'S)F8FrqZ9br;QQdr;Q_H~>
|
||||
rr3*!q>(!drsA"DC2M)hs8W&qrr)rurr)kI~>
|
||||
r;QcrrqZotrVH6_nF#iCrVm'#r;HNirr)kI~>
|
||||
o`#*]D]DU%r:L#>~>
|
||||
o`#*gdG)_'rUg,?~>
|
||||
o`#'lkK`2coDa=~>
|
||||
o`#*[H#7uerq-5@~>
|
||||
o`#'no'Z#CoDa=~>
|
||||
o`#*gZ>Z<!rq-5@~>
|
||||
o`#'d]WK!>oDa=~>
|
||||
o`#'i_0NiloDa=~>
|
||||
o`#*aTT+KQr:L#>~>
|
||||
o`#'gaMuR#oDa=~>
|
||||
o`#']HqJeMoDa=~>
|
||||
o`#*f[sXLurUg,?~>
|
||||
o`#'lmdBWBoDa=~>
|
||||
o`#*bTnJ`jrq-5@~>
|
||||
o`#*^Fs'K#qt0o=~>
|
||||
o`#*let9hLrq-5@~>
|
||||
o`#*dRnn@_rUg,?~>
|
||||
o`#*^O+_r,qt0o=~>
|
||||
o`#*e[A0PUr:L#>~>
|
||||
o`#*\D&P^Yqt0o=~>
|
||||
o`#*idD*iirq-5@~>
|
||||
o`#*lkNM+#rq-5@~>
|
||||
o`#*]KlLYGqt0o=~>
|
||||
o`#*fVI,eXrq-5@~>
|
||||
o`#'i_L98qoDa=~>
|
||||
o`#*e]s+j,rq-5@~>
|
||||
o`#']O+WDVoDa=~>
|
||||
o`#'^Mf+C>oDa=~>
|
||||
o`#'hd*U,5oDa=~>
|
||||
o`#'bW,J^-oDa=~>
|
||||
o`#'fb/qQooDa=~>
|
||||
o`#'iiRHrdoDa=~>
|
||||
p&>3phcL\*lLY%+~>
|
||||
o`#'g\8\hKoDa=~>
|
||||
p&>3pn>0Kmp%/36~>
|
||||
p&>3ne9R:Bm.:7-~>
|
||||
o`#*[A///#rq-5@~>
|
||||
o`#*YB.IWRrq-5@~>
|
||||
p&>3pn)*Top[eE8~>
|
||||
o`#*ZH<=7\q=O];~>
|
||||
o`#*[Is$k#r:L#>~>
|
||||
o`#*kdu]gJr:L#>~>
|
||||
o`#*cWIfZ,p@SB8~>
|
||||
o`#*^QC4Ghq=O];~>
|
||||
o`#*dPqb(co^r06~>
|
||||
o`#*j`eT>iq=O];~>
|
||||
o`#*f\#$+Gq"4T:~>
|
||||
o`#*cSRH!"oCW'5~>
|
||||
o`#*eS2)jio^r06~>
|
||||
o`#*nmIB`8rUg,?~>
|
||||
o`#*kcF::.qXjf<~>
|
||||
o`#*eWI&uko^r06~>
|
||||
o`#*op#Y<.rq-5@~>
|
||||
o`#*kcA.2#qXjf<~>
|
||||
o`#*keZlC0qXjf<~>
|
||||
o`#*nldaPOrUg,?~>
|
||||
o`#*eRkZXeo^r06~>
|
||||
o`#*i\R8gUq"4T:~>
|
||||
o`#*lfp\A_qt0o=~>
|
||||
o`#*eWdB)mo^r06~>
|
||||
o`#*fWB32@p%897~>
|
||||
o`#*hZU7*dp[nK9~>
|
||||
o`#*mk2YLar:L#>~>
|
||||
o`#*mh4:+mr:L#>~>
|
||||
o`#*mhO^=qr:L#>~>
|
||||
oD\pjq"XdYs*t~>
|
||||
oD\pjo^r(Qs*t~>
|
||||
oD\pjo^r(Qs*t~>
|
||||
iW"E~>
|
||||
iW"E~>
|
||||
iW"E~>
|
||||
iW"E~>
|
||||
%%EndData
|
||||
showpage
|
||||
%%Trailer
|
||||
end
|
||||
%%EOF
|
||||
BIN
Telegram/ThirdParty/kimageformats/autotests/read/eps/rgb-gimp-2.8.10.png
vendored
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
505
Telegram/ThirdParty/kimageformats/autotests/read/eps/rgb.eps
vendored
Normal file
@@ -0,0 +1,505 @@
|
||||
%!PS-Adobe-3.0 EPSF-3.0
|
||||
%Produced by poppler pdftops version: 0.24.5 (http://poppler.freedesktop.org)
|
||||
%%Creator: KDE EPS image plugin
|
||||
%%LanguageLevel: 2
|
||||
%%DocumentSuppliedResources: (atend)
|
||||
%%BoundingBox: 0 0 32 32
|
||||
%%HiResBoundingBox: 0 0 32 32
|
||||
%%DocumentSuppliedResources: (atend)
|
||||
%%EndComments
|
||||
%%BeginProlog
|
||||
%%BeginResource: procset xpdf 3.00 0
|
||||
%%Copyright: Copyright 1996-2011 Glyph & Cog, LLC
|
||||
/xpdf 75 dict def xpdf begin
|
||||
% PDF special state
|
||||
/pdfDictSize 15 def
|
||||
/pdfSetup {
|
||||
/setpagedevice where {
|
||||
pop 2 dict begin
|
||||
/Policies 1 dict dup begin /PageSize 6 def end def
|
||||
{ /Duplex true def } if
|
||||
currentdict end setpagedevice
|
||||
} {
|
||||
pop
|
||||
} ifelse
|
||||
} def
|
||||
/pdfSetupPaper {
|
||||
2 array astore
|
||||
/setpagedevice where {
|
||||
pop 2 dict begin
|
||||
/PageSize exch def
|
||||
/ImagingBBox null def
|
||||
currentdict end setpagedevice
|
||||
} {
|
||||
pop
|
||||
} ifelse
|
||||
} def
|
||||
/pdfStartPage {
|
||||
pdfDictSize dict begin
|
||||
/pdfFillCS [] def
|
||||
/pdfFillXform {} def
|
||||
/pdfStrokeCS [] def
|
||||
/pdfStrokeXform {} def
|
||||
/pdfFill [0] def
|
||||
/pdfStroke [0] def
|
||||
/pdfFillOP false def
|
||||
/pdfStrokeOP false def
|
||||
/pdfLastFill false def
|
||||
/pdfLastStroke false def
|
||||
/pdfTextMat [1 0 0 1 0 0] def
|
||||
/pdfFontSize 0 def
|
||||
/pdfCharSpacing 0 def
|
||||
/pdfTextRender 0 def
|
||||
/pdfPatternCS false def
|
||||
/pdfTextRise 0 def
|
||||
/pdfWordSpacing 0 def
|
||||
/pdfHorizScaling 1 def
|
||||
/pdfTextClipPath [] def
|
||||
} def
|
||||
/pdfEndPage { end } def
|
||||
% PDF color state
|
||||
/cs { /pdfFillXform exch def dup /pdfFillCS exch def
|
||||
setcolorspace } def
|
||||
/CS { /pdfStrokeXform exch def dup /pdfStrokeCS exch def
|
||||
setcolorspace } def
|
||||
/sc { pdfLastFill not { pdfFillCS setcolorspace } if
|
||||
dup /pdfFill exch def aload pop pdfFillXform setcolor
|
||||
/pdfLastFill true def /pdfLastStroke false def } def
|
||||
/SC { pdfLastStroke not { pdfStrokeCS setcolorspace } if
|
||||
dup /pdfStroke exch def aload pop pdfStrokeXform setcolor
|
||||
/pdfLastStroke true def /pdfLastFill false def } def
|
||||
/op { /pdfFillOP exch def
|
||||
pdfLastFill { pdfFillOP setoverprint } if } def
|
||||
/OP { /pdfStrokeOP exch def
|
||||
pdfLastStroke { pdfStrokeOP setoverprint } if } def
|
||||
/fCol {
|
||||
pdfLastFill not {
|
||||
pdfFillCS setcolorspace
|
||||
pdfFill aload pop pdfFillXform setcolor
|
||||
pdfFillOP setoverprint
|
||||
/pdfLastFill true def /pdfLastStroke false def
|
||||
} if
|
||||
} def
|
||||
/sCol {
|
||||
pdfLastStroke not {
|
||||
pdfStrokeCS setcolorspace
|
||||
pdfStroke aload pop pdfStrokeXform setcolor
|
||||
pdfStrokeOP setoverprint
|
||||
/pdfLastStroke true def /pdfLastFill false def
|
||||
} if
|
||||
} def
|
||||
% build a font
|
||||
/pdfMakeFont {
|
||||
4 3 roll findfont
|
||||
4 2 roll matrix scale makefont
|
||||
dup length dict begin
|
||||
{ 1 index /FID ne { def } { pop pop } ifelse } forall
|
||||
/Encoding exch def
|
||||
currentdict
|
||||
end
|
||||
definefont pop
|
||||
} def
|
||||
/pdfMakeFont16 {
|
||||
exch findfont
|
||||
dup length dict begin
|
||||
{ 1 index /FID ne { def } { pop pop } ifelse } forall
|
||||
/WMode exch def
|
||||
currentdict
|
||||
end
|
||||
definefont pop
|
||||
} def
|
||||
% graphics state operators
|
||||
/q { gsave pdfDictSize dict begin } def
|
||||
/Q {
|
||||
end grestore
|
||||
/pdfLastFill where {
|
||||
pop
|
||||
pdfLastFill {
|
||||
pdfFillOP setoverprint
|
||||
} {
|
||||
pdfStrokeOP setoverprint
|
||||
} ifelse
|
||||
} if
|
||||
} def
|
||||
/cm { concat } def
|
||||
/d { setdash } def
|
||||
/i { setflat } def
|
||||
/j { setlinejoin } def
|
||||
/J { setlinecap } def
|
||||
/M { setmiterlimit } def
|
||||
/w { setlinewidth } def
|
||||
% path segment operators
|
||||
/m { moveto } def
|
||||
/l { lineto } def
|
||||
/c { curveto } def
|
||||
/re { 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
|
||||
neg 0 rlineto closepath } def
|
||||
/h { closepath } def
|
||||
% path painting operators
|
||||
/S { sCol stroke } def
|
||||
/Sf { fCol stroke } def
|
||||
/f { fCol fill } def
|
||||
/f* { fCol eofill } def
|
||||
% clipping operators
|
||||
/W { clip newpath } def
|
||||
/W* { eoclip newpath } def
|
||||
/Ws { strokepath clip newpath } def
|
||||
% text state operators
|
||||
/Tc { /pdfCharSpacing exch def } def
|
||||
/Tf { dup /pdfFontSize exch def
|
||||
dup pdfHorizScaling mul exch matrix scale
|
||||
pdfTextMat matrix concatmatrix dup 4 0 put dup 5 0 put
|
||||
exch findfont exch makefont setfont } def
|
||||
/Tr { /pdfTextRender exch def } def
|
||||
/Tp { /pdfPatternCS exch def } def
|
||||
/Ts { /pdfTextRise exch def } def
|
||||
/Tw { /pdfWordSpacing exch def } def
|
||||
/Tz { /pdfHorizScaling exch def } def
|
||||
% text positioning operators
|
||||
/Td { pdfTextMat transform moveto } def
|
||||
/Tm { /pdfTextMat exch def } def
|
||||
% text string operators
|
||||
/xyshow where {
|
||||
pop
|
||||
/xyshow2 {
|
||||
dup length array
|
||||
0 2 2 index length 1 sub {
|
||||
2 index 1 index 2 copy get 3 1 roll 1 add get
|
||||
pdfTextMat dtransform
|
||||
4 2 roll 2 copy 6 5 roll put 1 add 3 1 roll dup 4 2 roll put
|
||||
} for
|
||||
exch pop
|
||||
xyshow
|
||||
} def
|
||||
}{
|
||||
/xyshow2 {
|
||||
currentfont /FontType get 0 eq {
|
||||
0 2 3 index length 1 sub {
|
||||
currentpoint 4 index 3 index 2 getinterval show moveto
|
||||
2 copy get 2 index 3 2 roll 1 add get
|
||||
pdfTextMat dtransform rmoveto
|
||||
} for
|
||||
} {
|
||||
0 1 3 index length 1 sub {
|
||||
currentpoint 4 index 3 index 1 getinterval show moveto
|
||||
2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get
|
||||
pdfTextMat dtransform rmoveto
|
||||
} for
|
||||
} ifelse
|
||||
pop pop
|
||||
} def
|
||||
} ifelse
|
||||
/cshow where {
|
||||
pop
|
||||
/xycp {
|
||||
0 3 2 roll
|
||||
{
|
||||
pop pop currentpoint 3 2 roll
|
||||
1 string dup 0 4 3 roll put false charpath moveto
|
||||
2 copy get 2 index 2 index 1 add get
|
||||
pdfTextMat dtransform rmoveto
|
||||
2 add
|
||||
} exch cshow
|
||||
pop pop
|
||||
} def
|
||||
}{
|
||||
/xycp {
|
||||
currentfont /FontType get 0 eq {
|
||||
0 2 3 index length 1 sub {
|
||||
currentpoint 4 index 3 index 2 getinterval false charpath moveto
|
||||
2 copy get 2 index 3 2 roll 1 add get
|
||||
pdfTextMat dtransform rmoveto
|
||||
} for
|
||||
} {
|
||||
0 1 3 index length 1 sub {
|
||||
currentpoint 4 index 3 index 1 getinterval false charpath moveto
|
||||
2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get
|
||||
pdfTextMat dtransform rmoveto
|
||||
} for
|
||||
} ifelse
|
||||
pop pop
|
||||
} def
|
||||
} ifelse
|
||||
/Tj {
|
||||
fCol
|
||||
0 pdfTextRise pdfTextMat dtransform rmoveto
|
||||
currentpoint 4 2 roll
|
||||
pdfTextRender 1 and 0 eq {
|
||||
2 copy xyshow2
|
||||
} if
|
||||
pdfTextRender 3 and dup 1 eq exch 2 eq or {
|
||||
3 index 3 index moveto
|
||||
2 copy
|
||||
currentfont /FontType get 3 eq { fCol } { sCol } ifelse
|
||||
xycp currentpoint stroke moveto
|
||||
} if
|
||||
pdfTextRender 4 and 0 ne {
|
||||
4 2 roll moveto xycp
|
||||
/pdfTextClipPath [ pdfTextClipPath aload pop
|
||||
{/moveto cvx}
|
||||
{/lineto cvx}
|
||||
{/curveto cvx}
|
||||
{/closepath cvx}
|
||||
pathforall ] def
|
||||
currentpoint newpath moveto
|
||||
} {
|
||||
pop pop pop pop
|
||||
} ifelse
|
||||
0 pdfTextRise neg pdfTextMat dtransform rmoveto
|
||||
} def
|
||||
/TJm { 0.001 mul pdfFontSize mul pdfHorizScaling mul neg 0
|
||||
pdfTextMat dtransform rmoveto } def
|
||||
/TJmV { 0.001 mul pdfFontSize mul neg 0 exch
|
||||
pdfTextMat dtransform rmoveto } def
|
||||
/Tclip { pdfTextClipPath cvx exec clip newpath
|
||||
/pdfTextClipPath [] def } def
|
||||
/Tclip* { pdfTextClipPath cvx exec eoclip newpath
|
||||
/pdfTextClipPath [] def } def
|
||||
% Level 2/3 image operators
|
||||
/pdfImBuf 100 string def
|
||||
/pdfImStr {
|
||||
2 copy exch length lt {
|
||||
2 copy get exch 1 add exch
|
||||
} {
|
||||
()
|
||||
} ifelse
|
||||
} def
|
||||
/skipEOD {
|
||||
{ currentfile pdfImBuf readline
|
||||
not { pop exit } if
|
||||
(%-EOD-) eq { exit } if } loop
|
||||
} def
|
||||
/pdfIm { image skipEOD } def
|
||||
/pdfImM { fCol imagemask skipEOD } def
|
||||
/pr { 2 index 2 index 3 2 roll putinterval 4 add } def
|
||||
/pdfImClip {
|
||||
gsave
|
||||
0 2 4 index length 1 sub {
|
||||
dup 4 index exch 2 copy
|
||||
get 5 index div put
|
||||
1 add 3 index exch 2 copy
|
||||
get 3 index div put
|
||||
} for
|
||||
pop pop rectclip
|
||||
} def
|
||||
/pdfImClipEnd { grestore } def
|
||||
% shading operators
|
||||
/colordelta {
|
||||
false 0 1 3 index length 1 sub {
|
||||
dup 4 index exch get 3 index 3 2 roll get sub abs 0.004 gt {
|
||||
pop true
|
||||
} if
|
||||
} for
|
||||
exch pop exch pop
|
||||
} def
|
||||
/funcCol { func n array astore } def
|
||||
/funcSH {
|
||||
dup 0 eq {
|
||||
true
|
||||
} {
|
||||
dup 6 eq {
|
||||
false
|
||||
} {
|
||||
4 index 4 index funcCol dup
|
||||
6 index 4 index funcCol dup
|
||||
3 1 roll colordelta 3 1 roll
|
||||
5 index 5 index funcCol dup
|
||||
3 1 roll colordelta 3 1 roll
|
||||
6 index 8 index funcCol dup
|
||||
3 1 roll colordelta 3 1 roll
|
||||
colordelta or or or
|
||||
} ifelse
|
||||
} ifelse
|
||||
{
|
||||
1 add
|
||||
4 index 3 index add 0.5 mul exch 4 index 3 index add 0.5 mul exch
|
||||
6 index 6 index 4 index 4 index 4 index funcSH
|
||||
2 index 6 index 6 index 4 index 4 index funcSH
|
||||
6 index 2 index 4 index 6 index 4 index funcSH
|
||||
5 3 roll 3 2 roll funcSH pop pop
|
||||
} {
|
||||
pop 3 index 2 index add 0.5 mul 3 index 2 index add 0.5 mul
|
||||
funcCol sc
|
||||
dup 4 index exch mat transform m
|
||||
3 index 3 index mat transform l
|
||||
1 index 3 index mat transform l
|
||||
mat transform l pop pop h f*
|
||||
} ifelse
|
||||
} def
|
||||
/axialCol {
|
||||
dup 0 lt {
|
||||
pop t0
|
||||
} {
|
||||
dup 1 gt {
|
||||
pop t1
|
||||
} {
|
||||
dt mul t0 add
|
||||
} ifelse
|
||||
} ifelse
|
||||
func n array astore
|
||||
} def
|
||||
/axialSH {
|
||||
dup 0 eq {
|
||||
true
|
||||
} {
|
||||
dup 8 eq {
|
||||
false
|
||||
} {
|
||||
2 index axialCol 2 index axialCol colordelta
|
||||
} ifelse
|
||||
} ifelse
|
||||
{
|
||||
1 add 3 1 roll 2 copy add 0.5 mul
|
||||
dup 4 3 roll exch 4 index axialSH
|
||||
exch 3 2 roll axialSH
|
||||
} {
|
||||
pop 2 copy add 0.5 mul
|
||||
axialCol sc
|
||||
exch dup dx mul x0 add exch dy mul y0 add
|
||||
3 2 roll dup dx mul x0 add exch dy mul y0 add
|
||||
dx abs dy abs ge {
|
||||
2 copy yMin sub dy mul dx div add yMin m
|
||||
yMax sub dy mul dx div add yMax l
|
||||
2 copy yMax sub dy mul dx div add yMax l
|
||||
yMin sub dy mul dx div add yMin l
|
||||
h f*
|
||||
} {
|
||||
exch 2 copy xMin sub dx mul dy div add xMin exch m
|
||||
xMax sub dx mul dy div add xMax exch l
|
||||
exch 2 copy xMax sub dx mul dy div add xMax exch l
|
||||
xMin sub dx mul dy div add xMin exch l
|
||||
h f*
|
||||
} ifelse
|
||||
} ifelse
|
||||
} def
|
||||
/radialCol {
|
||||
dup t0 lt {
|
||||
pop t0
|
||||
} {
|
||||
dup t1 gt {
|
||||
pop t1
|
||||
} if
|
||||
} ifelse
|
||||
func n array astore
|
||||
} def
|
||||
/radialSH {
|
||||
dup 0 eq {
|
||||
true
|
||||
} {
|
||||
dup 8 eq {
|
||||
false
|
||||
} {
|
||||
2 index dt mul t0 add radialCol
|
||||
2 index dt mul t0 add radialCol colordelta
|
||||
} ifelse
|
||||
} ifelse
|
||||
{
|
||||
1 add 3 1 roll 2 copy add 0.5 mul
|
||||
dup 4 3 roll exch 4 index radialSH
|
||||
exch 3 2 roll radialSH
|
||||
} {
|
||||
pop 2 copy add 0.5 mul dt mul t0 add
|
||||
radialCol sc
|
||||
encl {
|
||||
exch dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
|
||||
0 360 arc h
|
||||
dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
|
||||
360 0 arcn h f
|
||||
} {
|
||||
2 copy
|
||||
dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
|
||||
a1 a2 arcn
|
||||
dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
|
||||
a2 a1 arcn h
|
||||
dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
|
||||
a1 a2 arc
|
||||
dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
|
||||
a2 a1 arc h f
|
||||
} ifelse
|
||||
} ifelse
|
||||
} def
|
||||
end
|
||||
%%EndResource
|
||||
%%EndProlog
|
||||
%%BeginSetup
|
||||
xpdf begin
|
||||
%%EndSetup
|
||||
pdfStartPage
|
||||
[] 0 d
|
||||
1 i
|
||||
0 j
|
||||
0 J
|
||||
10 M
|
||||
1 w
|
||||
/DeviceGray {} cs
|
||||
[0] sc
|
||||
/DeviceGray {} CS
|
||||
[0] SC
|
||||
false op
|
||||
false OP
|
||||
{} settransfer
|
||||
0 0 32 32 re
|
||||
W
|
||||
q
|
||||
/DeviceRGB {} cs
|
||||
[0 0 0] sc
|
||||
/DeviceRGB {} CS
|
||||
[0 0 0] SC
|
||||
[1 0 0 -1 0 32] cm
|
||||
q
|
||||
q
|
||||
Q
|
||||
Q
|
||||
q
|
||||
q
|
||||
q
|
||||
[1 0 0 1 0 0] cm
|
||||
[32 0 0 -32 0 32] cm
|
||||
/DeviceRGB setcolorspace
|
||||
<<
|
||||
/ImageType 1
|
||||
/Width 32
|
||||
/Height 32
|
||||
/ImageMatrix [32 0 0 -32 0 32]
|
||||
/BitsPerComponent 8
|
||||
/Decode [0 1 0 1 0 1]
|
||||
/DataSource currentfile
|
||||
/ASCII85Decode filter
|
||||
<< >> /DCTDecode filter
|
||||
>>
|
||||
pdfIm
|
||||
s4IA0!"_al8O`[\!<E0k!([(is4[N@!!30%!W`<'!WiE)!WiE*"Tni/!s8`1"9Sf4
|
||||
"pYA<"pYA=#n%%F#RUhB#7:nI$4@7N$k*@I%M'!W%LW[R%0,&^6NI5i!WrN,"p4r3
|
||||
$j[(D$k*OQ$k*OQ$k*OQ$k*OQ$k*OQ$k*OQ$k*OQ$k*OQ$k*OQ$k*OQ$k*OQ$k*OQ
|
||||
$k30O!"fJ:+93Md!?qLF&HMtG!WU(<*rl9A"T\W)!<E3$z!!!!"!WrQ/"pYD?$4Hm
|
||||
P!4<@<!W`B*!X&T/"U"r.!!.KK!WrE*&Hrdj0gQ!W;.0\RE>10ZOeE%*6F"?A;UOt
|
||||
Z1LbBV#mqFa(`=5<-7:2j.Ps"@2`NfY6UX@47n?3D;cHat='/U/@q9._B4u!oF*)P
|
||||
JGBeCZK7nr5LPUeEP*;,qQC!u,R\HRQV5C/hWN*81['d?O\@K2f_o0O6a2lBFdaQ^
|
||||
rf%8R-g>V&OjQ5OekiqC&o(2MHp@n@XqZ"J6*ru?D!<E3%!<E3%!<<*"!!!!"!WrQ
|
||||
/"pYD?$4HmP!4<C=!W`?*"9Sc3"U"r.!<RHF!<N?8"9fr'"qj4!#@VTc+u4]T'LIq
|
||||
UZ,$_k1K*]W@WKj'(*k`q-1Mcg)&ahL-n-W'2E*TU3^Z;(7Rp!@8lJ\h<``C+>%;)
|
||||
SAnPdkC3+K>G'A1VH@gd&KnbA=M2II[Pa.Q$R$jD;USO``Vl6SpZEppG[^WcW]#)A
|
||||
'`Q#s>ai`&\eCE.%f\,!<j5f=akNM0qo(2MHp@n@XqZ#7L$j-M1!YGMH!'^J^[J7H
|
||||
*)od=>n_Shppj9lmgH&*&Z5`-0!&G^+@?%=sWQn:&Z!JmV>Q3<j(;FIbL>(78UA/^
|
||||
<WG/37&CF$Q0s_&>N/i2JRek1>=8iOIiX'uaq]C(*rY9%6hVL.U[YF1+o2#E2rZgV
|
||||
fAtg!5rLlk%;jl*n<+SZT8_SR;=skUV066U1.p=mFr6"gf2][jPofDZ&\`7@/-r'!
|
||||
;,l&`4))eYGD-KF%4Q#*6m7m-&ibs?(?PB?TXYaa<m(u:lbhFsTbaCt4hKdqnoWN-
|
||||
,-f^7-GbXos*uB0>%2C(@*]]s]E087&>\*L"WW)s0NHRN"Ia3BM^PX0A?"k)FD":7
|
||||
Zape3'Q25[,qME[RXmKi%7R$RY-ahd^2Mq#oHbDPloej\L\<u;(;Pe(roA.6'\>ps
|
||||
H'BN#QqXg'$f%32o+9)<E*7qSo%=Z>=0tktVb?\UUL)@Rm9:'aT6=iISQ2.kIjQ"\
|
||||
%_ROO<=2Wb\MS98hQG^TuG$9X6EFe(Kg?r;t$)Qpec%CS=pnp0%dOlMsGLMhk<;`4
|
||||
`K1YFe4Dk#>F*pbBZ'QZsG'6YnmBb4>:XPI-!+d5f%ibMn4q,rTa=JCm8q9KN(pJ_
|
||||
E6F)2g+:rKf>4``l^LjY[CVCPY(ZDD*'3X"&qXqOb/bQNI^2+A(eWj>@,<bR&bn,Q
|
||||
e'afdE[n5C'ffj+UH1OZ,hW)L6\hS>-V.Fe`[b"_:aa,33f`~>
|
||||
%-EOD-
|
||||
Q
|
||||
Q
|
||||
Q
|
||||
Q
|
||||
showpage
|
||||
%%PageTrailer
|
||||
pdfEndPage
|
||||
%%Trailer
|
||||
end
|
||||
%%DocumentSuppliedResources:
|
||||
%%EOF
|
||||
BIN
Telegram/ThirdParty/kimageformats/autotests/read/eps/rgb.png
vendored
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/exr/rgb-gimp.exr
vendored
Normal file
BIN
Telegram/ThirdParty/kimageformats/autotests/read/exr/rgb-gimp.png
vendored
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/hdr/rgb-landscape.hdr
vendored
Executable file
BIN
Telegram/ThirdParty/kimageformats/autotests/read/hdr/rgb-landscape.png
vendored
Executable file
|
After Width: | Height: | Size: 2.8 KiB |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/hdr/rgb-portrait.hdr
vendored
Executable file
BIN
Telegram/ThirdParty/kimageformats/autotests/read/hdr/rgb-portrait.png
vendored
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/hdr/rgb.hdr
vendored
Normal file
BIN
Telegram/ThirdParty/kimageformats/autotests/read/hdr/rgb.png
vendored
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/heif/rgb.heif
vendored
Normal file
BIN
Telegram/ThirdParty/kimageformats/autotests/read/heif/rgb.png
vendored
Normal file
|
After Width: | Height: | Size: 3.6 KiB |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/heif/rgba.heif
vendored
Normal file
BIN
Telegram/ThirdParty/kimageformats/autotests/read/heif/rgba.png
vendored
Normal file
|
After Width: | Height: | Size: 3.9 KiB |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/hej2/rgb_kcolorchooser.hej2
vendored
Normal file
BIN
Telegram/ThirdParty/kimageformats/autotests/read/hej2/rgb_kcolorchooser.png
vendored
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/hej2/rgba_kolourpaint.hej2
vendored
Normal file
BIN
Telegram/ThirdParty/kimageformats/autotests/read/hej2/rgba_kolourpaint.png
vendored
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/jxl/orientation1.jxl
vendored
Normal file
BIN
Telegram/ThirdParty/kimageformats/autotests/read/jxl/orientation1.png
vendored
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/jxl/orientation2.jxl
vendored
Normal file
BIN
Telegram/ThirdParty/kimageformats/autotests/read/jxl/orientation2.png
vendored
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/jxl/orientation3.jxl
vendored
Normal file
BIN
Telegram/ThirdParty/kimageformats/autotests/read/jxl/orientation3.png
vendored
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/jxl/orientation4.jxl
vendored
Normal file
BIN
Telegram/ThirdParty/kimageformats/autotests/read/jxl/orientation4.png
vendored
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/jxl/orientation5.jxl
vendored
Normal file
BIN
Telegram/ThirdParty/kimageformats/autotests/read/jxl/orientation5.png
vendored
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/jxl/orientation6.jxl
vendored
Normal file
BIN
Telegram/ThirdParty/kimageformats/autotests/read/jxl/orientation6.png
vendored
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/jxl/orientation7.jxl
vendored
Normal file
BIN
Telegram/ThirdParty/kimageformats/autotests/read/jxl/orientation7.png
vendored
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/jxl/orientation8.jxl
vendored
Normal file
BIN
Telegram/ThirdParty/kimageformats/autotests/read/jxl/orientation8.png
vendored
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/jxl/rgb.jxl
vendored
Normal file
BIN
Telegram/ThirdParty/kimageformats/autotests/read/jxl/rgb.png
vendored
Normal file
|
After Width: | Height: | Size: 528 KiB |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/jxl/rgba.jxl
vendored
Normal file
BIN
Telegram/ThirdParty/kimageformats/autotests/read/jxl/rgba.png
vendored
Normal file
|
After Width: | Height: | Size: 117 KiB |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/kra/src.kra
vendored
Normal file
BIN
Telegram/ThirdParty/kimageformats/autotests/read/kra/src.png
vendored
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/ora/src.ora
vendored
Normal file
BIN
Telegram/ThirdParty/kimageformats/autotests/read/ora/src.png
vendored
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
Telegram/ThirdParty/kimageformats/autotests/read/pcx/bw.pcx
vendored
Normal file
BIN
Telegram/ThirdParty/kimageformats/autotests/read/pcx/bw.png
vendored
Normal file
|
After Width: | Height: | Size: 743 B |