vastly improved multithreaded loading and annchor point gizmo

This commit is contained in:
itsmattkc
2018-12-15 00:09:14 +11:00
parent 2fa7a638d5
commit 7a2a2af8ec
15 changed files with 292 additions and 153 deletions
+14 -6
View File
@@ -868,13 +868,21 @@ void Effect::gizmo_move(EffectGizmo* gizmo, int x_movement, int y_movement, doub
if (gizmos.at(i) == gizmo) {
ComboAction* ca = NULL;
if (done) ca = new ComboAction();
if (gizmo->x_field != NULL) {
gizmo->x_field->set_double_value(gizmo->x_field->get_double_value(timecode) + x_movement*gizmo->x_field_multi);
gizmo->x_field->make_key_from_change(ca);
if (gizmo->x_field1 != NULL) {
gizmo->x_field1->set_double_value(gizmo->x_field1->get_double_value(timecode) + x_movement*gizmo->x_field_multi1);
gizmo->x_field1->make_key_from_change(ca);
}
if (gizmo->y_field != NULL) {
gizmo->y_field->set_double_value(gizmo->y_field->get_double_value(timecode) + y_movement*gizmo->y_field_multi);
gizmo->y_field->make_key_from_change(ca);
if (gizmo->y_field1 != NULL) {
gizmo->y_field1->set_double_value(gizmo->y_field1->get_double_value(timecode) + y_movement*gizmo->y_field_multi1);
gizmo->y_field1->make_key_from_change(ca);
}
if (gizmo->x_field2 != NULL) {
gizmo->x_field2->set_double_value(gizmo->x_field2->get_double_value(timecode) + x_movement*gizmo->x_field_multi2);
gizmo->x_field2->make_key_from_change(ca);
}
if (gizmo->y_field2 != NULL) {
gizmo->y_field2->set_double_value(gizmo->y_field2->get_double_value(timecode) + y_movement*gizmo->y_field_multi2);
gizmo->y_field2->make_key_from_change(ca);
}
if (done) undo_stack.push(ca);
break;
+12 -6
View File
@@ -4,10 +4,14 @@
#include "effectfield.h"
EffectGizmo::EffectGizmo(int type) :
x_field(NULL),
x_field_multi(1.0),
y_field(NULL),
y_field_multi(1.0),
x_field1(NULL),
x_field_multi1(1.0),
y_field1(NULL),
y_field_multi1(1.0),
x_field2(NULL),
x_field_multi2(1.0),
y_field2(NULL),
y_field_multi2(1.0),
type(type),
cursor(-1)
{
@@ -19,8 +23,10 @@ EffectGizmo::EffectGizmo(int type) :
}
void EffectGizmo::set_previous_value() {
if (x_field != NULL) static_cast<LabelSlider*>(x_field->ui_element)->set_previous_value();
if (y_field != NULL) static_cast<LabelSlider*>(y_field->ui_element)->set_previous_value();
if (x_field1 != NULL) static_cast<LabelSlider*>(x_field1->ui_element)->set_previous_value();
if (y_field1 != NULL) static_cast<LabelSlider*>(y_field1->ui_element)->set_previous_value();
if (x_field2 != NULL) static_cast<LabelSlider*>(x_field2->ui_element)->set_previous_value();
if (y_field2 != NULL) static_cast<LabelSlider*>(y_field2->ui_element)->set_previous_value();
}
int EffectGizmo::get_point_count() {
+8 -4
View File
@@ -24,10 +24,14 @@ public:
QVector<QPoint> world_pos;
QVector<QPoint> screen_pos;
EffectField* x_field;
double x_field_multi;
EffectField* y_field;
double y_field_multi;
EffectField* x_field1;
double x_field_multi1;
EffectField* y_field1;
double y_field_multi1;
EffectField* x_field2;
double x_field_multi2;
EffectField* y_field2;
double y_field_multi2;
void set_previous_value();
+8 -3
View File
@@ -19,15 +19,13 @@ void ProjectModel::destroy_root() {
if (panel_footage_viewer != NULL) panel_footage_viewer->viewer_widget->delete_function();
if (root_item != NULL) {
beginRemoveRows(QModelIndex(), 0, root_item->childCount());
delete root_item;
endRemoveRows();
}
}
void ProjectModel::clear() {
destroy_root();
beginResetModel();
destroy_root();
root_item = new Media(0);
root_item->root = true;
endResetModel();
@@ -132,6 +130,13 @@ Media *ProjectModel::getItem(const QModelIndex &index) const {
return root_item;
}
void ProjectModel::set_icon(Media* m, const QIcon &ico) {
QModelIndex index = createIndex(m->row(), 0, m);
m->set_icon(ico);
emit dataChanged(index, index);
}
void ProjectModel::appendChild(Media *parent, Media *child) {
if (parent == NULL) parent = root_item;
beginInsertRows(parent == root_item ? QModelIndex() : createIndex(parent->row(), 0, parent), parent->childCount(), parent->childCount());
+1
View File
@@ -32,6 +32,7 @@ public:
void removeChild(Media *parent, Media* m);
Media *child(int i, Media* parent = NULL);
int childCount(Media* parent = NULL);
void set_icon(Media* m, const QIcon &ico);
private:
Media* root_item;