#include "psd.h"
#include "psd_utils.h"
#include <algorithm>
#include <stdexcept>
#include <string>
#include <QtEndian>
#include <kis_debug.h>
Go to the source code of this file.
|
| template<psd_byte_order byteOrder = psd_byte_order::psdBigEndian> |
| QString | KisAslReaderUtils::readFixedString (QIODevice &device) |
| |
| template<psd_byte_order byteOrder = psd_byte_order::psdBigEndian> |
| QString | KisAslReaderUtils::readPascalString (QIODevice &device) |
| |
| template<psd_byte_order byteOrder = psd_byte_order::psdBigEndian> |
| QString | KisAslReaderUtils::readStringCommon (QIODevice &device, int length) |
| |
| template<psd_byte_order byteOrder = psd_byte_order::psdBigEndian> |
| QString | KisAslReaderUtils::readUnicodeString (QIODevice &device) |
| |
| template<psd_byte_order byteOrder = psd_byte_order::psdBigEndian> |
| QString | KisAslReaderUtils::readVarString (QIODevice &device) |
| |
| template<typename T , size_t S> |
| bool | TRY_READ_SIGNATURE_2OPS_EX (psd_byte_order byteOrder, QIODevice &device, const std::array< T, S > &expected1, const std::array< T, S > &expected2) |
| |
| template<psd_byte_order byteOrder, typename T , size_t S> |
| bool | TRY_READ_SIGNATURE_2OPS_EX (QIODevice &device, const std::array< T, S > &expected1, const std::array< T, S > &expected2) |
| |
◆ GARBAGE_VALUE_MARK
| #define GARBAGE_VALUE_MARK 999 |
◆ SAFE_READ_EX
| #define SAFE_READ_EX |
( |
| byteOrder, |
|
|
| device, |
|
|
| varname ) |
Value: if (!psdread<byteOrder>(device, varname)) { \
QString msg = QString("Failed to read \'%1\' tag!").arg(#varname); \
}
Definition at line 45 of file kis_asl_reader_utils.h.
45#define SAFE_READ_EX(byteOrder, device, varname) \
46 if (!psdread<byteOrder>(device, varname)) { \
47 QString msg = QString("Failed to read \'%1\' tag!").arg(#varname); \
48 throw KisAslReaderUtils::ASLParseException(msg); \
49 }
◆ SAFE_READ_SIGNATURE_EX
| #define SAFE_READ_SIGNATURE_EX |
( |
| byteOrder, |
|
|
| device, |
|
|
| varname, |
|
|
| expected ) |
Value: if (!psdread<byteOrder>(device, varname) || varname != expected) { \
QString msg = QString( \
"Failed to check signature \'%1\' tag!\n" \
"Value: \'%2\' Expected: \'%3\'") \
.arg(#varname) \
.arg(varname) \
.arg(expected); \
}
Definition at line 51 of file kis_asl_reader_utils.h.
51#define SAFE_READ_SIGNATURE_EX(byteOrder, device, varname, expected) \
52 if (!psdread<byteOrder>(device, varname) || varname != expected) { \
53 QString msg = QString( \
54 "Failed to check signature \'%1\' tag!\n" \
55 "Value: \'%2\' Expected: \'%3\'") \
56 .arg(#varname) \
57 .arg(varname) \
58 .arg(expected); \
59 throw KisAslReaderUtils::ASLParseException(msg); \
60 }
◆ TRY_READ_SIGNATURE_2OPS_EX() [1/2]
template<typename T , size_t S>
| bool TRY_READ_SIGNATURE_2OPS_EX |
( |
psd_byte_order | byteOrder, |
|
|
QIODevice & | device, |
|
|
const std::array< T, S > & | expected1, |
|
|
const std::array< T, S > & | expected2 ) |
|
inline |
Definition at line 91 of file kis_asl_reader_utils.h.
92{
93 switch (byteOrder) {
95 return TRY_READ_SIGNATURE_2OPS_EX<psd_byte_order::psdLittleEndian>(device, expected1, expected2);
96 default:
97 return TRY_READ_SIGNATURE_2OPS_EX<psd_byte_order::psdBigEndian>(device, expected1, expected2);
98 }
99}
References psdLittleEndian.
◆ TRY_READ_SIGNATURE_2OPS_EX() [2/2]
| bool TRY_READ_SIGNATURE_2OPS_EX |
( |
QIODevice & | device, |
|
|
const std::array< T, S > & | expected1, |
|
|
const std::array< T, S > & | expected2 ) |
|
inline |
Definition at line 63 of file kis_asl_reader_utils.h.
64{
65 QByteArray bytes = device.peek(
S);
66
68 std::reverse(bytes.begin(), bytes.end());
69 }
70
71 if (bytes.size() !=
S) {
72 return false;
73 }
74
75
76
77 if (std::equal(bytes.constBegin(), bytes.constEnd(), expected1.begin())
78 || std::equal(bytes.constBegin(), bytes.constEnd(), expected2.begin())) {
79
81 if (bytesRead.size() ==
S) {
82 return true;
83 }
84 }
85
86 dbgFile <<
"Photoshop signature verification failed! Got: " << bytes.toHex() <<
"(" << QString(bytes) <<
")";
87 return false;
88}
Eigen::Matrix< double, 4, 2 > S
QByteArray psdreadBytes(QIODevice &io, qint64 v)
References dbgFile, psdLittleEndian, psdreadBytes(), and S.