\n");
//Render the objects in each section
- for (int i = 0; i < section->primitives(); i++) {
+ for (int i = 0; i < section->primitiveCount(); i++) {
OROPrimitive * prim = section->primitive(i);
//kreportDebug() << "Got object type" << prim->type();
- if (prim->type() == OROTextBox::TextBox) {
- OROTextBox * tb = (OROTextBox*) prim;
+ if (dynamic_cast
(prim)) {
+ OROTextBox * tb = dynamic_cast(prim);
QColor bg = tb->textStyle().backgroundColor;
style = QLatin1String("position: absolute; ") +
QLatin1String("background-color: ") + QString::fromLatin1("rgba(%1,%2,%3,%4)")
.arg(bg.red())
.arg(bg.green())
.arg(bg.blue())
.arg(0.01 * tb->textStyle().backgroundOpacity) +QLatin1String( "; ") +
QLatin1String("top: ") + QString::number(tb->position().y()) + QLatin1String("pt; ") +
QLatin1String("left: ") + QString::number(tb->position().x()) + QLatin1String("pt; ") +
QLatin1String("font-size: ") + QString::number(tb->textStyle().font.pointSize()) + QLatin1String("pt; ") +
QLatin1String("color: ") + tb->textStyle().foregroundColor.name() + QLatin1String("; ") +
QLatin1String("width: ") + QString::number(tb->size().width()) + QLatin1String("px;") +
QLatin1String("height: ") + QString::number(tb->size().height()) + QLatin1String("px;") ;
//! @todo opaque text + translucent background
//it looks a pain to implement
//http://developer.mozilla.org/en/docs/Useful_CSS_tips:Color_and_Background
//style += "filter:alpha(opacity=" + QString::number((tb->textStyle().bgOpacity / 255) * 100) + ");"; //ie opacity
//style += "opacity: " + QString::number(tb->textStyle().bgOpacity / 255.0) + ";";
if (!styles.contains(style)) {
styles << style;
}
styleindex = styles.indexOf(style);
body += QLatin1String("") +
tb->text() +
QLatin1String("
\n");
- } else if (prim->type() == OROImage::Image) {
+ } else if (dynamic_cast(prim)) {
//kreportDebug() << "Saving an image";
- OROImage * im = (OROImage*) prim;
+ OROImage * im = dynamic_cast(prim);
style = QLatin1String("position: absolute; ") +
QLatin1String("top: ") + QString::number(im->position().y()) + QLatin1String("pt; ") +
QLatin1String("left: ") + QString::number(im->position().x()) + QLatin1String("pt; ");
if (!styles.contains(style)) {
styles << style;
}
styleindex = styles.indexOf(style);
body += QLatin1String("") +
QLatin1String("
size().width()) + QLatin1String("px") + QLatin1String("\" height=\"") + QString::number(im->size().height()) + QLatin1String("px") + QLatin1String("\" src=\"./") + m_actualDirName + QLatin1String("/object") + QString::number(s) + QString::number(i) + QLatin1String(".png\">") +
QLatin1String("
\n");
im->image().save(m_tempDirName + QLatin1String("/object") + QString::number(s) + QString::number(i) + QLatin1String(".png"));
- } else if (prim->type() == OROPicture::Picture) {
+ } else if (dynamic_cast(prim)) {
//kreportDebug() << "Saving a picture";
- OROPicture * im = (OROPicture*) prim;
+ OROPicture * im = dynamic_cast(prim);
style = QLatin1String("position: absolute; ") +
QLatin1String("top: ") + QString::number(im->position().y()) + QLatin1String("pt; ") +
QLatin1String("left: ") + QString::number(im->position().x()) + QLatin1String("pt; ");
if (!styles.contains(style)) {
styles << style;
}
styleindex = styles.indexOf(style);
body += QLatin1String("") +
QLatin1String("
size().width()) + QLatin1String("px") + QLatin1String("\" height=\"") + QString::number(im->size().height()) + QLatin1String("px") + QLatin1String("\" src=\"./") + m_actualDirName + QLatin1String("/object") + QString::number(s) + QString::number(i) + QLatin1String(".png\">") +
QLatin1String("
\n");
QImage image(im->size().toSize(), QImage::Format_RGB32);
QPainter painter(&image);
im->picture()->play(&painter);
image.save(m_tempDirName + QLatin1String("/object") + QString::number(s) + QString::number(i) + QLatin1String(".png"));
} else {
- kreportWarning() << "unrecognized primitive type" << prim->type();
+ kreportWarning() << "unrecognized primitive type";
}
}
body += QLatin1String(" \n");
}
}
//! @todo add option for creating separate css file
html = QLatin1String("\n"
"\n"
"\n"
"\n") +
QLatin1String("