author | kergoth <kergoth> | 2003-08-09 16:24:58 (UTC) |
---|---|---|
committer | kergoth <kergoth> | 2003-08-09 16:24:58 (UTC) |
commit | e16d333ec2e8509fc665921ca106c25325bae9e0 (patch) (unidiff) | |
tree | 9e9068190a15bc9b2a52ab33b40881128f732c0e /noncore/unsupported/qpdf/QOutputDev.cpp | |
parent | 1c58d1407f9584fedcdae390a04e2b37e5853361 (diff) | |
download | opie-e16d333ec2e8509fc665921ca106c25325bae9e0.zip opie-e16d333ec2e8509fc665921ca106c25325bae9e0.tar.gz opie-e16d333ec2e8509fc665921ca106c25325bae9e0.tar.bz2 |
Merge from BRANCH_1_0
Diffstat (limited to 'noncore/unsupported/qpdf/QOutputDev.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/unsupported/qpdf/QOutputDev.cpp | 367 |
1 files changed, 190 insertions, 177 deletions
diff --git a/noncore/unsupported/qpdf/QOutputDev.cpp b/noncore/unsupported/qpdf/QOutputDev.cpp index 52237f5..022d938 100644 --- a/noncore/unsupported/qpdf/QOutputDev.cpp +++ b/noncore/unsupported/qpdf/QOutputDev.cpp | |||
@@ -88,3 +88,3 @@ static QOutFontSubst qStdFonts [] = { | |||
88 | { "Zapf-Dingbats", 0, false, false, QFont::AnyStyle }, | 88 | { "Zapf-Dingbats", 0, false, false, QFont::AnyStyle }, |
89 | 89 | ||
90 | { 0, 0, false, false, QFont::AnyStyle } | 90 | { 0, 0, false, false, QFont::AnyStyle } |
@@ -98,7 +98,7 @@ static QOutFontSubst qStdFonts [] = { | |||
98 | 98 | ||
99 | QFont QOutputDev::matchFont ( GfxFont *gfxFont, fp_t m11, fp_t m12, fp_t m21, fp_t m22 ) | 99 | QFont QOutputDev::matchFont ( GfxFont *gfxFont, fp_t m11, fp_t m12, fp_t m21, fp_t m22 ) |
100 | { | 100 | { |
101 | static QDict<QOutFontSubst> stdfonts; | 101 | static QDict<QOutFontSubst> stdfonts; |
102 | 102 | ||
103 | // build dict for std. fonts on first invocation | 103 | // build dict for std. fonts on first invocation |
104 | if ( stdfonts. isEmpty ( )) { | 104 | if ( stdfonts. isEmpty ( )) { |
@@ -106,3 +106,3 @@ QFont QOutputDev::matchFont ( GfxFont *gfxFont, fp_t m11, fp_t m12, fp_t m21, fp | |||
106 | stdfonts. insert ( QString ( ptr-> m_name ), ptr ); | 106 | stdfonts. insert ( QString ( ptr-> m_name ), ptr ); |
107 | } | 107 | } |
108 | } | 108 | } |
@@ -121,4 +121,4 @@ QFont QOutputDev::matchFont ( GfxFont *gfxFont, fp_t m11, fp_t m12, fp_t m21, fp | |||
121 | gfxFont-> isCIDFont ( ), | 121 | gfxFont-> isCIDFont ( ), |
122 | ( gfxFont-> getEmbeddedFontName ( ) ? gfxFont-> getEmbeddedFontName ( ) : "<n/a>" ), | 122 | ( gfxFont-> getEmbeddedFontName ( ) ? gfxFont-> getEmbeddedFontName()-> getCString ( ) : "<n/a>" ), |
123 | (double) m11, (double) m12, (double) m21, (double) m22 )); | 123 | (double) m11, (double) m12, (double) m21, (double) m22 ) ); |
124 | 124 | ||
@@ -132,3 +132,3 @@ QFont QOutputDev::matchFont ( GfxFont *gfxFont, fp_t m11, fp_t m12, fp_t m21, fp | |||
132 | QOutFontSubst *subst = stdfonts [fname]; | 132 | QOutFontSubst *subst = stdfonts [fname]; |
133 | 133 | ||
134 | if ( subst ) { | 134 | if ( subst ) { |
@@ -136,3 +136,3 @@ QFont QOutputDev::matchFont ( GfxFont *gfxFont, fp_t m11, fp_t m12, fp_t m21, fp | |||
136 | f. setFamily ( subst-> m_sname ); | 136 | f. setFamily ( subst-> m_sname ); |
137 | f. setStyleHint ( subst-> m_hint, (QFont::StyleStrategy) ( QFont::PreferOutline | QFont::PreferQuality )); | 137 | f. setStyleHint ( subst-> m_hint, (QFont::StyleStrategy) ( QFont::PreferOutline | QFont::PreferQuality )); |
138 | f. setBold ( subst-> m_bold ); | 138 | f. setBold ( subst-> m_bold ); |
@@ -142,3 +142,3 @@ QFont QOutputDev::matchFont ( GfxFont *gfxFont, fp_t m11, fp_t m12, fp_t m21, fp | |||
142 | QFont::StyleHint sty; | 142 | QFont::StyleHint sty; |
143 | 143 | ||
144 | if ( gfxFont-> isSerif ( )) | 144 | if ( gfxFont-> isSerif ( )) |
@@ -149,4 +149,4 @@ QFont QOutputDev::matchFont ( GfxFont *gfxFont, fp_t m11, fp_t m12, fp_t m21, fp | |||
149 | sty = QFont::Helvetica; | 149 | sty = QFont::Helvetica; |
150 | 150 | ||
151 | f. setStyleHint ( sty, (QFont::StyleStrategy) ( QFont::PreferOutline | QFont::PreferQuality )); | 151 | f. setStyleHint ( sty, (QFont::StyleStrategy) ( QFont::PreferOutline | QFont::PreferQuality )); |
152 | f. setBold ( gfxFont-> isBold ( ) > 0 ); | 152 | f. setBold ( gfxFont-> isBold ( ) > 0 ); |
@@ -154,6 +154,6 @@ QFont QOutputDev::matchFont ( GfxFont *gfxFont, fp_t m11, fp_t m12, fp_t m21, fp | |||
154 | f. setFixedPitch ( gfxFont-> isFixedWidth ( ) > 0 ); | 154 | f. setFixedPitch ( gfxFont-> isFixedWidth ( ) > 0 ); |
155 | 155 | ||
156 | // common specifiers in font names | 156 | // common specifiers in font names |
157 | if ( fname. contains ( "Oblique" ) || fname. contains ( "Italic" )) | 157 | if ( fname. contains ( "Oblique" ) || fname. contains ( "Italic" )) |
158 | f. setItalic ( true ); | 158 | f. setItalic ( true ); |
159 | if ( fname. contains ( "Bold" )) | 159 | if ( fname. contains ( "Bold" )) |
@@ -166,7 +166,7 @@ QFont QOutputDev::matchFont ( GfxFont *gfxFont, fp_t m11, fp_t m12, fp_t m21, fp | |||
166 | f. setWeight ( QFont::Black ); | 166 | f. setWeight ( QFont::Black ); |
167 | } | 167 | } |
168 | // Treat x-sheared fonts as italic | 168 | // Treat x-sheared fonts as italic |
169 | if (( m12 > -0.1 ) && ( m12 < 0.1 ) && ((( m21 > -5.0 ) && ( m21 < -0.1 )) || (( m21 > 0.1 ) && ( m21 < 5.0 )))) { | 169 | if (( m12 > -0.1 ) && ( m12 < 0.1 ) && ((( m21 > -5.0 ) && ( m21 < -0.1 )) || (( m21 > 0.1 ) && ( m21 < 5.0 )))) { |
170 | f. setItalic ( true ); | 170 | f. setItalic ( true ); |
171 | } | 171 | } |
172 | return f; | 172 | return f; |
@@ -184,3 +184,3 @@ QOutputDev::QOutputDev ( QWidget *parent, const char *name, int flags ) : QScrol | |||
184 | m_painter = 0; | 184 | m_painter = 0; |
185 | 185 | ||
186 | // create text object | 186 | // create text object |
@@ -189,3 +189,3 @@ QOutputDev::QOutputDev ( QWidget *parent, const char *name, int flags ) : QScrol | |||
189 | 189 | ||
190 | QOutputDev::~QOutputDev ( ) | 190 | QOutputDev::~QOutputDev ( ) |
191 | { | 191 | { |
@@ -197,3 +197,3 @@ QOutputDev::~QOutputDev ( ) | |||
197 | 197 | ||
198 | void QOutputDev::startPage ( int /*pageNum*/, GfxState *state ) | 198 | void QOutputDev::startPage ( int /*pageNum*/, GfxState *state ) |
199 | { | 199 | { |
@@ -201,3 +201,3 @@ void QOutputDev::startPage ( int /*pageNum*/, GfxState *state ) | |||
201 | delete m_painter; | 201 | delete m_painter; |
202 | 202 | ||
203 | m_pixmap = new QPixmap ( lrint ( state-> getPageWidth ( )), lrint ( state-> getPageHeight ( ))); | 203 | m_pixmap = new QPixmap ( lrint ( state-> getPageWidth ( )), lrint ( state-> getPageHeight ( ))); |
@@ -206,3 +206,3 @@ void QOutputDev::startPage ( int /*pageNum*/, GfxState *state ) | |||
206 | QPDFDBG( printf ( "NEW PIXMAP (%ld x %ld)\n", lrint ( state-> getPageWidth ( )), lrint ( state-> getPageHeight ( )))); | 206 | QPDFDBG( printf ( "NEW PIXMAP (%ld x %ld)\n", lrint ( state-> getPageWidth ( )), lrint ( state-> getPageHeight ( )))); |
207 | 207 | ||
208 | resizeContents ( m_pixmap-> width ( ), m_pixmap-> height ( )); | 208 | resizeContents ( m_pixmap-> width ( ), m_pixmap-> height ( )); |
@@ -211,13 +211,20 @@ void QOutputDev::startPage ( int /*pageNum*/, GfxState *state ) | |||
211 | m_pixmap-> fill ( white ); // clear window | 211 | m_pixmap-> fill ( white ); // clear window |
212 | m_text-> clear ( ); // cleat text object | 212 | m_text-> clear ( ); // cleat text object |
213 | viewport ( )-> repaint ( ); | 213 | viewport ( )-> repaint ( ); |
214 | } | 214 | } |
215 | 215 | ||
216 | void QOutputDev::endPage ( ) | 216 | void QOutputDev::endPage ( ) |
217 | { | 217 | { |
218 | QPDFDBG( printf("End page\n") ); | ||
218 | m_text-> coalesce ( ); | 219 | m_text-> coalesce ( ); |
219 | 220 | ||
221 | /* | ||
222 | * I get stupid crashes after endPage is called and then we do clipping | ||
223 | * and other stuff..... | ||
224 | */ | ||
225 | #if 0 | ||
220 | delete m_painter; | 226 | delete m_painter; |
221 | m_painter = 0; | 227 | m_painter = 0; |
222 | 228 | #endif | |
229 | |||
223 | updateContents ( 0, 0, contentsWidth ( ), contentsHeight ( )); | 230 | updateContents ( 0, 0, contentsWidth ( ), contentsHeight ( )); |
@@ -225,3 +232,3 @@ void QOutputDev::endPage ( ) | |||
225 | 232 | ||
226 | void QOutputDev::drawLink ( Link *link, Catalog */*catalog*/ ) | 233 | void QOutputDev::drawLink ( Link *link, Catalog */*catalog*/ ) |
227 | { | 234 | { |
@@ -230,9 +237,9 @@ void QOutputDev::drawLink ( Link *link, Catalog */*catalog*/ ) | |||
230 | link-> getBorder ( &x1, &y1, &x2, &y2, &w ); | 237 | link-> getBorder ( &x1, &y1, &x2, &y2, &w ); |
231 | 238 | ||
232 | if ( w > 0 ) { | 239 | if ( w > 0 ) { |
233 | int x, y, dx, dy; | 240 | int x, y, dx, dy; |
234 | 241 | ||
235 | cvtUserToDev ( x1, y1, &x, &y ); | 242 | cvtUserToDev ( x1, y1, &x, &y ); |
236 | cvtUserToDev ( x2, y2, &dx, &dy ); | 243 | cvtUserToDev ( x2, y2, &dx, &dy ); |
237 | 244 | ||
238 | QPen oldpen = m_painter-> pen ( ); | 245 | QPen oldpen = m_painter-> pen ( ); |
@@ -244,13 +251,19 @@ void QOutputDev::drawLink ( Link *link, Catalog */*catalog*/ ) | |||
244 | 251 | ||
245 | void QOutputDev::saveState ( GfxState */*state*/ ) | 252 | void QOutputDev::saveState ( GfxState */*state*/ ) |
246 | { | 253 | { |
254 | if ( ! m_painter ) | ||
255 | return; | ||
256 | |||
247 | QPDFDBG( printf ( "SAVE (CLIP=%d/%d)\n", m_painter-> hasClipping ( ), !m_painter-> clipRegion ( ). isEmpty ( ))); | 257 | QPDFDBG( printf ( "SAVE (CLIP=%d/%d)\n", m_painter-> hasClipping ( ), !m_painter-> clipRegion ( ). isEmpty ( ))); |
248 | 258 | ||
249 | m_painter-> save ( ); | 259 | m_painter-> save ( ); |
250 | } | 260 | } |
251 | 261 | ||
252 | void QOutputDev::restoreState ( GfxState */*state*/ ) | 262 | void QOutputDev::restoreState ( GfxState */*state*/ ) |
253 | { | 263 | { |
264 | if( ! m_painter ) | ||
265 | return; | ||
266 | |||
254 | m_painter-> restore ( ); | 267 | m_painter-> restore ( ); |
255 | 268 | ||
256 | //m_painter-> setClipRegion ( QRect ( 0, 0, m_pixmap-> width ( ), m_pixmap-> height ( ))); | 269 | //m_painter-> setClipRegion ( QRect ( 0, 0, m_pixmap-> width ( ), m_pixmap-> height ( ))); |
@@ -260,3 +273,3 @@ void QOutputDev::restoreState ( GfxState */*state*/ ) | |||
260 | 273 | ||
261 | void QOutputDev::updateAll ( GfxState *state ) | 274 | void QOutputDev::updateAll ( GfxState *state ) |
262 | { | 275 | { |
@@ -270,3 +283,3 @@ void QOutputDev::updateAll ( GfxState *state ) | |||
270 | 283 | ||
271 | void QOutputDev::updateCTM ( GfxState *state, fp_t /*m11*/, fp_t /*m12*/, fp_t /*m21*/, fp_t /*m22*/, fp_t /*m31*/, fp_t /*m32*/ ) | 284 | void QOutputDev::updateCTM ( GfxState *state, fp_t /*m11*/, fp_t /*m12*/, fp_t /*m21*/, fp_t /*m22*/, fp_t /*m31*/, fp_t /*m32*/ ) |
272 | { | 285 | { |
@@ -275,3 +288,3 @@ void QOutputDev::updateCTM ( GfxState *state, fp_t /*m11*/, fp_t /*m12*/, fp_t / | |||
275 | 288 | ||
276 | void QOutputDev::updateLineDash ( GfxState *state ) | 289 | void QOutputDev::updateLineDash ( GfxState *state ) |
277 | { | 290 | { |
@@ -280,3 +293,3 @@ void QOutputDev::updateLineDash ( GfxState *state ) | |||
280 | 293 | ||
281 | void QOutputDev::updateFlatness ( GfxState */*state*/ ) | 294 | void QOutputDev::updateFlatness ( GfxState */*state*/ ) |
282 | { | 295 | { |
@@ -286,3 +299,3 @@ void QOutputDev::updateFlatness ( GfxState */*state*/ ) | |||
286 | 299 | ||
287 | void QOutputDev::updateLineJoin ( GfxState *state ) | 300 | void QOutputDev::updateLineJoin ( GfxState *state ) |
288 | { | 301 | { |
@@ -291,3 +304,3 @@ void QOutputDev::updateLineJoin ( GfxState *state ) | |||
291 | 304 | ||
292 | void QOutputDev::updateLineCap ( GfxState *state ) | 305 | void QOutputDev::updateLineCap ( GfxState *state ) |
293 | { | 306 | { |
@@ -297,3 +310,3 @@ void QOutputDev::updateLineCap ( GfxState *state ) | |||
297 | // unimplemented | 310 | // unimplemented |
298 | void QOutputDev::updateMiterLimit ( GfxState */*state*/ ) | 311 | void QOutputDev::updateMiterLimit ( GfxState */*state*/ ) |
299 | { | 312 | { |
@@ -302,3 +315,3 @@ void QOutputDev::updateMiterLimit ( GfxState */*state*/ ) | |||
302 | 315 | ||
303 | void QOutputDev::updateLineWidth ( GfxState *state ) | 316 | void QOutputDev::updateLineWidth ( GfxState *state ) |
304 | { | 317 | { |
@@ -307,3 +320,3 @@ void QOutputDev::updateLineWidth ( GfxState *state ) | |||
307 | 320 | ||
308 | void QOutputDev::updateLineAttrs ( GfxState *state, GBool updateDash ) | 321 | void QOutputDev::updateLineAttrs ( GfxState *state, GBool updateDash ) |
309 | { | 322 | { |
@@ -318,3 +331,3 @@ void QOutputDev::updateLineAttrs ( GfxState *state, GBool updateDash ) | |||
318 | width = lrint ( state-> getTransformedLineWidth ( )); | 331 | width = lrint ( state-> getTransformedLineWidth ( )); |
319 | 332 | ||
320 | switch ( state-> getLineCap ( )) { | 333 | switch ( state-> getLineCap ( )) { |
@@ -328,3 +341,3 @@ void QOutputDev::updateLineAttrs ( GfxState *state, GBool updateDash ) | |||
328 | } | 341 | } |
329 | 342 | ||
330 | switch (state->getLineJoin()) { | 343 | switch (state->getLineJoin()) { |
@@ -338,3 +351,3 @@ void QOutputDev::updateLineAttrs ( GfxState *state, GBool updateDash ) | |||
338 | } | 351 | } |
339 | 352 | ||
340 | state-> getLineDash ( &dashPattern, &dashLength, &dashStart ); | 353 | state-> getLineDash ( &dashPattern, &dashLength, &dashStart ); |
@@ -351,3 +364,3 @@ void QOutputDev::updateLineAttrs ( GfxState *state, GBool updateDash ) | |||
351 | // Not supported by QT | 364 | // Not supported by QT |
352 | /* | 365 | /* |
353 | char dashList[20]; | 366 | char dashList[20]; |
@@ -365,3 +378,3 @@ void QOutputDev::updateLineAttrs ( GfxState *state, GBool updateDash ) | |||
365 | 378 | ||
366 | void QOutputDev::updateFillColor ( GfxState *state ) | 379 | void QOutputDev::updateFillColor ( GfxState *state ) |
367 | { | 380 | { |
@@ -373,3 +386,3 @@ void QOutputDev::updateFillColor ( GfxState *state ) | |||
373 | 386 | ||
374 | void QOutputDev::updateStrokeColor ( GfxState *state ) | 387 | void QOutputDev::updateStrokeColor ( GfxState *state ) |
375 | { | 388 | { |
@@ -377,3 +390,3 @@ void QOutputDev::updateStrokeColor ( GfxState *state ) | |||
377 | state-> getStrokeRGB ( &rgb ); | 390 | state-> getStrokeRGB ( &rgb ); |
378 | 391 | ||
379 | QPen pen = m_painter-> pen ( ); | 392 | QPen pen = m_painter-> pen ( ); |
@@ -383,3 +396,3 @@ void QOutputDev::updateStrokeColor ( GfxState *state ) | |||
383 | 396 | ||
384 | void QOutputDev::updateFont ( GfxState *state ) | 397 | void QOutputDev::updateFont ( GfxState *state ) |
385 | { | 398 | { |
@@ -387,6 +400,6 @@ void QOutputDev::updateFont ( GfxState *state ) | |||
387 | GfxFont *gfxFont = state-> getFont ( ); | 400 | GfxFont *gfxFont = state-> getFont ( ); |
388 | 401 | ||
389 | if ( !gfxFont ) | 402 | if ( !gfxFont ) |
390 | return; | 403 | return; |
391 | 404 | ||
392 | state-> getFontTransMat ( &m11, &m12, &m21, &m22 ); | 405 | state-> getFontTransMat ( &m11, &m12, &m21, &m22 ); |
@@ -394,5 +407,5 @@ void QOutputDev::updateFont ( GfxState *state ) | |||
394 | m12 *= state-> getHorizScaling ( ); | 407 | m12 *= state-> getHorizScaling ( ); |
395 | 408 | ||
396 | QFont font = matchFont ( gfxFont, m11, m12, m21, m22 ); | 409 | QFont font = matchFont ( gfxFont, m11, m12, m21, m22 ); |
397 | 410 | ||
398 | m_painter-> setFont ( font ); | 411 | m_painter-> setFont ( font ); |
@@ -401,3 +414,3 @@ void QOutputDev::updateFont ( GfxState *state ) | |||
401 | 414 | ||
402 | void QOutputDev::stroke ( GfxState *state ) | 415 | void QOutputDev::stroke ( GfxState *state ) |
403 | { | 416 | { |
@@ -410,3 +423,3 @@ void QOutputDev::stroke ( GfxState *state ) | |||
410 | QPDFDBG( printf ( "DRAWING: %d POLYS\n", n )); | 423 | QPDFDBG( printf ( "DRAWING: %d POLYS\n", n )); |
411 | 424 | ||
412 | // draw each subpath | 425 | // draw each subpath |
@@ -415,3 +428,3 @@ void QOutputDev::stroke ( GfxState *state ) | |||
415 | int len = lengths [i]; | 428 | int len = lengths [i]; |
416 | 429 | ||
417 | if ( len >= 2 ) { | 430 | if ( len >= 2 ) { |
@@ -421,5 +434,5 @@ void QOutputDev::stroke ( GfxState *state ) | |||
421 | QPDFDBG( printf ( "\n" )); | 434 | QPDFDBG( printf ( "\n" )); |
422 | 435 | ||
423 | m_painter-> drawPolyline ( points, j, len ); | 436 | m_painter-> drawPolyline ( points, j, len ); |
424 | } | 437 | } |
425 | j += len; | 438 | j += len; |
@@ -429,3 +442,3 @@ void QOutputDev::stroke ( GfxState *state ) | |||
429 | 442 | ||
430 | void QOutputDev::fill ( GfxState *state ) | 443 | void QOutputDev::fill ( GfxState *state ) |
431 | { | 444 | { |
@@ -434,3 +447,3 @@ void QOutputDev::fill ( GfxState *state ) | |||
434 | 447 | ||
435 | void QOutputDev::eoFill ( GfxState *state ) | 448 | void QOutputDev::eoFill ( GfxState *state ) |
436 | { | 449 | { |
@@ -448,3 +461,3 @@ void QOutputDev::eoFill ( GfxState *state ) | |||
448 | // | 461 | // |
449 | void QOutputDev::doFill ( GfxState *state, bool winding ) | 462 | void QOutputDev::doFill ( GfxState *state, bool winding ) |
450 | { | 463 | { |
@@ -457,6 +470,6 @@ void QOutputDev::doFill ( GfxState *state, bool winding ) | |||
457 | QPDFDBG( printf ( "FILLING: %d POLYS\n", n )); | 470 | QPDFDBG( printf ( "FILLING: %d POLYS\n", n )); |
458 | 471 | ||
459 | QPen oldpen = m_painter-> pen ( ); | 472 | QPen oldpen = m_painter-> pen ( ); |
460 | m_painter-> setPen ( QPen ( NoPen )); | 473 | m_painter-> setPen ( QPen ( NoPen )); |
461 | 474 | ||
462 | // draw each subpath | 475 | // draw each subpath |
@@ -465,3 +478,3 @@ void QOutputDev::doFill ( GfxState *state, bool winding ) | |||
465 | int len = lengths [i]; | 478 | int len = lengths [i]; |
466 | 479 | ||
467 | if ( len >= 3 ) { | 480 | if ( len >= 3 ) { |
@@ -471,5 +484,5 @@ void QOutputDev::doFill ( GfxState *state, bool winding ) | |||
471 | QPDFDBG( printf ( "\n" )); | 484 | QPDFDBG( printf ( "\n" )); |
472 | 485 | ||
473 | m_painter-> drawPolygon ( points, winding, j, len ); | 486 | m_painter-> drawPolygon ( points, winding, j, len ); |
474 | } | 487 | } |
475 | j += len; | 488 | j += len; |
@@ -481,3 +494,3 @@ void QOutputDev::doFill ( GfxState *state, bool winding ) | |||
481 | 494 | ||
482 | void QOutputDev::clip ( GfxState *state ) | 495 | void QOutputDev::clip ( GfxState *state ) |
483 | { | 496 | { |
@@ -486,3 +499,3 @@ void QOutputDev::clip ( GfxState *state ) | |||
486 | 499 | ||
487 | void QOutputDev::eoClip ( GfxState *state ) | 500 | void QOutputDev::eoClip ( GfxState *state ) |
488 | { | 501 | { |
@@ -491,3 +504,3 @@ void QOutputDev::eoClip ( GfxState *state ) | |||
491 | 504 | ||
492 | void QOutputDev::doClip ( GfxState *state, bool winding ) | 505 | void QOutputDev::doClip ( GfxState *state, bool winding ) |
493 | { | 506 | { |
@@ -500,5 +513,5 @@ void QOutputDev::doClip ( GfxState *state, bool winding ) | |||
500 | QRegion region; | 513 | QRegion region; |
501 | 514 | ||
502 | QPDFDBG( printf ( "CLIPPING: %d POLYS\n", n )); | 515 | QPDFDBG( printf ( "CLIPPING: %d POLYS\n", n )); |
503 | 516 | ||
504 | // draw each subpath | 517 | // draw each subpath |
@@ -507,7 +520,7 @@ void QOutputDev::doClip ( GfxState *state, bool winding ) | |||
507 | int len = lengths [i]; | 520 | int len = lengths [i]; |
508 | 521 | ||
509 | if ( len >= 3 ) { | 522 | if ( len >= 3 ) { |
510 | QPointArray dummy; | 523 | QPointArray dummy; |
511 | dummy. setRawData ( points. data ( ) + j, len ); | 524 | dummy. setRawData ( points. data ( ) + j, len ); |
512 | 525 | ||
513 | QPDFDBG( printf ( " - POLY %d: ", i )); | 526 | QPDFDBG( printf ( " - POLY %d: ", i )); |
@@ -515,11 +528,11 @@ void QOutputDev::doClip ( GfxState *state, bool winding ) | |||
515 | QPDFDBG( printf ( "\n" )); | 528 | QPDFDBG( printf ( "\n" )); |
516 | 529 | ||
517 | region |= QRegion ( dummy, winding ); | 530 | region |= QRegion ( dummy, winding ); |
518 | 531 | ||
519 | dummy. resetRawData ( points. data ( ) + j, len ); | 532 | dummy. resetRawData ( points. data ( ) + j, len ); |
520 | } | 533 | } |
521 | j += len; | 534 | j += len; |
522 | } | 535 | } |
523 | 536 | ||
524 | if ( m_painter-> hasClipping ( )) | 537 | if ( m_painter && m_painter-> hasClipping ( )) |
525 | region &= m_painter-> clipRegion ( ); | 538 | region &= m_painter-> clipRegion ( ); |
@@ -528,3 +541,3 @@ void QOutputDev::doClip ( GfxState *state, bool winding ) | |||
528 | //m_painter-> setClipping ( true ); | 541 | //m_painter-> setClipping ( true ); |
529 | 542 | ||
530 | //m_painter-> fillRect ( 0, 0, m_pixmap-> width ( ), m_pixmap-> height ( ), red ); | 543 | //m_painter-> fillRect ( 0, 0, m_pixmap-> width ( ), m_pixmap-> height ( ), red ); |
@@ -543,3 +556,3 @@ void QOutputDev::doClip ( GfxState *state, bool winding ) | |||
543 | // | 556 | // |
544 | int QOutputDev::convertPath ( GfxState *state, QPointArray &points, QArray<int> &lengths ) | 557 | int QOutputDev::convertPath ( GfxState *state, QPointArray &points, QArray<int> &lengths ) |
545 | { | 558 | { |
@@ -571,3 +584,3 @@ int QOutputDev::convertSubpath ( GfxState *state, GfxSubpath *subpath, QPointArr | |||
571 | int i = 0; | 584 | int i = 0; |
572 | 585 | ||
573 | while ( i < m ) { | 586 | while ( i < m ) { |
@@ -578,3 +591,3 @@ int QOutputDev::convertSubpath ( GfxState *state, GfxSubpath *subpath, QPointArr | |||
578 | state-> transform ( subpath-> getX ( i + 2 ), subpath-> getY ( i + 2 ), &x3, &y3 ); | 591 | state-> transform ( subpath-> getX ( i + 2 ), subpath-> getY ( i + 2 ), &x3, &y3 ); |
579 | 592 | ||
580 | QPointArray tmp; | 593 | QPointArray tmp; |
@@ -585,3 +598,3 @@ int QOutputDev::convertSubpath ( GfxState *state, GfxSubpath *subpath, QPointArr | |||
585 | tmp = tmp. quadBezier ( ); | 598 | tmp = tmp. quadBezier ( ); |
586 | 599 | ||
587 | for ( uint loop = 0; loop < tmp. count ( ); loop++ ) { | 600 | for ( uint loop = 0; loop < tmp. count ( ); loop++ ) { |
@@ -592,3 +605,3 @@ int QOutputDev::convertSubpath ( GfxState *state, GfxSubpath *subpath, QPointArr | |||
592 | tmp = tmp. cubicBezier ( ); | 605 | tmp = tmp. cubicBezier ( ); |
593 | points. putPoints ( points. count ( ), tmp. count ( ), tmp ); | 606 | points. putPoints ( points. count ( ), tmp. count ( ), tmp ); |
594 | #endif | 607 | #endif |
@@ -596,7 +609,7 @@ int QOutputDev::convertSubpath ( GfxState *state, GfxSubpath *subpath, QPointArr | |||
596 | i += 3; | 609 | i += 3; |
597 | } | 610 | } |
598 | else { | 611 | else { |
599 | state-> transform ( subpath-> getX ( i ), subpath-> getY ( i ), &x1, &y1 ); | 612 | state-> transform ( subpath-> getX ( i ), subpath-> getY ( i ), &x1, &y1 ); |
600 | 613 | ||
601 | points. putPoints ( points. count ( ), 1, lrint ( x1 ), lrint ( y1 )); | 614 | points. putPoints ( points. count ( ), 1, lrint ( x1 ), lrint ( y1 )); |
602 | ++i; | 615 | ++i; |
@@ -608,3 +621,3 @@ int QOutputDev::convertSubpath ( GfxState *state, GfxSubpath *subpath, QPointArr | |||
608 | 621 | ||
609 | void QOutputDev::beginString ( GfxState *state, GString */*s*/ ) | 622 | void QOutputDev::beginString ( GfxState *state, GString */*s*/ ) |
610 | { | 623 | { |
@@ -613,3 +626,3 @@ void QOutputDev::beginString ( GfxState *state, GString */*s*/ ) | |||
613 | 626 | ||
614 | void QOutputDev::endString ( GfxState */*state*/ ) | 627 | void QOutputDev::endString ( GfxState */*state*/ ) |
615 | { | 628 | { |
@@ -620,6 +633,6 @@ void QOutputDev::drawChar ( GfxState *state, fp_t x, fp_t y, | |||
620 | fp_t dx, fp_t dy, fp_t originX, fp_t originY, | 633 | fp_t dx, fp_t dy, fp_t originX, fp_t originY, |
621 | CharCode code, Unicode *u, int uLen ) | 634 | CharCode code, Unicode *u, int uLen ) |
622 | { | 635 | { |
623 | fp_t x1, y1, dx1, dy1; | 636 | fp_t x1, y1, dx1, dy1; |
624 | 637 | ||
625 | if ( uLen > 0 ) | 638 | if ( uLen > 0 ) |
@@ -641,6 +654,6 @@ void QOutputDev::drawChar ( GfxState *state, fp_t x, fp_t y, | |||
641 | QFontMetrics fm = m_painter-> fontMetrics ( ); | 654 | QFontMetrics fm = m_painter-> fontMetrics ( ); |
642 | 655 | ||
643 | for ( int i = 0; i < uLen; i++ ) { | 656 | for ( int i = 0; i < uLen; i++ ) { |
644 | QChar c = QChar ( u [i] ); | 657 | QChar c = QChar ( u [i] ); |
645 | 658 | ||
646 | if ( fm. inFont ( c )) { | 659 | if ( fm. inFont ( c )) { |
@@ -653,9 +666,9 @@ void QOutputDev::drawChar ( GfxState *state, fp_t x, fp_t y, | |||
653 | } | 666 | } |
654 | 667 | ||
655 | if (( uLen == 1 ) && ( str [0] == ' ' )) | 668 | if (( uLen == 1 ) && ( str [0] == ' ' )) |
656 | return; | 669 | return; |
657 | 670 | ||
658 | 671 | ||
659 | fp_t m11, m12, m21, m22; | 672 | fp_t m11, m12, m21, m22; |
660 | 673 | ||
661 | state-> getFontTransMat ( &m11, &m12, &m21, &m22 ); | 674 | state-> getFontTransMat ( &m11, &m12, &m21, &m22 ); |
@@ -663,3 +676,3 @@ void QOutputDev::drawChar ( GfxState *state, fp_t x, fp_t y, | |||
663 | m12 *= state-> getHorizScaling ( ); | 676 | m12 *= state-> getHorizScaling ( ); |
664 | 677 | ||
665 | fp_t fsize = m_painter-> font ( ). pixelSize ( ); | 678 | fp_t fsize = m_painter-> font ( ). pixelSize ( ); |
@@ -668,6 +681,6 @@ void QOutputDev::drawChar ( GfxState *state, fp_t x, fp_t y, | |||
668 | QWMatrix oldmat; | 681 | QWMatrix oldmat; |
669 | |||
670 | bool dorot = (( m12 < -0.1 ) || ( m12 > 0.1 )) && (( m21 < -0.1 ) || ( m21 > 0.1 )); | ||
671 | 682 | ||
672 | if ( dorot ) { | 683 | bool dorot = (( m12 < -0.1 ) || ( m12 > 0.1 )) && (( m21 < -0.1 ) || ( m21 > 0.1 )); |
684 | |||
685 | if ( dorot ) { | ||
673 | oldmat = m_painter-> worldMatrix ( ); | 686 | oldmat = m_painter-> worldMatrix ( ); |
@@ -675,5 +688,5 @@ void QOutputDev::drawChar ( GfxState *state, fp_t x, fp_t y, | |||
675 | std::cerr << std::endl << "ROTATED: " << m11 << ", " << m12 << ", " << m21 << ", " << m22 << " / SIZE: " << fsize << " / TEXT: " << str. local8Bit ( ) << endl << endl; | 688 | std::cerr << std::endl << "ROTATED: " << m11 << ", " << m12 << ", " << m21 << ", " << m22 << " / SIZE: " << fsize << " / TEXT: " << str. local8Bit ( ) << endl << endl; |
676 | 689 | ||
677 | QWMatrix mat ( lrint ( m11 / fsize ), lrint ( m12 / fsize ), -lrint ( m21 / fsize ), -lrint ( m22 / fsize ), lrint ( x1 ), lrint ( y1 )); | 690 | QWMatrix mat ( lrint ( m11 / fsize ), lrint ( m12 / fsize ), -lrint ( m21 / fsize ), -lrint ( m22 / fsize ), lrint ( x1 ), lrint ( y1 )); |
678 | 691 | ||
679 | m_painter-> setWorldMatrix ( mat ); | 692 | m_painter-> setWorldMatrix ( mat ); |
@@ -681,14 +694,14 @@ void QOutputDev::drawChar ( GfxState *state, fp_t x, fp_t y, | |||
681 | x1 = 0; | 694 | x1 = 0; |
682 | y1 = 0; | 695 | y1 = 0; |
683 | } | 696 | } |
684 | #endif | 697 | #endif |
685 | 698 | ||
686 | QPen oldpen = m_painter-> pen ( ); | 699 | QPen oldpen = m_painter-> pen ( ); |
687 | 700 | ||
688 | if (!( state-> getRender ( ) & 1 )) { | 701 | if (!( state-> getRender ( ) & 1 )) { |
689 | QPen fillpen = oldpen; | 702 | QPen fillpen = oldpen; |
690 | 703 | ||
691 | fillpen. setColor ( m_painter-> brush ( ). color ( )); | 704 | fillpen. setColor ( m_painter-> brush ( ). color ( )); |
692 | m_painter-> setPen ( fillpen ); | 705 | m_painter-> setPen ( fillpen ); |
693 | } | 706 | } |
694 | 707 | ||
@@ -698,5 +711,5 @@ void QOutputDev::drawChar ( GfxState *state, fp_t x, fp_t y, | |||
698 | m_painter-> fillRect ( lrint ( x1 ), lrint ( y1 ), lrint ( QMAX( fp_t(1), dx1 )), lrint ( QMAX( fsize, dy1 )), m_painter-> pen ( ). color ( )); | 711 | m_painter-> fillRect ( lrint ( x1 ), lrint ( y1 ), lrint ( QMAX( fp_t(1), dx1 )), lrint ( QMAX( fsize, dy1 )), m_painter-> pen ( ). color ( )); |
699 | 712 | ||
700 | m_painter-> setPen ( oldpen ); | 713 | m_painter-> setPen ( oldpen ); |
701 | 714 | ||
702 | #ifndef QT_NO_TRANSFORMATIONS | 715 | #ifndef QT_NO_TRANSFORMATIONS |
@@ -704,6 +717,6 @@ void QOutputDev::drawChar ( GfxState *state, fp_t x, fp_t y, | |||
704 | m_painter-> setWorldMatrix ( oldmat ); | 717 | m_painter-> setWorldMatrix ( oldmat ); |
705 | #endif | 718 | #endif |
706 | 719 | ||
707 | QPDFDBG( printf ( "DRAW TEXT: \"%s\" at (%ld/%ld)\n", str. local8Bit ( ). data ( ), lrint ( x1 ), lrint ( y1 ))); | 720 | QPDFDBG( printf ( "DRAW TEXT: \"%s\" at (%ld/%ld)\n", str. local8Bit ( ). data ( ), lrint ( x1 ), lrint ( y1 ))); |
708 | } | 721 | } |
709 | else if ( code != 0 ) { | 722 | else if ( code != 0 ) { |
@@ -717,3 +730,3 @@ void QOutputDev::drawChar ( GfxState *state, fp_t x, fp_t y, | |||
717 | 730 | ||
718 | void QOutputDev::drawImageMask ( GfxState *state, Object */*ref*/, Stream *str, int width, int height, GBool invert, GBool inlineImg ) | 731 | void QOutputDev::drawImageMask ( GfxState *state, Object */*ref*/, Stream *str, int width, int height, GBool invert, GBool inlineImg ) |
719 | { | 732 | { |
@@ -721,6 +734,6 @@ void QOutputDev::drawImageMask ( GfxState *state, Object */*ref*/, Stream *str, | |||
721 | fp_t *ctm = state-> getCTM ( ); | 734 | fp_t *ctm = state-> getCTM ( ); |
722 | 735 | ||
723 | if ( fabs ( ctm [0] * ctm [3] - ctm [1] * ctm [2] ) < 0.000001 ) { | 736 | if ( fabs ( ctm [0] * ctm [3] - ctm [1] * ctm [2] ) < 0.000001 ) { |
724 | qWarning ( "Singular CTM in drawImage\n" ); | 737 | qWarning ( "Singular CTM in drawImage\n" ); |
725 | 738 | ||
726 | if ( inlineImg ) { | 739 | if ( inlineImg ) { |
@@ -735,9 +748,9 @@ void QOutputDev::drawImageMask ( GfxState *state, Object */*ref*/, Stream *str, | |||
735 | } | 748 | } |
736 | 749 | ||
737 | GfxRGB rgb; | 750 | GfxRGB rgb; |
738 | state-> getFillRGB ( &rgb ); | 751 | state-> getFillRGB ( &rgb ); |
739 | uint val = ( lrint ( rgb. r * 255 ) & 0xff ) << 16 | ( lrint ( rgb. g * 255 ) & 0xff ) << 8 | ( lrint ( rgb. b * 255 ) & 0xff ); | 752 | uint val = ( lrint ( rgb. r * 255 ) & 0xff ) << 16 | ( lrint ( rgb. g * 255 ) & 0xff ) << 8 | ( lrint ( rgb. b * 255 ) & 0xff ); |
740 | 753 | ||
741 | 754 | ||
742 | QImage img ( width, height, 32 ); | 755 | QImage img ( width, height, 32 ); |
743 | img. setAlphaBuffer ( true ); | 756 | img. setAlphaBuffer ( true ); |
@@ -751,22 +764,22 @@ void QOutputDev::drawImageMask ( GfxState *state, Object */*ref*/, Stream *str, | |||
751 | uchar **scanlines = img. jumpTable ( ); | 764 | uchar **scanlines = img. jumpTable ( ); |
752 | 765 | ||
753 | if ( ctm [3] > 0 ) | 766 | if ( ctm [3] > 0 ) |
754 | scanlines += ( height - 1 ); | 767 | scanlines += ( height - 1 ); |
755 | 768 | ||
756 | for ( int y = 0; y < height; y++ ) { | 769 | for ( int y = 0; y < height; y++ ) { |
757 | QRgb *scanline = (QRgb *) *scanlines; | 770 | QRgb *scanline = (QRgb *) *scanlines; |
758 | 771 | ||
759 | if ( ctm [0] < 0 ) | 772 | if ( ctm [0] < 0 ) |
760 | scanline += ( width - 1 ); | 773 | scanline += ( width - 1 ); |
761 | 774 | ||
762 | for ( int x = 0; x < width; x++ ) { | 775 | for ( int x = 0; x < width; x++ ) { |
763 | Guchar alpha; | 776 | Guchar alpha; |
764 | 777 | ||
765 | imgStr-> getPixel ( &alpha ); | 778 | imgStr-> getPixel ( &alpha ); |
766 | 779 | ||
767 | if ( invert ) | 780 | if ( invert ) |
768 | alpha ^= 1; | 781 | alpha ^= 1; |
769 | 782 | ||
770 | *scanline = ( alpha == 0 ) ? 0xff000000 | val : val; | 783 | *scanline = ( alpha == 0 ) ? 0xff000000 | val : val; |
771 | 784 | ||
772 | ctm [0] < 0 ? scanline-- : scanline++; | 785 | ctm [0] < 0 ? scanline-- : scanline++; |
@@ -777,9 +790,9 @@ void QOutputDev::drawImageMask ( GfxState *state, Object */*ref*/, Stream *str, | |||
777 | } | 790 | } |
778 | 791 | ||
779 | #ifndef QT_NO_TRANSFORMATIONS | 792 | #ifndef QT_NO_TRANSFORMATIONS |
780 | QWMatrix mat ( ctm [0] / width, ctm [1], ctm [2], ctm [3] / height, ctm [4], ctm [5] ); | 793 | QWMatrix mat ( ctm [0] / width, ctm [1], ctm [2], ctm [3] / height, ctm [4], ctm [5] ); |
781 | 794 | ||
782 | std::cerr << "MATRIX T=" << mat. dx ( ) << "/" << mat. dy ( ) << std::endl | 795 | std::cerr << "MATRIX T=" << mat. dx ( ) << "/" << mat. dy ( ) << std::endl |
783 | << " - M=" << mat. m11 ( ) << "/" << mat. m12 ( ) << "/" << mat. m21 ( ) << "/" << mat. m22 ( ) << std::endl; | 796 | << " - M=" << mat. m11 ( ) << "/" << mat. m12 ( ) << "/" << mat. m21 ( ) << "/" << mat. m22 ( ) << std::endl; |
784 | 797 | ||
785 | QWMatrix oldmat = m_painter-> worldMatrix ( ); | 798 | QWMatrix oldmat = m_painter-> worldMatrix ( ); |
@@ -804,6 +817,6 @@ void QOutputDev::drawImageMask ( GfxState *state, Object */*ref*/, Stream *str, | |||
804 | int y = lrint ( ctm [5] ); | 817 | int y = lrint ( ctm [5] ); |
805 | 818 | ||
806 | int w = lrint ( ctm [0] ); | 819 | int w = lrint ( ctm [0] ); |
807 | int h = lrint ( ctm [3] ); | 820 | int h = lrint ( ctm [3] ); |
808 | 821 | ||
809 | if ( w < 0 ) { | 822 | if ( w < 0 ) { |
@@ -816,3 +829,3 @@ void QOutputDev::drawImageMask ( GfxState *state, Object */*ref*/, Stream *str, | |||
816 | } | 829 | } |
817 | 830 | ||
818 | QPDFDBG( printf ( "DRAWING IMAGE MASKED: %d/%d - %dx%d\n", x, y, w, h )); | 831 | QPDFDBG( printf ( "DRAWING IMAGE MASKED: %d/%d - %dx%d\n", x, y, w, h )); |
@@ -820,3 +833,3 @@ void QOutputDev::drawImageMask ( GfxState *state, Object */*ref*/, Stream *str, | |||
820 | img = img. smoothScale ( w, h ); | 833 | img = img. smoothScale ( w, h ); |
821 | qApp-> processEvents ( ); | 834 | qApp-> processEvents ( ); |
822 | m_painter-> drawImage ( x, y, img ); | 835 | m_painter-> drawImage ( x, y, img ); |
@@ -825,4 +838,4 @@ void QOutputDev::drawImageMask ( GfxState *state, Object */*ref*/, Stream *str, | |||
825 | #endif | 838 | #endif |
826 | 839 | ||
827 | delete imgStr; | 840 | delete imgStr; |
828 | qApp-> processEvents ( ); | 841 | qApp-> processEvents ( ); |
@@ -831,6 +844,6 @@ void QOutputDev::drawImageMask ( GfxState *state, Object */*ref*/, Stream *str, | |||
831 | 844 | ||
832 | void QOutputDev::drawImage(GfxState *state, Object */*ref*/, Stream *str, int width, int height, GfxImageColorMap *colorMap, int *maskColors, GBool inlineImg ) | 845 | void QOutputDev::drawImage(GfxState *state, Object */*ref*/, Stream *str, int width, int height, GfxImageColorMap *colorMap, int *maskColors, GBool inlineImg ) |
833 | { | 846 | { |
834 | int nComps, nVals, nBits; | 847 | int nComps, nVals, nBits; |
835 | 848 | ||
836 | // image parameters | 849 | // image parameters |
@@ -842,6 +855,6 @@ void QOutputDev::drawImage(GfxState *state, Object */*ref*/, Stream *str, int wi | |||
842 | fp_t *ctm = state-> getCTM ( ); | 855 | fp_t *ctm = state-> getCTM ( ); |
843 | 856 | ||
844 | if ( fabs ( ctm [0] * ctm [3] - ctm [1] * ctm [2] ) < 0.000001 ) { | 857 | if ( fabs ( ctm [0] * ctm [3] - ctm [1] * ctm [2] ) < 0.000001 ) { |
845 | qWarning ( "Singular CTM in drawImage\n" ); | 858 | qWarning ( "Singular CTM in drawImage\n" ); |
846 | 859 | ||
847 | if ( inlineImg ) { | 860 | if ( inlineImg ) { |
@@ -858,3 +871,3 @@ void QOutputDev::drawImage(GfxState *state, Object */*ref*/, Stream *str, int wi | |||
858 | QImage img ( width, height, 32 ); | 871 | QImage img ( width, height, 32 ); |
859 | 872 | ||
860 | if ( maskColors ) | 873 | if ( maskColors ) |
@@ -870,15 +883,15 @@ void QOutputDev::drawImage(GfxState *state, Object */*ref*/, Stream *str, int wi | |||
870 | GfxRGB rgb; | 883 | GfxRGB rgb; |
871 | 884 | ||
872 | 885 | ||
873 | uchar **scanlines = img. jumpTable ( ); | 886 | uchar **scanlines = img. jumpTable ( ); |
874 | 887 | ||
875 | if ( ctm [3] > 0 ) | 888 | if ( ctm [3] > 0 ) |
876 | scanlines += ( height - 1 ); | 889 | scanlines += ( height - 1 ); |
877 | 890 | ||
878 | for ( int y = 0; y < height; y++ ) { | 891 | for ( int y = 0; y < height; y++ ) { |
879 | QRgb *scanline = (QRgb *) *scanlines; | 892 | QRgb *scanline = (QRgb *) *scanlines; |
880 | 893 | ||
881 | if ( ctm [0] < 0 ) | 894 | if ( ctm [0] < 0 ) |
882 | scanline += ( width - 1 ); | 895 | scanline += ( width - 1 ); |
883 | 896 | ||
884 | for ( int x = 0; x < width; x++ ) { | 897 | for ( int x = 0; x < width; x++ ) { |
@@ -886,8 +899,8 @@ void QOutputDev::drawImage(GfxState *state, Object */*ref*/, Stream *str, int wi | |||
886 | colorMap-> getRGB ( pixBuf, &rgb ); | 899 | colorMap-> getRGB ( pixBuf, &rgb ); |
887 | 900 | ||
888 | uint val = ( lrint ( rgb. r * 255 ) & 0xff ) << 16 | ( lrint ( rgb. g * 255 ) & 0xff ) << 8 | ( lrint ( rgb. b * 255 ) & 0xff ); | 901 | uint val = ( lrint ( rgb. r * 255 ) & 0xff ) << 16 | ( lrint ( rgb. g * 255 ) & 0xff ) << 8 | ( lrint ( rgb. b * 255 ) & 0xff ); |
889 | 902 | ||
890 | if ( maskColors ) { | 903 | if ( maskColors ) { |
891 | for ( int k = 0; k < nComps; ++k ) { | 904 | for ( int k = 0; k < nComps; ++k ) { |
892 | if (( pixBuf [k] < maskColors [2 * k] ) || ( pixBuf [k] > maskColors [2 * k] )) { | 905 | if (( pixBuf [k] < maskColors [2 * k] ) || ( pixBuf [k] > maskColors [2 * k] )) { |
893 | val |= 0xff000000; | 906 | val |= 0xff000000; |
@@ -898,3 +911,3 @@ void QOutputDev::drawImage(GfxState *state, Object */*ref*/, Stream *str, int wi | |||
898 | *scanline = val; | 911 | *scanline = val; |
899 | 912 | ||
900 | ctm [0] < 0 ? scanline-- : scanline++; | 913 | ctm [0] < 0 ? scanline-- : scanline++; |
@@ -902,3 +915,3 @@ void QOutputDev::drawImage(GfxState *state, Object */*ref*/, Stream *str, int wi | |||
902 | ctm [3] > 0 ? scanlines-- : scanlines++; | 915 | ctm [3] > 0 ? scanlines-- : scanlines++; |
903 | 916 | ||
904 | qApp-> processEvents ( ); | 917 | qApp-> processEvents ( ); |
@@ -907,6 +920,6 @@ void QOutputDev::drawImage(GfxState *state, Object */*ref*/, Stream *str, int wi | |||
907 | 920 | ||
908 | #ifndef QT_NO_TRANSFORMATIONS | 921 | #ifndef QT_NO_TRANSFORMATIONS |
909 | QWMatrix mat ( ctm [0] / width, ctm [1], ctm [2], ctm [3] / height, ctm [4], ctm [5] ); | 922 | QWMatrix mat ( ctm [0] / width, ctm [1], ctm [2], ctm [3] / height, ctm [4], ctm [5] ); |
910 | 923 | ||
911 | std::cerr << "MATRIX T=" << mat. dx ( ) << "/" << mat. dy ( ) << std::endl | 924 | std::cerr << "MATRIX T=" << mat. dx ( ) << "/" << mat. dy ( ) << std::endl |
912 | << " - M=" << mat. m11 ( ) << "/" << mat. m12 ( ) << "/" << mat. m21 ( ) << "/" << mat. m22 ( ) << std::endl; | 925 | << " - M=" << mat. m11 ( ) << "/" << mat. m12 ( ) << "/" << mat. m21 ( ) << "/" << mat. m22 ( ) << std::endl; |
@@ -920,4 +933,4 @@ void QOutputDev::drawImage(GfxState *state, Object */*ref*/, Stream *str, int wi | |||
920 | m_painter-> drawPixmap ( 0, 0, pm ); | 933 | m_painter-> drawPixmap ( 0, 0, pm ); |
921 | #else | 934 | #else |
922 | m_painter-> drawImage ( QPoint ( 0, 0 ), img ); | 935 | m_painter-> drawImage ( QPoint ( 0, 0 ), img ); |
923 | #endif | 936 | #endif |
@@ -934,6 +947,6 @@ void QOutputDev::drawImage(GfxState *state, Object */*ref*/, Stream *str, int wi | |||
934 | int y = lrint ( ctm [5] ); | 947 | int y = lrint ( ctm [5] ); |
935 | 948 | ||
936 | int w = lrint ( ctm [0] ); | 949 | int w = lrint ( ctm [0] ); |
937 | int h = lrint ( ctm [3] ); | 950 | int h = lrint ( ctm [3] ); |
938 | 951 | ||
939 | if ( w < 0 ) { | 952 | if ( w < 0 ) { |
@@ -946,10 +959,10 @@ void QOutputDev::drawImage(GfxState *state, Object */*ref*/, Stream *str, int wi | |||
946 | } | 959 | } |
947 | 960 | ||
948 | QPDFDBG( printf ( "DRAWING IMAGE: %d/%d - %dx%d\n", x, y, w, h )); | 961 | QPDFDBG( printf ( "DRAWING IMAGE: %d/%d - %dx%d\n", x, y, w, h )); |
949 | 962 | ||
950 | img = img. smoothScale ( w, h ); | 963 | img = img. smoothScale ( w, h ); |
951 | qApp-> processEvents ( ); | 964 | qApp-> processEvents ( ); |
952 | m_painter-> drawImage ( x, y, img ); | 965 | m_painter-> drawImage ( x, y, img ); |
953 | } | 966 | } |
954 | 967 | ||
955 | #endif | 968 | #endif |
@@ -979,3 +992,3 @@ bool QOutputDev::findText ( const QString &str, int &l, int &t, int &w, int &h, | |||
979 | Unicode *s = new Unicode [len]; | 992 | Unicode *s = new Unicode [len]; |
980 | 993 | ||
981 | for ( uint i = 0; i < len; i++ ) | 994 | for ( uint i = 0; i < len; i++ ) |
@@ -988,3 +1001,3 @@ bool QOutputDev::findText ( const QString &str, int &l, int &t, int &w, int &h, | |||
988 | 1001 | ||
989 | if ( m_text-> findText ( s, len, top, bottom, &x1, &y1, &x2, &y2 )) { | 1002 | if ( m_text-> findText ( s, len, top, bottom, &x1, &y1, &x2, &y2 )) { |
990 | l = lrint ( x1 ); | 1003 | l = lrint ( x1 ); |
@@ -996,3 +1009,3 @@ bool QOutputDev::findText ( const QString &str, int &l, int &t, int &w, int &h, | |||
996 | delete [] s; | 1009 | delete [] s; |
997 | 1010 | ||
998 | return found; | 1011 | return found; |
@@ -1007,3 +1020,3 @@ GBool QOutputDev::findText ( Unicode *s, int len, GBool top, GBool bottom, int * | |||
1007 | fp_t yMax1 = (double) *yMax; | 1020 | fp_t yMax1 = (double) *yMax; |
1008 | 1021 | ||
1009 | if ( m_text-> findText ( s, len, top, bottom, &xMin1, &yMin1, &xMax1, &yMax1 )) { | 1022 | if ( m_text-> findText ( s, len, top, bottom, &xMin1, &yMin1, &xMax1, &yMax1 )) { |
@@ -1023,6 +1036,6 @@ QString QOutputDev::getText ( int l, int t, int w, int h ) | |||
1023 | delete gstr; | 1036 | delete gstr; |
1024 | return str; | 1037 | return str; |
1025 | } | 1038 | } |
1026 | 1039 | ||
1027 | QString QOutputDev::getText ( const QRect &r ) | 1040 | QString QOutputDev::getText ( const QRect &r ) |
1028 | { | 1041 | { |
@@ -1037,3 +1050,3 @@ void QOutputDev::drawContents ( QPainter *p, int clipx, int clipy, int clipw, in | |||
1037 | p-> drawPixmap ( clipx, clipy, *m_pixmap, clipx, clipy, clipw, cliph ); | 1050 | p-> drawPixmap ( clipx, clipy, *m_pixmap, clipx, clipy, clipw, cliph ); |
1038 | else | 1051 | else |
1039 | p-> fillRect ( clipx, clipy, clipw, cliph, white ); | 1052 | p-> fillRect ( clipx, clipy, clipw, cliph, white ); |