src/gui/painting/qpaintengine_mac.cpp
changeset 30 5dc02b23752f
parent 18 2f34d5167611
equal deleted inserted replaced
29:b72c6db6890b 30:5dc02b23752f
   116 
   116 
   117         if (devType == QInternal::Widget) {
   117         if (devType == QInternal::Widget) {
   118             QRegion clip = p->paintEngine()->systemClip();
   118             QRegion clip = p->paintEngine()->systemClip();
   119             QTransform native = p->deviceTransform();
   119             QTransform native = p->deviceTransform();
   120             QTransform logical = p->combinedTransform();
   120             QTransform logical = p->combinedTransform();
       
   121 
   121             if (p->hasClipping()) {
   122             if (p->hasClipping()) {
   122                 QRegion r = p->clipRegion();
   123                 QRegion r = p->clipRegion();
   123                 r.translate(native.dx() - logical.dx(), native.dy() - logical.dy());
   124                 r.translate(native.dx(), native.dy());
   124                 if (clip.isEmpty())
   125                 if (clip.isEmpty())
   125                     clip = r;
   126                     clip = r;
   126                 else
   127                 else
   127                     clip &= r;
   128                     clip &= r;
   128             }
   129             }
   129             qt_mac_clip_cg(context, clip, 0);
   130             qt_mac_clip_cg(context, clip, 0);
   130 
   131 
   131             QPainterState *state = static_cast<QPainterState *>(pe->state);
   132             CGContextTranslateCTM(context, native.dx(), native.dy());
   132             Q_ASSERT(state);
       
   133             if (!state->redirectionMatrix.isIdentity())
       
   134                 CGContextTranslateCTM(context, state->redirectionMatrix.dx(), state->redirectionMatrix.dy());
       
   135         }
   133         }
   136     }
   134     }
   137     CGContextRetain(context);
   135     CGContextRetain(context);
   138 }
   136 }
   139 
   137 
  1390         CGContextSetInterpolationQuality(d->hd, kCGInterpolationHigh);
  1388         CGContextSetInterpolationQuality(d->hd, kCGInterpolationHigh);
  1391     } else {
  1389     } else {
  1392         CGContextSetInterpolationQuality(d->hd, (hints & QPainter::SmoothPixmapTransform) ?
  1390         CGContextSetInterpolationQuality(d->hd, (hints & QPainter::SmoothPixmapTransform) ?
  1393                                          kCGInterpolationHigh : kCGInterpolationNone);
  1391                                          kCGInterpolationHigh : kCGInterpolationNone);
  1394     }
  1392     }
  1395     CGContextSetShouldSmoothFonts(d->hd, hints & QPainter::TextAntialiasing);
  1393     bool textAntialiasing = (hints & QPainter::TextAntialiasing) == QPainter::TextAntialiasing;
       
  1394     if (!textAntialiasing || d->disabledSmoothFonts) {
       
  1395         d->disabledSmoothFonts = !textAntialiasing;
       
  1396         CGContextSetShouldSmoothFonts(d->hd, textAntialiasing);
       
  1397     }
  1396 }
  1398 }
  1397 
  1399 
  1398 /*
  1400 /*
  1399     Returns the size of one device pixel in user-space coordinates.
  1401     Returns the size of one device pixel in user-space coordinates.
  1400 */
  1402 */