Version: (using KDE Devel) Installed from: Compiled sources OS: Linux I open a .ps file (http://www.staerk.de/files/graph.ps) with karbon and try to save it as .tif file. I get a crash with the following backtrace: Using host libthread_db library "/lib/tls/libthread_db.so.1". `system-supplied DSO at 0xffffe000' has disappeared; keeping its symbols. [Thread debugging using libthread_db enabled] [New Thread 1106558432 (LWP 27521)] [KCrash handler] #6 0x41556151 in QPixmap::convertToImage () from /usr/lib/qt3/lib/libqt-mt.so.3 #7 0x405570cc in KoDocument::generatePreview (this=0x819ddd0, size=@0xbfb3a824) at /root/svn/koffice/lib/kofficecore/KoDocument.cpp:1257 #8 0x40556b05 in KoDocument::savePreview (this=0x819ddd0, store=0x8dda550) at /root/svn/koffice/lib/kofficecore/KoDocument.cpp:1203 #9 0x4055d661 in KoDocument::saveNativeFormat (this=0x819ddd0, file=@0xbfb3aaa8) at /root/svn/koffice/lib/kofficecore/KoDocument.cpp:1106 #10 0x40584b99 in KoFilterChain::inputFileHelper (this=0x8c0d388, document=0x819ddd0, alternativeFile=@0xbfb3aaf0) at /root/svn/koffice/lib/kofficecore/KoFilterChain.cpp:456 #11 0x40584dac in KoFilterChain::inputFile (this=0x8c0d388) at /root/svn/koffice/lib/kofficecore/KoFilterChain.cpp:197 #12 0x40587597 in KoFilterChain::storageFile (this=0x8c0d388, name=@0xbfb3ad1c, mode=Read) at /root/svn/koffice/lib/kofficecore/KoFilterChain.cpp:250 #13 0x426c49b2 in PngExport::convert (this=0x9104b60, from=@0x9104070, to=@0x9104078) at /root/svn/koffice/filters/karbon/png/pngexport.cc:58 #14 0x405863e6 in KoFilterChain::ChainLink::invokeFilter (this=0x9104068, parentChainLink=0x0) at /root/svn/koffice/lib/kofficecore/KoFilterChain.cpp:66 #15 0x405864d5 in KoFilterChain::invokeChain (this=0x8c0d388) at /root/svn/koffice/lib/kofficecore/KoFilterChain.cpp:150 #16 0x4056e327 in KoFilterManager::exp0rt (this=0x820e010, url=@0x819de38, mimeType=@0xbfb3b0f4) at /root/svn/koffice/lib/kofficecore/KoFilterManager.cpp:302 #17 0x40561a1a in KoDocument::saveFile (this=0x819ddd0) at /root/svn/koffice/lib/kofficecore/KoDocument.cpp:421 #18 0x408b6179 in KParts::ReadWritePart::save (this=0x819ddd0) at /root/svn/kdelibs/kparts/part.cpp:547 #19 0x408b635b in KParts::ReadWritePart::saveAs (this=0x819ddd0, kurl=@0xbfb3b3b0) at /root/svn/kdelibs/kparts/part.cpp:566 #20 0x4057d38f in KoMainWindow::saveDocument (this=0x81b2830, saveas=true, silent=false) at /root/svn/koffice/lib/kofficecore/KoMainWindow.cpp:901 #21 0x40575bbb in KoMainWindow::slotFileSaveAs (this=0x81b2830) at /root/svn/koffice/lib/kofficecore/KoMainWindow.cpp:1148 #22 0x4057ab69 in KoMainWindow::qt_invoke (this=0x81b2830, _id=81, _o=0xbfb3b6a8) at KoMainWindow.moc:179 #23 0x41600589 in QObject::activate_signal () from /usr/lib/qt3/lib/libqt-mt.so.3 #24 0x41600a30 in QObject::activate_signal () from /usr/lib/qt3/lib/libqt-mt.so.3 #25 0x40e288a5 in KAction::activated (this=0x81c3ff0) at kaction.moc:176 #26 0x40e296f1 in KAction::slotActivated (this=0x81c3ff0) at /root/svn/kdelibs/kdeui/kaction.cpp:1102 #27 0x40e2c91f in KAction::slotPopupActivated (this=0x81c3ff0) at /root/svn/kdelibs/kdeui/kaction.cpp:1129 #28 0x40e2ccab in KAction::qt_invoke (this=0x81c3ff0, _id=16, _o=0xbfb3b834) at kaction.moc:219 #29 0x41600589 in QObject::activate_signal () from /usr/lib/qt3/lib/libqt-mt.so.3 #30 0x41940c82 in QSignal::signal () from /usr/lib/qt3/lib/libqt-mt.so.3 #31 0x4161d35b in QSignal::activate () from /usr/lib/qt3/lib/libqt-mt.so.3 #32 0x417065c8 in QPopupMenu::mouseReleaseEvent () from /usr/lib/qt3/lib/libqt-mt.so.3 #33 0x40e16e53 in KPopupMenu::mouseReleaseEvent (this=0x8225290, e=0xbfb3bdb4) at /root/svn/kdelibs/kdeui/kpopupmenu.cpp:508 #34 0x4163a398 in QWidget::event () from /usr/lib/qt3/lib/libqt-mt.so.3 #35 0x415a0d61 in QApplication::internalNotify () from /usr/lib/qt3/lib/libqt-mt.so.3 #36 0x415a1ec8 in QApplication::notify () from /usr/lib/qt3/lib/libqt-mt.so.3 #37 0x411154d0 in KApplication::notify (this=0xbfb3c144, receiver=0x8225290, event=0xbfb3bdb4) at /root/svn/kdelibs/kdecore/kapplication.cpp:550 #38 0x4153c080 in QETWidget::translateMouseEvent () from /usr/lib/qt3/lib/libqt-mt.so.3 #39 0x4153aa9b in QApplication::x11ProcessEvent () from /usr/lib/qt3/lib/libqt-mt.so.3 #40 0x4154eb7a in QEventLoop::processEvents () from /usr/lib/qt3/lib/libqt-mt.so.3 #41 0x415b7c73 in QEventLoop::enterLoop () from /usr/lib/qt3/lib/libqt-mt.so.3 #42 0x415b7b56 in QEventLoop::exec () from /usr/lib/qt3/lib/libqt-mt.so.3 #43 0x415a06af in QApplication::exec () from /usr/lib/qt3/lib/libqt-mt.so.3 #44 0x40019147 in kdemain (argc=2, argv=0xbfb3c2c4) at /root/svn/koffice/karbon/main.cc:46 #45 0x080487d2 in main (argc=2, argv=0xbfb3c2c4) at kdeinit_karbon.cpp:2
Created attachment 19459 [details] the ps file I am trying to convert
SVN commit 628943 by jaham: * fix the png export by using the vcomputeboundingbox visitor to calculate the documents bounding box * do not consider deleted objects when computing the bounding box This fixes bug 140790 because when exporting to tiff the filter chain exports to png first and then uses a krita filter to convert to tiff. BUG:140790 M +6 -21 filters/karbon/png/pngexport.cc M +6 -0 karbon/visitors/vcomputeboundingbox.cc --- branches/koffice/1.6/koffice/filters/karbon/png/pngexport.cc #628942:628943 @@ -34,6 +34,7 @@ #include "vselection.h" #include "vkopainter.h" #include "vlayer.h" +#include "vcomputeboundingbox.h" #include <kdebug.h> @@ -67,20 +68,11 @@ VDocument doc; doc.load( docNode ); - VLayerListIterator layerItr( doc.layers() ); - VLayer *currentLayer; + // calculate the documents bounding box + VComputeBoundingBox bbox( true ); + doc.accept( bbox ); + const KoRect &rect = bbox.boundingRect(); - for( ; currentLayer = layerItr.current(); ++layerItr ) - { - if( currentLayer->state() == VObject::normal || currentLayer->state() == VObject::normal_locked || currentLayer->state() == VObject::selected ) - { - doc.selection()->append(currentLayer->objects()); - } - } - - // get the bounding box of all selected objects: - const KoRect& rect = doc.selection()->boundingBox(); - // create image with correct width and height QImage img( int( rect.width() ), int( rect.height() ), 32 ); //img.setAlphaBuffer( true ); @@ -89,16 +81,9 @@ VKoPainter p( img.bits(), rect.width(), rect.height() ); p.clear( qRgba( 0xFF, 0xFF, 0xFF, 0xFF ) ); p.setWorldMatrix( QWMatrix().translate( -rect.x(), -rect.y() ) ); - VObjectList objects = doc.selection()->objects(); - VObjectListIterator itr = objects; - // we dont need the selection anymore: - doc.selection()->clear(); + doc.draw( &p, &rect ); - // paint shapes over image - for ( ; itr.current(); ++itr ) - itr.current()->draw( &p, &rect ); - QImage image = img.swapRGB(); QImage mirrored = image.mirror( false, true ); // save png --- branches/koffice/1.6/koffice/karbon/visitors/vcomputeboundingbox.cc #628942:628943 @@ -38,6 +38,8 @@ for( ; itr.current(); ++itr ) { + if( itr.current()->state() == VObject::deleted ) + continue; // do not use hidden layers if( m_omitHidden && ! isVisible( itr.current() ) ) continue; @@ -52,6 +54,8 @@ for( ; itr.current(); ++itr ) { + if( itr.current()->state() == VObject::deleted ) + continue; // do not export hidden objects if( m_omitHidden && ! isVisible( itr.current() ) ) continue; @@ -66,6 +70,8 @@ for( ; itr.current(); ++itr ) { + if( itr.current()->state() == VObject::deleted ) + continue; // do not use hidden child objects if( m_omitHidden && ! isVisible( itr.current() ) ) continue;
Cool reaction time, correct solution.