summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
a52d454)
http://kdenlive.org/mantis/view.php?id=1575
svn path=/trunk/kdenlive/; revision=4413
setRect(0, 0, cropDuration().frames(m_fps) - 0.02, rect().height());
}
setRect(0, 0, cropDuration().frames(m_fps) - 0.02, rect().height());
}
-void AbstractClipItem::resizeStart(int posx)
+void AbstractClipItem::resizeStart(int posx, bool hasSizeLimit)
{
GenTime durationDiff = GenTime(posx, m_fps) - m_info.startPos;
if (durationDiff == GenTime()) return;
//kDebug() << "-- RESCALE DIFF=" << durationDiff.frames(25) << ", CLIP: " << startPos().frames(25) << "-" << endPos().frames(25);
{
GenTime durationDiff = GenTime(posx, m_fps) - m_info.startPos;
if (durationDiff == GenTime()) return;
//kDebug() << "-- RESCALE DIFF=" << durationDiff.frames(25) << ", CLIP: " << startPos().frames(25) << "-" << endPos().frames(25);
- if (type() == AVWIDGET && cropStart() + durationDiff < GenTime()) {
- durationDiff = GenTime() - cropStart();
+ if (type() == AVWIDGET) {
+ if (hasSizeLimit && cropStart() + durationDiff < GenTime())
+ durationDiff = GenTime() - cropStart();
} else if (durationDiff >= cropDuration()) {
return;
if (cropDuration() > GenTime(3, m_fps)) durationDiff = GenTime(3, m_fps);
} else if (durationDiff >= cropDuration()) {
return;
if (cropDuration() > GenTime(3, m_fps)) durationDiff = GenTime(3, m_fps);
virtual int track() const ;
virtual GenTime cropStart() const ;
virtual GenTime cropDuration() const ;
virtual int track() const ;
virtual GenTime cropStart() const ;
virtual GenTime cropDuration() const ;
- virtual void resizeStart(int posx);
+ virtual void resizeStart(int posx, bool hasSizeLimit = true);
virtual void resizeEnd(int posx);
virtual double fps() const;
virtual void updateFps(double fps);
virtual void resizeEnd(int posx);
virtual double fps() const;
virtual void updateFps(double fps);
+QDomElement ClipItem::itemXml() const
+{
+ QDomElement xml = m_clip->toXML();
+ if (m_speed != 1.0) xml.setAttribute("speed", m_speed);
+ if (m_strobe > 1) xml.setAttribute("strobe", m_strobe);
+ if (m_audioOnly) xml.setAttribute("audio_only", 1);
+ else if (m_videoOnly) xml.setAttribute("video_only", 1);
+ return xml;
+}
+
int ClipItem::clipType() const
{
return m_clipType;
int ClipItem::clipType() const
{
return m_clipType;
-void ClipItem::resizeStart(int posx)
+void ClipItem::resizeStart(int posx, bool)
- const int min = (startPos() - cropStart()).frames(m_fps);
- if (posx < min) {
- if (clipType() == IMAGE || clipType() == COLOR || clipType() == TEXT) {
- GenTime oldPos = startPos();
- moveBy(-1 * (oldPos - GenTime(posx, m_fps)).frames(m_fps), 0);
- const int newPos = (endPos() + (oldPos - startPos())).frames(m_fps);
- AbstractClipItem::resizeEnd(newPos);
- }
- posx = min;
+ bool sizeLimit = false;
+ if (clipType() != IMAGE && clipType() != COLOR && clipType() != TEXT) {
+ const int min = (startPos() - cropStart()).frames(m_fps);
+ if (posx < min) posx = min;
+ sizeLimit = true;
if (posx == startPos().frames(m_fps)) return;
const int previous = cropStart().frames(m_fps);
if (posx == startPos().frames(m_fps)) return;
const int previous = cropStart().frames(m_fps);
- AbstractClipItem::resizeStart(posx);
+ AbstractClipItem::resizeStart(posx, sizeLimit);
// set speed independant info
m_speedIndependantInfo = m_info;
// set speed independant info
m_speedIndependantInfo = m_info;
const QStyleOptionGraphicsItem *option,
QWidget *);
virtual int type() const;
const QStyleOptionGraphicsItem *option,
QWidget *);
virtual int type() const;
- void resizeStart(int posx);
+ void resizeStart(int posx, bool size = true);
void resizeEnd(int posx);
OPERATIONTYPE operationMode(QPointF pos);
const QString clipProducer() const;
void resizeEnd(int posx);
OPERATIONTYPE operationMode(QPointF pos);
const QString clipProducer() const;
QString clipName() const;
void setClipName(const QString &name);
QDomElement xml() const;
QString clipName() const;
void setClipName(const QString &name);
QDomElement xml() const;
+ QDomElement itemXml() const;
ClipItem *clone(ItemInfo info) const;
const EffectsList effectList() const;
void setFadeOut(int pos);
ClipItem *clone(ItemInfo info) const;
const EffectsList effectList() const;
void setFadeOut(int pos);
QPixmap m_startPix;
QPixmap m_endPix;
QPixmap m_startPix;
QPixmap m_endPix;
bool m_hasThumbs;
QTimer m_startThumbTimer;
QTimer m_endThumbTimer;
bool m_hasThumbs;
QTimer m_startThumbTimer;
QTimer m_endThumbTimer;
}
mlt_service_lock(service.get_service());
int clipIndex = trackPlaylist.get_clip_index_at(info.startPos.frames(m_fps));
}
mlt_service_lock(service.get_service());
int clipIndex = trackPlaylist.get_clip_index_at(info.startPos.frames(m_fps));
- Mlt::Producer *clip = trackPlaylist.get_clip(clipIndex);
- if (clip == NULL) {
+ if (trackPlaylist.is_blank(clipIndex)) {
kDebug() << "//////// ERROR RSIZING NULL CLIP!!!!!!!!!!!";
mlt_service_unlock(service.get_service());
return false;
}
kDebug() << "//////// ERROR RSIZING NULL CLIP!!!!!!!!!!!";
mlt_service_unlock(service.get_service());
return false;
}
- int previousStart = clip->get_in();
- delete clip;
+ int previousStart = trackPlaylist.clip_start(clipIndex);
int previousDuration = trackPlaylist.clip_length(clipIndex) - 1;
m_isBlocked = true;
int previousDuration = trackPlaylist.clip_length(clipIndex) - 1;
m_isBlocked = true;
- kDebug() << "RESIZE, old start: " << previousStart << ", PREV DUR: " << previousDuration << ", DIFF: " << moveFrame;
+ kDebug() << "RESIZE, old start: " << previousStart + moveFrame<<", "<<previousStart + previousDuration;
trackPlaylist.resize_clip(clipIndex, previousStart + moveFrame, previousStart + previousDuration);
if (moveFrame > 0) trackPlaylist.insert_blank(clipIndex, moveFrame - 1);
else {
trackPlaylist.resize_clip(clipIndex, previousStart + moveFrame, previousStart + previousDuration);
if (moveFrame > 0) trackPlaylist.insert_blank(clipIndex, moveFrame - 1);
else {