void QBlitterPaintEngine::drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr) { Q_D(QBlitterPaintEngine); bool canDrawOpacity; canDrawOpacity = d->caps.canBlitterDrawPixmapOpacity(pm); if (canDrawOpacity || (d->caps.canBlitterDrawPixmap(r, pm, sr))) { d->unlock(); QRectF targetRect = r; if (d->hasXForm) targetRect = state()->matrix.mapRect(r); const QClipData *clipData = d->clip(); if (clipData) { if (clipData->hasRectClip) { d->clipAndDrawPixmap(clipData->clipRect, targetRect, pm, sr, canDrawOpacity); } else if (clipData->hasRegionClip) { QVector<QRect>rects = clipData->clipRegion.rects(); for (int i = 0; i<rects.size(); ++i) d->clipAndDrawPixmap(rects.at(i), targetRect, pm, sr, canDrawOpacity); } } else { QRectF deviceRect(0, 0, paintDevice()->width(), paintDevice()->height()); d->clipAndDrawPixmap(deviceRect, targetRect, pm, sr, canDrawOpacity); } }else { d->lock(); d->pmData->markRasterOverlay(r); QRasterPaintEngine::drawPixmap(r, pm, sr); } }
inline QwtNullPaintDevice *QwtNullPaintDevice::PaintEngine::nullDevice() { if ( !isActive() ) return NULL; return static_cast<QwtNullPaintDevice *>( paintDevice() ); }
QImage* QS60WindowSurface::buffer(const QWidget *widget) { if (widget->window() != window()) return 0; QPaintDevice *pdev = paintDevice(); if (!pdev) return 0; const QPoint off = offset(widget); QImage *img = &(static_cast<QS60PixmapData *>(d_ptr->device.data_ptr().data())->image); QRect rect(off, widget->size()); rect &= QRect(QPoint(), img->size()); if (rect.isEmpty()) return 0; img = new QImage(img->scanLine(rect.y()) + rect.x() * img->depth() / 8, rect.width(), rect.height(), img->bytesPerLine(), img->format()); d_ptr->bufferImages.append(img); return img; }
void ImageBufferDataPrivateUnaccelerated::platformTransformColorSpace(const Vector<int>& lookUpTable) { QPainter* painter = paintDevice()->paintEngine()->painter(); bool isPainting = painter->isActive(); if (isPainting) painter->end(); QImage image = toQImage().convertToFormat(QImage::Format_ARGB32); ASSERT(!image.isNull()); uchar* bits = image.bits(); const int bytesPerLine = image.bytesPerLine(); for (int y = 0; y < m_pixmap.height(); ++y) { quint32* scanLine = reinterpret_cast_ptr<quint32*>(bits + y * bytesPerLine); for (int x = 0; x < m_pixmap.width(); ++x) { QRgb& pixel = scanLine[x]; pixel = qRgba(lookUpTable[qRed(pixel)], lookUpTable[qGreen(pixel)], lookUpTable[qBlue(pixel)], qAlpha(pixel)); } } m_pixmap = QPixmap::fromImage(image); if (isPainting) painter->begin(&m_pixmap); }
void ImageBufferDataPrivateAccelerated::platformTransformColorSpace(const Vector<int>& lookUpTable) { QPainter* painter = paintDevice()->paintEngine()->painter(); QImage image = toQImage().convertToFormat(QImage::Format_ARGB32); ASSERT(!image.isNull()); uchar* bits = image.bits(); const int bytesPerLine = image.bytesPerLine(); for (int y = 0; y < image.height(); ++y) { quint32* scanLine = reinterpret_cast_ptr<quint32*>(bits + y * bytesPerLine); for (int x = 0; x < image.width(); ++x) { QRgb& pixel = scanLine[x]; pixel = qRgba(lookUpTable[qRed(pixel)], lookUpTable[qGreen(pixel)], lookUpTable[qBlue(pixel)], qAlpha(pixel)); } } painter->save(); painter->resetTransform(); painter->setOpacity(1.0); painter->setClipping(false); painter->setCompositionMode(QPainter::CompositionMode_Source); // Should coordinates be flipped? painter->drawImage(QPoint(0,0), image); painter->restore(); }
/*! Returns a QImage pointer which represents the actual buffer the \a widget is drawn into or 0 if this is unavailable. You must call beginPaint() before you call this function and the returned pointer is only valid until endPaint() is called. */ QImage* QWindowSurface::buffer(const QWidget *widget) { if (widget->window() != window()) return 0; QPaintDevice *pdev = paintDevice(); if (!pdev || pdev->devType() != QInternal::Image) return 0; const QPoint off = offset(widget); QImage *img = static_cast<QImage*>(pdev); QRect rect(off, widget->size()); rect &= QRect(QPoint(), img->size()); if (rect.isEmpty()) return 0; img = new QImage(img->scanLine(rect.y()) + rect.x() * img->depth() / 8, rect.width(), rect.height(), img->bytesPerLine(), img->format()); d_ptr->bufferImages.append(img); return img; }
void CUpnpBrowserGui::updateDeviceSelection(int newpos) { if((int) m_selecteddevice != newpos) { int prev_selected = m_selecteddevice; unsigned int oldliststart = m_deviceliststart; m_selecteddevice = newpos; m_deviceliststart = (m_selecteddevice/m_listmaxshow)*m_listmaxshow; if (oldliststart != m_deviceliststart) paintDevices(); else { paintDevice(prev_selected - m_deviceliststart); paintDevice(m_selecteddevice - m_deviceliststart); } } }
void QTraceWindowSurface::beginPaint(const QRegion &rgn) { // ensure paint buffer is created paintDevice(); buffer->beginNewFrame(); QRasterWindowSurface::beginPaint(rgn); }
void QUnifiedToolbarSurface::renderToolbar(QWidget *widget, bool forceFlush) { QWidget *toolbar = widget->d_func()->toolbar_ancestor; updateToolbarOffset(toolbar); QRect beginPaintRect(toolbar->d_func()->toolbar_offset.x(), toolbar->d_func()->toolbar_offset.y(), toolbar->geometry().width(), toolbar->geometry().height()); QRegion beginPaintRegion(beginPaintRect); beginPaint(beginPaintRegion); toolbar->render(paintDevice(), toolbar->d_func()->toolbar_offset, QRegion(toolbar->geometry()), QWidget::DrawChildren); toolbar->d_func()->flushRequested = true; if (forceFlush) flush(toolbar); }
void KisBrush::generateBoundary() const { KisFixedPaintDeviceSP dev; if (brushType() == IMAGE || brushType() == PIPE_IMAGE) { dev = paintDevice(KoColorSpaceRegistry::instance()->rgb8(), 1.0 / scale(), -angle(), KisPaintInformation()); } else { const KoColorSpace* cs = KoColorSpaceRegistry::instance()->rgb8(); dev = new KisFixedPaintDevice(cs); mask(dev, KoColor(Qt::black, cs) , 1.0 / scale(), 1.0 / scale(), -angle(), KisPaintInformation()); } d->boundary = new KisBoundary(dev); d->boundary->generateBoundary(); }
void CUpnpBrowserGui::paintDevices() { std::string tmp; int ypos, top; // LCD CVFD::getInstance()->setMode(CVFD::MODE_MENU_UTF8, "Select UPnP Device"); // Head CComponentsHeaderLocalized header(m_x, m_y + m_title_height, m_width, m_theight, LOCALE_UPNPBROWSER_HEAD, NEUTRINO_ICON_UPNP); if (CNeutrinoApp::getInstance()->isMuted()) header.addContextButton(NEUTRINO_ICON_BUTTON_MUTE_SMALL); header.paint(CC_SAVE_SCREEN_NO); // Items for (unsigned int count=0; count<m_listmaxshow; count++) paintDevice(count); ypos = m_y + m_title_height + m_theight; int sb = m_fheight * m_listmaxshow; m_frameBuffer->paintBoxRel(m_x + m_width - 15, ypos, 15, sb, COL_MENUCONTENT_PLUS_1); int sbc = ((m_devices.size() - 1) / m_listmaxshow) + 1; int sbs = ((m_selecteddevice) / m_listmaxshow); m_frameBuffer->paintBoxRel(m_x + m_width - 13, ypos + 2 + sbs*(sb-4)/sbc, 11, (sb-4)/sbc, COL_MENUCONTENT_PLUS_3); // Foot top = m_y + (m_height - m_info_height - 2 * m_buttonHeight); m_frameBuffer->paintBoxRel(m_x, top, m_width, m_buttonHeight+2, COL_INFOBAR_SHADOW_PLUS_1, RADIUS_LARGE, CORNER_BOTTOM); // m_frameBuffer->paintHLine(m_x, m_x + m_width, top, COL_INFOBAR_SHADOW_PLUS_0); ::paintButtons(m_x, top, 0, 1, &RescanButton, m_width, m_buttonHeight); paintItem2DetailsLine (-1); // clear it }
void CUpnpBrowserGui::selectDevice() { bool loop = true; bool changed = true; neutrino_msg_t msg; neutrino_msg_data_t data; CHintBox *scanBox = new CHintBox(LOCALE_MESSAGEBOX_INFO, g_Locale->getText(LOCALE_UPNPBROWSER_SCANNING)); // UTF-8 scanBox->paint(); #if 0 try { m_devices = m_socket->Discover("urn:schemas-upnp-org:service:ContentDirectory:1"); } catch (std::runtime_error error) { delete scanBox; ShowMsgUTF(LOCALE_MESSAGEBOX_INFO, error.what(), CMessageBox::mbrBack, CMessageBox::mbBack, "info.raw"); return; } #endif m_devices = m_socket->Discover("urn:schemas-upnp-org:service:ContentDirectory:1"); scanBox->hide(); if (!m_devices.size()) { ShowLocalizedMessage(LOCALE_MESSAGEBOX_INFO, LOCALE_UPNPBROWSER_NOSERVERS, CMessageBox::mbrBack, CMessageBox::mbBack, NEUTRINO_ICON_UPDATE); delete scanBox; return; } // control loop while (loop) { if (changed) { paintDevice(); changed=false; } g_RCInput->getMsg(&msg, &data, 10); // 1 sec timeout to update play/stop state display neutrino_msg_t msg_repeatok = msg & ~CRCInput::RC_Repeat; if( msg == CRCInput::RC_timeout) { // nothing } else if( msg == CRCInput::RC_home) { loop = false; } else if (msg_repeatok == CRCInput::RC_up && m_selecteddevice > 0) { m_selecteddevice--; if (m_selecteddevice < m_indexdevice) m_indexdevice-=m_listmaxshow; changed = true; } else if (msg_repeatok == CRCInput::RC_down && m_selecteddevice + 1 < m_devices.size()) { m_selecteddevice++; if (m_selecteddevice + 1 > m_indexdevice + m_listmaxshow) m_indexdevice+=m_listmaxshow; changed=true; } else if( msg == CRCInput::RC_right || msg == CRCInput::RC_ok) { m_folderplay = false; selectItem("0"); changed=true; } else if( msg == CRCInput::RC_blue) { scanBox->paint(); #if 0 try { m_devices = m_socket->Discover("urn:schemas-upnp-org:service:ContentDirectory:1"); } catch (std::runtime_error error) { delete scanBox; ShowMsgUTF(LOCALE_MESSAGEBOX_INFO, error.what(), CMessageBox::mbrBack, CMessageBox::mbBack, "info.raw"); return; } #endif m_devices = m_socket->Discover("urn:schemas-upnp-org:service:ContentDirectory:1"); scanBox->hide(); if (!m_devices.size()) { ShowLocalizedMessage(LOCALE_MESSAGEBOX_INFO, LOCALE_UPNPBROWSER_NOSERVERS, CMessageBox::mbrBack, CMessageBox::mbBack, NEUTRINO_ICON_UPDATE); delete scanBox; return; } changed=true; } else if(msg == NeutrinoMessages::RECORD_START || msg == NeutrinoMessages::ZAPTO || msg == NeutrinoMessages::STANDBY_ON || msg == NeutrinoMessages::SHUTDOWN || msg == NeutrinoMessages::SLEEPTIMER) { loop=false; g_RCInput->postMsg(msg, data); } else if(msg == NeutrinoMessages::EVT_TIMER) { CNeutrinoApp::getInstance()->handleMsg( msg, data ); } else { if( CNeutrinoApp::getInstance()->handleMsg( msg, data ) & messages_return::cancel_all ) loop = false; changed=true; } #ifdef FB_BLIT m_frameBuffer->blit();//FIXME #endif } delete scanBox; }