Changeset View
Changeset View
Standalone View
Standalone View
src/ksanepreviewthread.cpp
Show All 30 Lines | |||||
31 | #include <QMutexLocker> | 31 | #include <QMutexLocker> | ||
32 | #include <QDebug> | 32 | #include <QDebug> | ||
33 | #include <QImage> | 33 | #include <QImage> | ||
34 | 34 | | |||
35 | namespace KSaneIface | 35 | namespace KSaneIface | ||
36 | { | 36 | { | ||
37 | KSanePreviewThread::KSanePreviewThread(SANE_Handle handle, QImage *img): | 37 | KSanePreviewThread::KSanePreviewThread(SANE_Handle handle, QImage *img): | ||
38 | QThread(), | 38 | QThread(), | ||
39 | m_saneHandle(handle), | ||||
39 | m_frameSize(0), | 40 | m_frameSize(0), | ||
40 | m_frameRead(0), | 41 | m_frameRead(0), | ||
41 | m_dataSize(0), | | |||
42 | m_frame_t_count(0), | 42 | m_frame_t_count(0), | ||
43 | m_saneHandle(handle), | 43 | m_dataSize(0), | ||
44 | m_invertColors(false), | | |||
45 | m_saneStatus(SANE_STATUS_GOOD), | 44 | m_saneStatus(SANE_STATUS_GOOD), | ||
46 | m_readStatus(READ_READY), | 45 | m_readStatus(READ_READY), | ||
47 | // m_scanProgress(0), | 46 | // m_scanProgress(0), | ||
48 | m_saneStartDone(false), | 47 | m_saneStartDone(false), | ||
48 | m_invertColors(false), | ||||
49 | m_imageBuilder(img) | 49 | m_imageBuilder(img) | ||
50 | { | 50 | { | ||
51 | } | 51 | } | ||
52 | 52 | | |||
53 | void KSanePreviewThread::setPreviewInverted(bool inverted) | 53 | void KSanePreviewThread::setPreviewInverted(bool inverted) | ||
54 | { | 54 | { | ||
55 | m_invertColors = inverted; | 55 | m_invertColors = inverted; | ||
56 | } | 56 | } | ||
▲ Show 20 Lines • Show All 121 Lines • ▼ Show 20 Line(s) | 176 | default: | |||
178 | m_readStatus = READ_ERROR; | 178 | m_readStatus = READ_ERROR; | ||
179 | sane_cancel(m_saneHandle); | 179 | sane_cancel(m_saneHandle); | ||
180 | return; | 180 | return; | ||
181 | } | 181 | } | ||
182 | 182 | | |||
183 | copyToPreviewImg(readBytes); | 183 | copyToPreviewImg(readBytes); | ||
184 | } | 184 | } | ||
185 | 185 | | |||
186 | void KSanePreviewThread::copyToPreviewImg(int read_bytes) | 186 | void KSanePreviewThread::copyToPreviewImg(int readBytes) | ||
187 | { | 187 | { | ||
188 | QMutexLocker locker(&imgMutex); | 188 | QMutexLocker locker(&imgMutex); | ||
189 | if (m_invertColors) { | 189 | if (m_invertColors) { | ||
190 | if (m_params.depth >= 8) { | 190 | if (m_params.depth == 16) { | ||
191 | for (int i = 0; i < read_bytes; i++) { | 191 | //if (readBytes%2) qDebug() << "readBytes=" << readBytes; | ||
192 | m_readData[i] = 255 - m_readData[i]; | 192 | quint16 *u16ptr = reinterpret_cast<quint16 *>(m_readData); | ||
193 | } | 193 | for (int i = 0; i < readBytes / 2; i++) { | ||
194 | u16ptr[i] = 0xFFFF - u16ptr[i]; | ||||
195 | } | ||||
196 | } else if (m_params.depth == 8) { | ||||
197 | for (int i = 0; i < readBytes; i++) { | ||||
198 | m_readData[i] = 0xFF - m_readData[i]; | ||||
194 | } | 199 | } | ||
195 | if (m_params.depth == 1) { | 200 | } else if (m_params.depth == 1) { | ||
196 | for (int i = 0; i < read_bytes; i++) { | 201 | for (int i = 0; i < readBytes; i++) { | ||
197 | m_readData[i] = ~m_readData[i]; | 202 | m_readData[i] = ~m_readData[i]; | ||
198 | } | 203 | } | ||
199 | } | 204 | } | ||
200 | } | 205 | } | ||
201 | 206 | | |||
202 | if (m_imageBuilder.copyToImage(m_readData, read_bytes)) { | 207 | if (m_imageBuilder.copyToImage(m_readData, readBytes)) { | ||
203 | m_frameRead += read_bytes; | 208 | m_frameRead += readBytes; | ||
204 | } else { | 209 | } else { | ||
205 | m_readStatus = READ_ERROR; | 210 | m_readStatus = READ_ERROR; | ||
206 | } | 211 | } | ||
207 | } | 212 | } | ||
208 | 213 | | |||
209 | bool KSanePreviewThread::saneStartDone() | 214 | bool KSanePreviewThread::saneStartDone() | ||
210 | { | 215 | { | ||
211 | return m_saneStartDone; | 216 | return m_saneStartDone; | ||
212 | } | 217 | } | ||
213 | 218 | | |||
214 | bool KSanePreviewThread::imageResized() | 219 | bool KSanePreviewThread::imageResized() | ||
215 | { | 220 | { | ||
216 | return m_imageBuilder.imageResized(); | 221 | return m_imageBuilder.imageResized(); | ||
217 | } | 222 | } | ||
218 | 223 | | |||
219 | } // NameSpace KSaneIface | 224 | } // NameSpace KSaneIface |