#include <QFile>
#include <QTextCursor>
+#if QT_VERSION >= 0x040600
+#include <QGraphicsEffect>
+#include <QGraphicsBlurEffect>
+#include <QGraphicsDropShadowEffect>
+#endif
TitleDocument::TitleDocument()
{
default:
continue;
}
+
+ // position
QDomElement pos = doc.createElement("position");
pos.setAttribute("x", item->pos().x());
pos.setAttribute("y", item->pos().y());
e.setAttribute("z-index", item->zValue());
pos.appendChild(tr);
+#if QT_VERSION >= 0x040600
+ // effects
+ QGraphicsEffect *eff = item->graphicsEffect();
+ if (eff) {
+ QGraphicsBlurEffect *blur = static_cast <QGraphicsBlurEffect *>(eff);
+ QDomElement effect = doc.createElement("effect");
+ if (blur) {
+ effect.setAttribute("type", "blur");
+ effect.setAttribute("blurradius", blur->blurRadius());
+ } else {
+ QGraphicsDropShadowEffect *shadow = static_cast <QGraphicsDropShadowEffect *>(eff);
+ if (shadow) {
+ effect.setAttribute("type", "shadow");
+ effect.setAttribute("blurradius", shadow->blurRadius());
+ effect.setAttribute("xoffset", shadow->xOffset());
+ effect.setAttribute("yoffset", shadow->yOffset());
+ }
+ }
+ e.appendChild(effect);
+ }
+#endif
e.appendChild(pos);
e.appendChild(content);
if (zValue > maxZValue) maxZValue = zValue;
gitem->setZValue(zValue);
gitem->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
+
+#if QT_VERSION >= 0x040600
+ // effects
+ QDomNode eff = items.item(i).namedItem("effect");
+ if (!eff.isNull()) {
+ QDomElement e = eff.toElement();
+ if (e.attribute("type") == "blur") {
+ QGraphicsBlurEffect *blur = new QGraphicsBlurEffect();
+ blur->setBlurRadius(e.attribute("blurradius").toInt());
+ gitem->setGraphicsEffect(blur);
+ } else if (e.attribute("type") == "shadow") {
+ QGraphicsDropShadowEffect *shadow = new QGraphicsDropShadowEffect();
+ shadow->setBlurRadius(e.attribute("blurradius").toInt());
+ shadow->setOffset(e.attribute("xoffset").toInt(), e.attribute("yoffset").toInt());
+ gitem->setGraphicsEffect(shadow);
+ }
+ }
}
+#endif
+
if (items.item(i).nodeName() == "background") {
kDebug() << items.item(i).attributes().namedItem("color").nodeValue();
QColor color = QColor(stringToColor(items.item(i).attributes().namedItem("color").nodeValue()));
#include <QTextBlockFormat>
#include <QTextCursor>
+#if QT_VERSION >= 0x040600
+#include <QGraphicsEffect>
+#include <QGraphicsBlurEffect>
+#include <QGraphicsDropShadowEffect>
+#endif
+
int settingUp = false;
const int IMAGEITEM = 7;
connect(itembottom, SIGNAL(clicked()), this, SLOT(itemBottom()));
connect(itemleft, SIGNAL(clicked()), this, SLOT(itemLeft()));
connect(itemright, SIGNAL(clicked()), this, SLOT(itemRight()));
+ connect(effect_list, SIGNAL(currentIndexChanged(int)), this, SLOT(slotAddEffect(int)));
+ connect(blur_radius, SIGNAL(valueChanged(int)), this, SLOT(slotEditBlur(int)));
+ connect(shadow_radius, SIGNAL(valueChanged(int)), this, SLOT(slotEditShadow()));
+ connect(shadow_x, SIGNAL(valueChanged(int)), this, SLOT(slotEditShadow()));
+ connect(shadow_y, SIGNAL(valueChanged(int)), this, SLOT(slotEditShadow()));
+ blur_frame->setHidden(true);
+ shadow_frame->setHidden(true);
connect(origin_x_left, SIGNAL(clicked()), this, SLOT(slotOriginXClicked()));
connect(origin_y_top, SIGNAL(clicked()), this, SLOT(slotOriginYClicked()));
} else m_startViewport->setRect(0, 0, m_frameWidth * 2, m_frameHeight * 2);
}
+void TitleWidget::slotAddEffect(int ix)
+{
+#if QT_VERSION < 0x040600
+ return;
+#else
+ QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
+ QGraphicsEffect *eff = NULL;
+ if (ix == 1) {
+ // Blur effect
+ eff = new QGraphicsBlurEffect();
+ shadow_frame->setHidden(true);
+ blur_frame->setHidden(false);
+ } else if (ix == 2) {
+ eff = new QGraphicsDropShadowEffect();
+ blur_frame->setHidden(true);
+ shadow_frame->setHidden(false);
+ } else {
+ blur_frame->setHidden(true);
+ shadow_frame->setHidden(true);
+ }
+ if (l.size() == 1) {
+ l[0]->setGraphicsEffect(eff);
+ } else delete eff;
+#endif
+}
+
+void TitleWidget::slotEditBlur(int ix)
+{
+#if QT_VERSION < 0x040600
+ return;
+#else
+ QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
+ if (l.size() == 1) {
+ QGraphicsEffect *eff = l[0]->graphicsEffect();
+ QGraphicsBlurEffect *blur = static_cast <QGraphicsBlurEffect *>(eff);
+ if (blur) blur->setBlurRadius(ix);
+ }
+#endif
+}
+
+void TitleWidget::slotEditShadow()
+{
+#if QT_VERSION < 0x040600
+ return;
+#else
+ QList<QGraphicsItem*> l = graphicsView->scene()->selectedItems();
+ if (l.size() == 1) {
+ QGraphicsEffect *eff = l[0]->graphicsEffect();
+ QGraphicsDropShadowEffect *shadow = static_cast <QGraphicsDropShadowEffect *>(eff);
+ if (shadow) {
+ shadow->setBlurRadius(shadow_radius->value());
+ shadow->setOffset(shadow_x->value(), shadow_y->value());
+ }
+ }
+#endif
+}
+
/** \brief Called when accepted, stores the user selections for next time use */
void slotAccepted();
+ void slotAddEffect(int ix);
+ void slotEditBlur(int ix);
+ void slotEditShadow();
};
<rect>
<x>0</x>
<y>0</y>
- <width>736</width>
- <height>566</height>
+ <width>847</width>
+ <height>824</height>
</rect>
</property>
<property name="sizePolicy">
</property>
</widget>
</item>
- <item row="0" column="1">
+ <item row="0" column="2">
<widget class="KRestrictedLine" name="title_duration">
<property name="inputMask">
<string>99:99:99:99; </string>
</property>
</widget>
</item>
- <item row="1" column="0" colspan="2">
+ <item row="1" column="0" colspan="3">
<widget class="Line" name="line_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
- <item row="2" column="1">
+ <item row="2" column="2">
<widget class="KIntSpinBox" name="itemzoom">
<property name="maximum">
<number>100000</number>
</property>
</widget>
</item>
- <item row="3" column="1">
+ <item row="3" column="2">
<widget class="KIntSpinBox" name="itemrotate">
<property name="minimum">
<number>-360</number>
</property>
</widget>
</item>
- <item row="4" column="0" colspan="2">
+ <item row="4" column="0" colspan="3">
<layout class="QGridLayout" name="gridLayout_3">
<item row="0" column="0">
<widget class="QToolButton" name="itemleft">
</item>
</layout>
</item>
- <item row="5" column="0" colspan="2">
+ <item row="9" column="0" colspan="3">
<widget class="QTabWidget" name="tabWidget">
<property name="tabPosition">
<enum>QTabWidget::North</enum>
</widget>
</widget>
</item>
+ <item row="5" column="2">
+ <widget class="QComboBox" name="effect_list">
+ <item>
+ <property name="text">
+ <string>None</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Blur</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Shadow</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ <item row="5" column="0">
+ <widget class="QLabel" name="label_5">
+ <property name="text">
+ <string>Effect</string>
+ </property>
+ </widget>
+ </item>
+ <item row="6" column="0" colspan="3">
+ <widget class="QFrame" name="blur_frame">
+ <property name="frameShape">
+ <enum>QFrame::StyledPanel</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>QFrame::Raised</enum>
+ </property>
+ <layout class="QGridLayout" name="gridLayout_10">
+ <item row="0" column="0">
+ <widget class="QLabel" name="label_6">
+ <property name="text">
+ <string>Radius</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QSlider" name="blur_radius">
+ <property name="pageStep">
+ <number>1</number>
+ </property>
+ <property name="value">
+ <number>5</number>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item row="7" column="0" colspan="3">
+ <widget class="QFrame" name="shadow_frame">
+ <property name="frameShape">
+ <enum>QFrame::StyledPanel</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>QFrame::Raised</enum>
+ </property>
+ <layout class="QGridLayout" name="gridLayout_11">
+ <item row="0" column="0">
+ <widget class="QLabel" name="label_8">
+ <property name="text">
+ <string>Radius</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_9">
+ <property name="text">
+ <string>Color</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1" colspan="2">
+ <widget class="QSlider" name="shadow_radius">
+ <property name="minimum">
+ <number>1</number>
+ </property>
+ <property name="pageStep">
+ <number>1</number>
+ </property>
+ <property name="value">
+ <number>5</number>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="label_10">
+ <property name="text">
+ <string>Offset</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="QSpinBox" name="shadow_x">
+ <property name="value">
+ <number>8</number>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="2">
+ <widget class="QSpinBox" name="shadow_y">
+ <property name="value">
+ <number>8</number>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
</layout>
</widget>
</widget>
</layout>
</widget>
<customwidgets>
- <customwidget>
- <class>KIntSpinBox</class>
- <extends>QSpinBox</extends>
- <header>knuminput.h</header>
- </customwidget>
<customwidget>
<class>KLineEdit</class>
<extends>QLineEdit</extends>
<header>klineedit.h</header>
</customwidget>
+ <customwidget>
+ <class>KIntSpinBox</class>
+ <extends>QSpinBox</extends>
+ <header>knuminput.h</header>
+ </customwidget>
<customwidget>
<class>KColorButton</class>
<extends>QPushButton</extends>