本文整理汇总了C++中mlt::GeometryItem::h方法的典型用法代码示例。如果您正苦于以下问题:C++ GeometryItem::h方法的具体用法?C++ GeometryItem::h怎么用?C++ GeometryItem::h使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类mlt::GeometryItem
的用法示例。
在下文中一共展示了GeometryItem::h方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: slotPositionChanged
void Geometryval::slotPositionChanged(int pos, bool seek)
{
if (seek && KdenliveSettings::transitionfollowcursor()) emit seekToPos(pos);
m_ui.spinPos->setValue(pos);
m_helper->setValue(pos);
Mlt::GeometryItem item;
int error = m_geom->fetch(&item, pos);
if (error || item.key() == false) {
// no keyframe under cursor, adjust buttons
m_ui.buttonAdd->setEnabled(true);
m_ui.buttonDelete->setEnabled(false);
m_ui.widget->setEnabled(false);
m_ui.spinTransp->setEnabled(false);
m_scaleMenu->setEnabled(false);
m_alignMenu->setEnabled(false);
} else {
m_ui.buttonAdd->setEnabled(false);
m_ui.buttonDelete->setEnabled(true);
m_ui.widget->setEnabled(true);
m_ui.spinTransp->setEnabled(true);
m_scaleMenu->setEnabled(true);
m_alignMenu->setEnabled(true);
}
m_paramRect->setPos(item.x(), item.y());
m_paramRect->setRect(0, 0, item.w(), item.h());
m_ui.spinTransp->setValue(item.mix());
m_paramRect->setBrush(QColor(255, 0, 0, item.mix()));
}
示例2: setupParam
void Geometryval::setupParam(const QDomElement par, int minFrame, int maxFrame)
{
QString val = par.attribute("value");
if (par.attribute("fixed") == "1") {
m_fixedMode = true;
buttonPrevious->setHidden(true);
buttonNext->setHidden(true);
buttonDelete->setHidden(true);
buttonAdd->setHidden(true);
spinTransp->setMaximum(500);
label_pos->setHidden(true);
m_helper->setHidden(true);
m_timePos.setHidden(true);
}
if (par.attribute("opacity") == "false") {
label_opacity->setHidden(true);
spinTransp->setHidden(true);
}
if (m_geom)
m_geom->parse(val.toUtf8().data(), maxFrame - minFrame, m_profile->width(), m_profile->height());
else
m_geom = new Mlt::Geometry(val.toUtf8().data(), maxFrame - minFrame, m_profile->width(), m_profile->height());
////qDebug() << " / / UPDATING TRANSITION VALUE: " << m_geom->serialise();
//read param her and set rect
if (!m_fixedMode) {
m_helper->setKeyGeometry(m_geom, maxFrame - minFrame - 1);
m_helper->update();
/*QDomDocument doc;
doc.appendChild(doc.importNode(par, true));
//qDebug() << "IMPORTED TRANS: " << doc.toString();*/
if (m_path == NULL) {
m_path = new QGraphicsPathItem();
m_path->setPen(QPen(Qt::red));
m_scene->addItem(m_path);
}
updateTransitionPath();
}
Mlt::GeometryItem item;
m_geom->fetch(&item, 0);
delete m_paramRect;
m_paramRect = new QGraphicsRectItem(QRectF(0, 0, item.w() * m_dar, item.h()));
m_paramRect->setPos(item.x() * m_dar, item.y());
m_paramRect->setZValue(0);
m_paramRect->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
m_paramRect->setPen(QPen(QBrush(QColor(255, 0, 0, 255)), 1.0));
m_scene->addItem(m_paramRect);
slotPositionChanged(0, false);
slotUpdateGeometry();
if (!m_fixedMode) {
m_timePos.setRange(0, maxFrame - minFrame - 1);
connect(&m_timePos, SIGNAL(timeCodeEditingFinished()), this , SLOT(slotPositionChanged()));
}
connect(spinTransp, SIGNAL(valueChanged(int)), this , SLOT(slotTransparencyChanged(int)));
}
示例3: updateTransitionPath
void Geometryval::updateTransitionPath()
{
if (m_fixedMode) return;
Mlt::GeometryItem item;
int pos = 0;
int counter = 0;
QPainterPath path;
while (true) {
if (m_geom->next_key(&item, pos) == 1) break;
pos = item.frame();
if (counter == 0) {
path.moveTo(item.x() * m_dar + item.w() * m_dar / 2, item.y() + item.h() / 2);
} else {
path.lineTo(item.x() * m_dar + item.w() * m_dar / 2, item.y() + item.h() / 2);
}
counter++;
pos++;
}
m_path->setPath(path);
}
示例4: setupParam
void Geometryval::setupParam(const QDomElement& par, int minFrame, int maxFrame)
{
m_param = par;
QString val = par.attribute("value");
if (par.attribute("fixed") == "1") {
m_fixedMode = true;
m_ui.buttonPrevious->setHidden(true);
m_ui.buttonNext->setHidden(true);
m_ui.buttonDelete->setHidden(true);
m_ui.buttonAdd->setHidden(true);
m_ui.spinTransp->setMaximum(500);
m_ui.label_pos->setHidden(true);
m_helper->setHidden(true);
m_ui.spinPos->setHidden(true);
}
char *tmp = (char *) qstrdup(val.toUtf8().data());
if (m_geom) m_geom->parse(tmp, maxFrame - minFrame, m_profile.width, m_profile.height);
else m_geom = new Mlt::Geometry(tmp, maxFrame - minFrame, m_profile.width, m_profile.height);
delete[] tmp;
//kDebug() << " / / UPDATING TRANSITION VALUE: " << m_geom->serialise();
//read param her and set rect
if (!m_fixedMode) {
m_helper->setKeyGeometry(m_geom, maxFrame - minFrame - 1);
m_helper->update();
/*QDomDocument doc;
doc.appendChild(doc.importNode(par, true));
kDebug() << "IMPORTED TRANS: " << doc.toString();*/
m_ui.spinPos->setMaximum(maxFrame - minFrame - 1);
if (m_path == NULL) {
m_path = new QGraphicsPathItem();
m_path->setPen(QPen(Qt::red));
m_scene->addItem(m_path);
}
updateTransitionPath();
}
Mlt::GeometryItem item;
m_geom->fetch(&item, 0);
delete m_paramRect;
m_paramRect = new QGraphicsRectItem(QRectF(0, 0, item.w(), item.h()));
m_paramRect->setPos(item.x(), item.y());
m_paramRect->setZValue(0);
m_paramRect->setPen(QPen(QBrush(QColor(255, 0, 0, 255)), 1.0));
m_scene->addItem(m_paramRect);
slotPositionChanged(0, false);
if (!m_fixedMode) {
connect(m_ui.spinPos, SIGNAL(valueChanged(int)), this , SLOT(slotPositionChanged(int)));
}
示例5: mousePressEvent
// virtual
void KeyframeHelper::mousePressEvent(QMouseEvent * event)
{
m_hoverKeyframe = -1;
if (event->button() != Qt::LeftButton) {
QWidget::mousePressEvent(event);
return;
}
int xPos = event->x() - margin;
int headOffset = m_lineHeight / 1.5;
if (m_geom != NULL && (event->y() <= headOffset)) {
// check if we want to move a keyframe
int mousePos = qMax((int)(xPos / m_scale), 0) + m_offset;
Mlt::GeometryItem item;
if (m_geom->next_key(&item, mousePos) == 0) {
if (qAbs((item.frame() - m_offset)* m_scale - xPos) < headOffset) {
m_movingItem.x(item.x());
m_movingItem.y(item.y());
m_movingItem.w(item.w());
m_movingItem.h(item.h());
m_movingItem.mix(item.mix());
m_movingItem.frame(item.frame());
while (!m_extraMovingItems.isEmpty()) {
Mlt::GeometryItem *gitem = m_extraMovingItems.takeFirst();
if (gitem) delete gitem;
}
for (int i = 0; i < m_extraGeometries.count(); ++i) {
if (m_extraGeometries.at(i)->next_key(item, mousePos) == 0) {
Mlt::GeometryItem *item2 = new Mlt::GeometryItem();
item2->x(item.x());
item2->frame(item.frame());
m_extraMovingItems.append(item2);
} else {
m_extraMovingItems.append(NULL);
}
}
m_dragStart = event->pos();
return;
}
}
}
int seekRequest = xPos / m_scale;
if (seekRequest != m_position) {
m_seekPosition = seekRequest;
emit requestSeek(m_seekPosition);
update();
}
}
示例6: slotUpdateTransitionProperties
void Geometryval::slotUpdateTransitionProperties()
{
int pos = m_timePos.getValue();
Mlt::GeometryItem item;
int error = m_geom->next_key(&item, pos);
if (error || item.frame() != pos) {
// no keyframe under cursor
return;
}
QRectF r = m_paramRect->rect().normalized();
QPointF rectpos = m_paramRect->pos();
item.x(rectpos.x() / m_dar);
item.y(rectpos.y());
item.w(r.width() / m_dar);
item.h(r.height());
m_geom->insert(item);
updateTransitionPath();
emit parameterChanged();
}
示例7: slotAddFrame
void Geometryval::slotAddFrame()
{
int pos = m_ui.spinPos->value();
Mlt::GeometryItem item;
item.frame(pos);
item.x(m_paramRect->pos().x());
item.y(m_paramRect->pos().y());
item.w(m_paramRect->rect().width());
item.h(m_paramRect->rect().height());
item.mix(m_ui.spinTransp->value());
m_geom->insert(item);
m_ui.buttonAdd->setEnabled(false);
m_ui.buttonDelete->setEnabled(true);
m_ui.widget->setEnabled(true);
m_ui.spinTransp->setEnabled(true);
m_scaleMenu->setEnabled(true);
m_alignMenu->setEnabled(true);
m_helper->update();
emit parameterChanged();
}
示例8: slotAddFrame
void Geometryval::slotAddFrame(int pos)
{
int frame = m_timePos.getValue();
if (pos == -1) pos = frame;
Mlt::GeometryItem item;
item.frame(pos);
QRectF r = m_paramRect->rect().normalized();
QPointF rectpos = m_paramRect->pos();
item.x(rectpos.x() / m_dar);
item.y(rectpos.y());
item.w(r.width() / m_dar);
item.h(r.height());
item.mix(spinTransp->value());
m_geom->insert(item);
buttonAdd->setEnabled(false);
buttonDelete->setEnabled(true);
widget->setEnabled(true);
spinTransp->setEnabled(true);
frameOptions->setEnabled(true);
m_reset->setEnabled(true);
m_helper->update();
emit parameterChanged();
}
示例9: slotPositionChanged
void Geometryval::slotPositionChanged(int pos, bool seek)
{
if (pos == -1) {
pos = m_timePos.getValue();
}
if (seek && KdenliveSettings::transitionfollowcursor()) emit seekToPos(pos + m_startPoint);
m_timePos.setValue(pos);
//spinPos->setValue(pos);
m_helper->blockSignals(true);
m_helper->setValue(pos);
m_helper->blockSignals(false);
Mlt::GeometryItem item;
int error = m_geom->fetch(&item, pos);
if (error || item.key() == false) {
// no keyframe under cursor, adjust buttons
buttonAdd->setEnabled(true);
buttonDelete->setEnabled(false);
widget->setEnabled(false);
spinTransp->setEnabled(false);
frameOptions->setEnabled(false);
m_reset->setEnabled(false);
} else {
buttonAdd->setEnabled(false);
buttonDelete->setEnabled(true);
widget->setEnabled(true);
spinTransp->setEnabled(true);
frameOptions->setEnabled(true);
m_reset->setEnabled(true);
}
m_paramRect->setPos(item.x() * m_dar, item.y());
m_paramRect->setRect(0, 0, item.w() * m_dar, item.h());
spinTransp->setValue(item.mix());
m_paramRect->setBrush(QColor(255, 0, 0, item.mix()));
slotUpdateGeometry();
}