PDA

View Full Version : Fop MiniScribus XSL-FO stable



patrik08
11th October 2007, 19:34
I have release today my first stable QGraphicsView based Projekt... build on QT4.3 it run on MacOSX & Win32 Linux untested.. QGraphicsSceneMouseEvent on linux is not same as mac or win....

Release on http://www.qt-apps.org/content/show.php/Fop+MiniScribus+XSL-Fo?content=67552 on Text Processing


Description:
XSL-FO Fop MiniScribus handle only apache FOP format based file on block-container (Floating Layer) element and is child, and export on pdf postscript , the next release on planing can export xhtml as floating layer ..( <div> each Layer are on QTextDocument )

Features:
- Inline SVG vector images ( instream-foreign-object )
- Read all images supported from QT. Tiff,jpeg,gif,png,ppm, bmp.
-Local or external http://... images ( fo:external-graphic) active on PDF.
- Full support to Table Background color, cell color, spacing , padding,
- Paragraph margin padding and inline formatting from avaiable fonts.
- External link or internal by ID.
- Document can render self or by Apache-fop java, on server or local.

Changelog:
11.10.07 version 0.5.8 / Set table cell / paragraph to default 0 / not 12pt top and 12 bottom space from default QTextDocument Set only selectable active item at top zindex/zvalue on the active QGraphicsScene ( append subclass GraphicsScene) on this case not having intersection problem from Floating Layer.

To not having Intersection Layer i have subclass QGraphicsScene and i filter active only top Zindex / zValue...






/* filter only item a top Zindex / zValue */
bool GraphicsScene::WakeUp( const QPointF incomming )
{
QList<QGraphicsItem *> listing = QGraphicsScene::items(incomming);
qreal thebest = 0; /* zindex on front */
for (int o=0;o<listing.size();o++) {
listing[o]->setSelected(false);
listing[o]->setFlag(QGraphicsItem::ItemIsSelectable,false);
thebest = qMax(listing[o]->zValue(),thebest);
}
/* activate item at top z-index zValue / not the down not visible!!!! */
for (int e=0;e<listing.size();e++) {
if (listing[e]->zValue() == thebest) {
listing[e]->setFlag(QGraphicsItem::ItemIsSelectable,true);
emit SelectOn(listing[e],thebest);
return true;
}
}
return false;
}
void GraphicsScene::mouseDoubleClickEvent ( QGraphicsSceneMouseEvent * event )
{
if (WakeUp(QPointF(event->scenePos().x(),event->scenePos().y()))) {
event->setAccepted ( true ) ;
clearSelection();
}
QGraphicsScene::mouseDoubleClickEvent(event);
}