93
double ScImgDataLoader::decodePSDfloat(uint data)
96
char man = (data & 0xFF000000) >> 24;
99
ret = (data & 0x00FFFFFF) / 16777215.0;
104
ret = (~data & 0x00FFFFFF) / 16777215.0;
105
ret = (ret + ~man) * -1;
93
110
void ScImgDataLoader::parseRessourceData( QDataStream & s, const PSDHeader & header, uint size )
95
112
uint signature, resSize, offset, resBase, vRes, hRes, adj;
115
adj = s.device()->at();
132
adj = s.device()->pos();
116
133
resName = getPascalString(s);
117
offset += s.device()->at() - adj;
134
offset += s.device()->pos() - adj;
119
136
if(offset + resSize > size)
121
resBase = s.device()->at();
138
resBase = s.device()->pos();
122
139
if ( (resID >= 0x07d0) && (resID <= 0x0bb6) )
126
uint data1, data2, data3, data4, data5, data6;
127
143
double frac1, frac2, frac3, frac4, frac5, frac6;
128
ushort man1, man2, man3, man4, man5, man6;
134
149
while (offset2 < resSize)
138
frac1 = (data1 & 0x00FFFFFF) / 16777215.0;
139
man1 = (data1 & 0x0F000000) >> 24;
140
frac1 = (frac1 + man1) * header.height;
142
frac2 = (data2 & 0x00FFFFFF) / 16777215.0;
143
man2 = (data2 & 0x0F000000) >> 24;
144
frac2 = (frac2 + man2) * header.width;
146
frac3 = (data3 & 0x00FFFFFF) / 16777215.0;
147
man3 = (data3 & 0x0F000000) >> 24;
148
frac3 = (frac3 + man3) * header.height;
150
frac4 = (data4 & 0x00FFFFFF) / 16777215.0;
151
man4 = (data4 & 0x0F000000) >> 24;
152
frac4 = (frac4 + man4) * header.width;
154
frac5 = (data5 & 0x00FFFFFF) / 16777215.0;
155
man5 = (data5 & 0x0F000000) >> 24;
156
frac5 = (frac5 + man5) * header.height;
158
frac6 = (data6 & 0x00FFFFFF) / 16777215.0;
159
man6 = (data6 & 0x0F000000) >> 24;
160
frac6 = (frac6 + man6) * header.width;
153
frac1 = decodePSDfloat(data) * header.height;
155
frac2 = decodePSDfloat(data) * header.width;
157
frac3 = decodePSDfloat(data) * header.height;
159
frac4 = decodePSDfloat(data) * header.width;
161
frac5 = decodePSDfloat(data) * header.height;
163
frac6 = decodePSDfloat(data) * header.width;
167
clip2.addPoint(firstPoint);
168
clip2.addPoint(firstControl);
180
firstControl = FPoint(frac2, frac1);
181
firstPoint = FPoint(frac4, frac3);
182
clip2.addPoint(FPoint(frac4, frac3));
183
clip2.addPoint(FPoint(frac6, frac5));
187
clip2.addPoint(frac4, frac3);
188
clip2.addPoint(frac2, frac1);
189
clip2.addPoint(frac4, frac3);
190
clip2.addPoint(frac6, frac5);
170
clip2.addPoint(firstPoint);
171
clip2.addPoint(firstControl);
183
firstControl = FPoint(frac2, frac1);
184
firstPoint = FPoint(frac4, frac3);
185
clip2.addPoint(FPoint(frac4, frac3));
186
clip2.addPoint(FPoint(frac6, frac5));
190
clip2.addPoint(frac4, frac3);
191
clip2.addPoint(frac2, frac1);
192
clip2.addPoint(frac4, frac3);
193
clip2.addPoint(frac6, frac5);
242
245
char* buffer = (char*)malloc(thsize);
243
s.readRawBytes(buffer, thsize);
246
s.readRawData(buffer, thsize);
245
248
imth.loadFromData((const uchar*)buffer, thsize, "JPEG");
246
imth.convertDepth(32);
249
imth.convertToFormat(QImage::Format_ARGB32);
247
250
if (resID == 0x0409)
248
m_imageInfoRecord.exifInfo.thumbnail = imth.swapRGB();
251
m_imageInfoRecord.exifInfo.thumbnail = imth.rgbSwapped();
250
253
m_imageInfoRecord.exifInfo.thumbnail = imth;
251
254
m_imageInfoRecord.exifInfo.width = imth.width();