bool QDirectFbBlitterPlatformPixmap::fromDataBufferDescription(const DFBDataBufferDescription &dataBufferDescription) { DFBResult result; IDirectFB *dfb = QDirectFbConvenience::dfbInterface(); // Create a data buffer QDirectFBPointer<IDirectFBDataBuffer> dataBuffer; result = dfb->CreateDataBuffer(dfb, &dataBufferDescription, dataBuffer.outPtr()); if (result != DFB_OK) { DirectFBError(QDFB_PRETTY, result); return false; } // Create the image provider QDirectFBPointer<IDirectFBImageProvider> provider; result = dataBuffer->CreateImageProvider(dataBuffer.data(), provider.outPtr()); if (result != DFB_OK) { DirectFBError(QDFB_PRETTY, result); return false; } // Extract image information DFBImageDescription imageDescription; result = provider->GetImageDescription(provider.data(), &imageDescription); if (result != DFB_OK) { DirectFBError(QDFB_PRETTY, result); return false; } // Can we handle this directlu? if (imageDescription.caps & DICAPS_COLORKEY) return false; DFBSurfaceDescription surfaceDescription; result = provider->GetSurfaceDescription(provider.data(), &surfaceDescription); if (result != DFB_OK) { DirectFBError(QDFB_PRETTY, result); return false; } m_alpha = imageDescription.caps & DICAPS_ALPHACHANNEL; resize(surfaceDescription.width, surfaceDescription.height); // TODO: FIXME; update d result = provider->RenderTo(provider.data(), dfbBlitter()->dfbSurface(), 0); if (result != DFB_OK) { DirectFBError(QDFB_PRETTY, result); return false; } return true; }
inline QPoint QDirectFbInput::globalPoint(const DFBEvent &event) const { QDirectFBPointer<IDirectFBWindow> window; m_dfbDisplayLayer->GetWindow(m_dfbDisplayLayer, event.window.window_id, window.outPtr()); int x,y; window->GetPosition(window.data(), &x, &y); return QPoint(event.window.cx +x, event.window.cy + y); }
void QDirectFbWindow::setVisible(bool visible) { if (visible) { int x = geometry().x(); int y = geometry().y(); m_dfbWindow->MoveTo(m_dfbWindow.data(), x, y); } else { QDirectFBPointer<IDirectFBDisplayLayer> displayLayer; QDirectFbConvenience::dfbInterface()->GetDisplayLayer(QDirectFbConvenience::dfbInterface(), DLID_PRIMARY, displayLayer.outPtr()); DFBDisplayLayerConfig config; displayLayer->GetConfiguration(displayLayer.data(), &config); m_dfbWindow->MoveTo(m_dfbWindow.data(), config. width + 1, config.height + 1); } }