Commit fd30747b5b54a760ca280ad1e75ce87026478f5e
- Diff rendering mode:
- inline
- side by side
src/openvg/qpaintengine_vg.cpp
(9 / 12)
|   | |||
| 978 | 978 | int height = sourceImage.height(); | |
| 979 | 979 | int width = sourceImage.width(); | |
| 980 | 980 | for (int y=0; y<height; ++y) { | |
| 981 | uchar *source = sourceImage.scanLine(y); | ||
| 981 | const uchar *source = sourceImage.constScanLine(y); | ||
| 982 | 982 | QRgb *target = reinterpret_cast<QRgb *>(dest.scanLine(y)); | |
| 983 | 983 | for (int x=0; x < width; ++x) | |
| 984 | 984 | target[x] = (source[x>>3] >> (x&7)) & 1 ? fg : bg; | |
| … | … | ||
| 986 | 986 | return dest; | |
| 987 | 987 | } | |
| 988 | 988 | ||
| 989 | // defined in qpixmapdata_vg.cpp. | ||
| 990 | const uchar *qt_vg_imageBits(const QImage& image); | ||
| 991 | |||
| 992 | 989 | static VGImage toVGImage | |
| 993 | 990 | (const QImage & image, Qt::ImageConversionFlags flags = Qt::AutoColor) | |
| 994 | 991 | { | |
| … | … | ||
| 1019 | 1019 | break; | |
| 1020 | 1020 | } | |
| 1021 | 1021 | ||
| 1022 | const uchar *pixels = qt_vg_imageBits(img); | ||
| 1022 | const uchar *pixels = img.constBits(); | ||
| 1023 | 1023 | ||
| 1024 | 1024 | VGImage vgImg = QVGImagePool::instance()->createPermanentImage | |
| 1025 | 1025 | (format, img.width(), img.height(), VG_IMAGE_QUALITY_FASTER); | |
| … | … | ||
| 1063 | 1063 | break; | |
| 1064 | 1064 | } | |
| 1065 | 1065 | ||
| 1066 | const uchar *pixels = qt_vg_imageBits(img) + bpp * sr.x() + | ||
| 1066 | const uchar *pixels = img.constBits() + bpp * sr.x() + | ||
| 1067 | 1067 | img.bytesPerLine() * sr.y(); | |
| 1068 | 1068 | ||
| 1069 | 1069 | VGImage vgImg = QVGImagePool::instance()->createPermanentImage | |
| … | … | ||
| 1085 | 1085 | painter.drawImage(0, 0, image); | |
| 1086 | 1086 | painter.end(); | |
| 1087 | 1087 | ||
| 1088 | const uchar *pixels = qt_vg_imageBits(img); | ||
| 1088 | const uchar *pixels = img.constBits(); | ||
| 1089 | 1089 | ||
| 1090 | 1090 | VGImage vgImg = QVGImagePool::instance()->createPermanentImage | |
| 1091 | 1091 | (VG_sARGB_8888_PRE, img.width(), img.height(), VG_IMAGE_QUALITY_FASTER); | |
| … | … | ||
| 1107 | 1107 | painter.drawImage(QPoint(0, 0), image, sr); | |
| 1108 | 1108 | painter.end(); | |
| 1109 | 1109 | ||
| 1110 | const uchar *pixels = qt_vg_imageBits(img); | ||
| 1110 | const uchar *pixels = img.constBits(); | ||
| 1111 | 1111 | ||
| 1112 | 1112 | VGImage vgImg = QVGImagePool::instance()->createPermanentImage | |
| 1113 | 1113 | (VG_sARGB_8888_PRE, img.width(), img.height(), VG_IMAGE_QUALITY_FASTER); | |
| … | … | ||
| 3172 | 3172 | if (!scaledImage.isNull()) { // Not a space character | |
| 3173 | 3173 | if (scaledImage.format() == QImage::Format_Indexed8) { | |
| 3174 | 3174 | vgImage = vgCreateImage(VG_A_8, scaledImage.width(), scaledImage.height(), VG_IMAGE_QUALITY_FASTER); | |
| 3175 | vgImageSubData(vgImage, qt_vg_imageBits(scaledImage), scaledImage.bytesPerLine(), VG_A_8, 0, 0, scaledImage.width(), scaledImage.height()); | ||
| 3175 | vgImageSubData(vgImage, scaledImage.constBits(), scaledImage.bytesPerLine(), VG_A_8, 0, 0, scaledImage.width(), scaledImage.height()); | ||
| 3176 | 3176 | } else if (scaledImage.format() == QImage::Format_Mono) { | |
| 3177 | 3177 | QImage img = scaledImage.convertToFormat(QImage::Format_Indexed8); | |
| 3178 | 3178 | vgImage = vgCreateImage(VG_A_8, img.width(), img.height(), VG_IMAGE_QUALITY_FASTER); | |
| 3179 | vgImageSubData(vgImage, qt_vg_imageBits(img), img.bytesPerLine(), VG_A_8, 0, 0, img.width(), img.height()); | ||
| 3179 | vgImageSubData(vgImage, img.constBits(), img.bytesPerLine(), VG_A_8, 0, 0, img.width(), img.height()); | ||
| 3180 | 3180 | } else { | |
| 3181 | 3181 | QImage img = scaledImage.convertToFormat(QImage::Format_ARGB32_Premultiplied); | |
| 3182 | 3182 | vgImage = vgCreateImage(VG_sARGB_8888_PRE, img.width(), img.height(), VG_IMAGE_QUALITY_FASTER); | |
| 3183 | vgImageSubData(vgImage, qt_vg_imageBits(img), img.bytesPerLine(), VG_sARGB_8888_PRE, 0, 0, img.width(), img.height()); | ||
| 3183 | vgImageSubData(vgImage, img.constBits(), img.bytesPerLine(), VG_sARGB_8888_PRE, 0, 0, img.width(), img.height()); | ||
| 3184 | 3184 | } | |
| 3185 | 3185 | } | |
| 3186 | 3186 | origin[0] = -metrics.x.toReal() + 0.5f; | |
| … | … | ||
| 3647 | 3647 | if (vgImage == VG_INVALID_HANDLE) | |
| 3648 | 3648 | return; | |
| 3649 | 3649 | vgImageSubData | |
| 3650 | (vgImage, qt_vg_imageBits(img) + img.bytesPerLine() * (img.height() - 1), | ||
| 3650 | (vgImage, img.constBits() + img.bytesPerLine() * (img.height() - 1), | ||
| 3651 | 3651 | -(img.bytesPerLine()), VG_sARGB_8888_PRE, 0, 0, | |
| 3652 | 3652 | img.width(), img.height()); | |
| 3653 | 3653 |
src/openvg/qpixmapdata_vg.cpp
(2 / 10)
|   | |||
| 231 | 231 | return source.paintEngine(); | |
| 232 | 232 | } | |
| 233 | 233 | ||
| 234 | // This function works around QImage::bits() making a deep copy if the | ||
| 235 | // QImage is not const. We force it to be const and then get the bits. | ||
| 236 | // XXX: Should add a QImage::constBits() in the future to replace this. | ||
| 237 | const uchar *qt_vg_imageBits(const QImage& image) | ||
| 238 | { | ||
| 239 | return image.bits(); | ||
| 240 | } | ||
| 241 | |||
| 242 | 234 | VGImage QVGPixmapData::toVGImage() | |
| 243 | 235 | { | |
| 244 | 236 | if (!isValid()) | |
| … | … | ||
| 263 | 263 | if (!source.isNull() && recreate) { | |
| 264 | 264 | vgImageSubData | |
| 265 | 265 | (vgImage, | |
| 266 | qt_vg_imageBits(source), source.bytesPerLine(), | ||
| 266 | source.constBits(), source.bytesPerLine(), | ||
| 267 | 267 | VG_sARGB_8888_PRE, 0, 0, w, h); | |
| 268 | 268 | } | |
| 269 | 269 | ||
| … | … | ||
| 662 | 662 | if (bitmap) { | |
| 663 | 663 | if (bitmap->Create(TSize(source.width(), source.height()), | |
| 664 | 664 | EColor16MAP) == KErrNone) { | |
| 665 | const uchar *sptr = qt_vg_imageBits(source); | ||
| 665 | const uchar *sptr = source.constBits(); | ||
| 666 | 666 | bitmap->BeginDataAccess(); | |
| 667 | 667 | ||
| 668 | 668 | uchar *dptr = (uchar*)bitmap->DataAddress(); |

