void KivioBaseTargetStencil::paintConnectorTargets( KivioIntraStencilData *pData ) { QPixmap *targetPic; KivioPainter *painter; double x, y; // We don't draw these if we are selected!!! if( isSelected() == true ) return; // Obtain the graphic used for KivioConnectorTargets targetPic = KivioConfig::config()->connectorTargetPixmap(); KoZoomHandler* zoomHandler = pData->zoomHandler; painter = pData->painter; KivioConnectorTarget *pTarget; pTarget = m_pTargets->first(); while( pTarget ) { x = zoomHandler->zoomItX(pTarget->x()); y = zoomHandler->zoomItY(pTarget->y()); painter->drawPixmap( x-3, y-3, *targetPic ); pTarget = m_pTargets->next(); } }
void KivioStencil::paintSelectionHandles( KivioIntraStencilData *pData ) { int newX, newY, newW, newH; // Handle Width //const double HW = 6.0f; //const double HWP1 = HW+1.0f; // Handle Width Over 2 //const double HWo2 = HW/2.0f; KoZoomHandler* zoomHandler = pData->zoomHandler; KivioPainter *painter = pData->painter; newX = zoomHandler->zoomItX(m_x - qRound(lineWidth() / 2)); newY = zoomHandler->zoomItY(m_y - qRound(lineWidth() / 2)); newW = zoomHandler->zoomItX(m_w + lineWidth() + 1); newH = zoomHandler->zoomItY(m_h + lineWidth() + 1); painter->saveState(); painter->setTranslation(newX, newY); rotatePainter(pData); // Rotate the painter if needed painter->drawSelectionBox(QRect(0, 0, newW, newH)); // top left, top right, bottom left, bottom right if( m_pProtection->at( kpWidth ) || m_pProtection->at( kpHeight ) ) { painter->drawHandle( 0, 0, KivioPainter::cpfLock ); painter->drawHandle( newW, 0, KivioPainter::cpfLock ); painter->drawHandle( 0, newH, KivioPainter::cpfLock ); painter->drawHandle( newW, newH, KivioPainter::cpfLock ); } else { painter->drawHandle( 0, 0, 0 ); painter->drawHandle( newW, 0, 0 ); painter->drawHandle( 0, newH, 0 ); painter->drawHandle( newW, newH, 0 ); } // Top/bottom if( m_pProtection->at( kpHeight ) || m_pProtection->at( kpAspect ) ) { painter->drawHandle( newW / 2, 0, KivioPainter::cpfLock ); painter->drawHandle( newW / 2, newH, KivioPainter::cpfLock ); } else { painter->drawHandle( newW / 2, 0, 0 ); painter->drawHandle( newW / 2, newH, 0 ); } // left, right if( m_pProtection->at( kpWidth ) || m_pProtection->at( kpAspect ) ) { painter->drawHandle( 0, newH / 2, KivioPainter::cpfLock ); painter->drawHandle( newW, newH / 2, KivioPainter::cpfLock ); } else { painter->drawHandle( 0, newH / 2, 0 ); painter->drawHandle( newW, newH / 2, 0 ); } painter->restoreState(); }
KoFilter::ConversionStatus ImageExport::convert(const QByteArray& from, const QByteArray& to) { if(from != "application/x-kivio") { return KoFilter::BadMimeType; } QString format; if(to == "image/png") { format = "PNG"; } else if(to == "image/jpeg") { format = "JPEG"; } else if(to == "image/bmp") { format = "BMP"; } else if(to == "image/x-eps") { format = "EPS"; } else if(to == "image/x-portable-bitmap") { format = "PBM"; } else if(to == "image/x-pcx") { format = "PCX"; } else if(to == "image/x-portable-pixmap") { format = "PPM"; } else if(to == "image/x-rgb") { format = "RGB"; } else if(to == "image/x-xpixmap") { format = "XPM"; } else if(to == "image/jpeg2000") { format = "JP2"; } else { return KoFilter::BadMimeType; } KoStoreDevice* storeIn = m_chain->storageFile("root", KoStore::Read); if (!storeIn) { KMessageBox::error(0, i18n("Failed to read data."), i18n( "Export Error" )); return KoFilter::FileNotFound; } // Get the XML tree. QDomDocument domIn; domIn.setContent(storeIn); KivioDoc doc; if(!doc.loadXML(0, domIn)) { KMessageBox::error(0, i18n("Malformed XML data."), i18n("Export Error")); return KoFilter::WrongFormat; } ImageExportDialog dlg; QStringList pageNames; Q3PtrList<KivioPage> pageList = doc.map()->pageList(); Q3PtrListIterator<KivioPage> it(pageList); for(; it.current() != 0; ++it) { pageNames.append(it.current()->pageName()); } KoZoomHandler zoom; dlg.setPageList(pageNames); KivioPage* page = doc.map()->firstPage(); QSize size = QSize(zoom.zoomItX(page->paperLayout().ptWidth), zoom.zoomItY(page->paperLayout().ptHeight)); dlg.setInitialCustomSize(size); if(dlg.exec() != QDialog::Accepted) { return KoFilter::UserCancelled; } page = doc.map()->findPage(dlg.selectedPage()); if(!page) { kDebug() <<"The page named" << dlg.selectedPage() <<" wasn't found!!"; return KoFilter::InternalError; } if(dlg.usePageBorders()) { size = QSize(zoom.zoomItX(page->paperLayout().ptWidth), zoom.zoomItY(page->paperLayout().ptHeight)); } else { size = zoom.zoomSize(page->getRectForAllStencils().size()); } if(dlg.useCustomSize()) { QSize customSize = dlg.customSize(); float zw = (float)customSize.width() / (float)size.width(); float zh = (float)customSize.height() / (float)size.height(); float z = qMin(zw, zh); zoom.setZoomAndResolution(qRound(z * 100), KoGlobal::dpiX(), KoGlobal::dpiY()); size = customSize; } int border = dlg.margin(); size.setWidth(size.width() + (border * 2)); size.setHeight(size.height() + (border * 2)); QPixmap pixmap = QPixmap(size); pixmap.fill(Qt::white); KivioScreenPainter kpainter; kpainter.start(&pixmap); int translationX = border; int translationY = border; if(!dlg.usePageBorders()) { QPoint point = zoom.zoomPoint(page->getRectForAllStencils().topLeft()); translationX += point.x(); translationY += point.y(); } kpainter.setTranslation(-translationX, -translationY); page->printContent(kpainter, &zoom); if(!pixmap.save(m_chain->outputFile(), format.local8Bit())) { return KoFilter::CreationError; } return KoFilter::OK; }