*/
#include "automation.h"
+#include "awindowgui.h"
#include "clip.h"
#include "bchash.h"
#include "edl.h"
+#include "filesystem.h"
#include "filexml.h"
#include "floatauto.h"
#include "language.h"
"AUTOGROUPTYPE_AUDIO_FADE_MAX",
"AUTOGROUPTYPE_VIDEO_FADE_MAX",
"AUTOGROUPTYPE_ZOOM_MAX",
+ "AUTOGROUPTYPE_SPEED_MAX",
"AUTOGROUPTYPE_X_MAX",
"AUTOGROUPTYPE_Y_MAX",
"AUTOGROUPTYPE_INT255_MAX"
"AUTOGROUPTYPE_AUDIO_FADE_MIN",
"AUTOGROUPTYPE_VIDEO_FADE_MIN",
"AUTOGROUPTYPE_ZOOM_MIN",
+ "AUTOGROUPTYPE_SPEED_MIN",
"AUTOGROUPTYPE_X_MIN",
"AUTOGROUPTYPE_Y_MIN",
"AUTOGROUPTYPE_INT255_MIN"
selectionstart = selectionend = 0;
in_point = out_point = -1;
- strcpy(folder, CLIP_FOLDER);
+ folder = AW_CLIP_FOLDER;
sprintf(clip_title, _("Program"));
strcpy(clip_notes, _("Hello world"));
+ strcpy(clip_icon, "");
clipboard_length = 0;
loop_playback = 0;
loop_start = loop_end = 0;
playback_start = -1;
playback_end = 0;
- preview_start = preview_end = 0;
+ preview_start = 0; preview_end = -1;
zoom_sample = DEFAULT_ZOOM_TIME;
zoom_y = 0;
zoom_track = 0;
automation_mins[AUTOGROUPTYPE_VIDEO_FADE] = 0;
automation_maxs[AUTOGROUPTYPE_VIDEO_FADE] = 100;
- automation_mins[AUTOGROUPTYPE_ZOOM] = 0.001;
- automation_maxs[AUTOGROUPTYPE_ZOOM] = 4;
+ automation_mins[AUTOGROUPTYPE_ZOOM] = 0.005;
+ automation_maxs[AUTOGROUPTYPE_ZOOM] = 5.000;
+
+ automation_mins[AUTOGROUPTYPE_SPEED] = 0.005;
+ automation_maxs[AUTOGROUPTYPE_SPEED] = 5.000;
automation_mins[AUTOGROUPTYPE_X] = -100;
automation_maxs[AUTOGROUPTYPE_X] = 100;
floatauto_type = FloatAuto::SMOOTH;
red = green = blue = 0;
+ red_max = green_max = blue_max = 0;
+ use_max = 0;
}
LocalSession::~LocalSession()
{
strcpy(clip_title, that->clip_title);
strcpy(clip_notes, that->clip_notes);
- strcpy(folder, that->folder);
+ strcpy(clip_icon, that->clip_icon);
+ folder = that->folder;
in_point = that->in_point;
loop_playback = that->loop_playback;
loop_start = that->loop_start;
preview_end = that->preview_end;
red = that->red;
green = that->green;
+ blue = that->blue;
+ red_max = that->red_max;
+ green_max = that->green_max;
+ blue_max = that->blue_max;
+ use_max = that->use_max;
for (int i = 0; i < AUTOGROUPTYPE_COUNT; i++) {
automation_mins[i] = that->automation_mins[i];
automation_maxs[i] = that->automation_maxs[i];
}
floatauto_type = that->floatauto_type;
-
- blue = that->blue;
}
void LocalSession::save_xml(FileXML *file, double start)
file->tag.set_property("SELECTION_START", selectionstart - start);
file->tag.set_property("SELECTION_END", selectionend - start);
file->tag.set_property("CLIP_TITLE", clip_title);
- file->tag.set_property("CLIP_NOTES", clip_notes);
+ file->tag.set_property("CLIP_ICON", clip_icon);
file->tag.set_property("FOLDER", folder);
file->tag.set_property("X_PANE", x_pane);
file->tag.set_property("Y_PANE", y_pane);
file->tag.set_property("ZOOM_TRACK", zoom_track);
double preview_start = this->preview_start - start;
- if(preview_start < 0) preview_start = 0;
+ if( preview_start < 0 ) preview_start = 0;
double preview_end = this->preview_end - start;
- if(preview_end < 0) preview_end = 0;
-
+ if( preview_end < preview_start ) preview_end = -1;
file->tag.set_property("PREVIEW_START", preview_start);
file->tag.set_property("PREVIEW_END", preview_end);
file->tag.set_property("FLOATAUTO_TYPE", floatauto_type);
file->tag.set_property("RED", red);
file->tag.set_property("GREEN", green);
file->tag.set_property("BLUE", blue);
+ file->tag.set_property("RED_MAX", red_max);
+ file->tag.set_property("GREEN_MAX", green_max);
+ file->tag.set_property("BLUE_MAX", blue_max);
+ file->tag.set_property("USE_MAX", use_max);
for (int i = 0; i < AUTOGROUPTYPE_COUNT; i++) {
if (!Automation::autogrouptypes_fixedrange[i]) {
}
}
file->append_tag();
+ file->append_newline();
+
+//this used to be a property, now used as tag member
+// file->tag.set_property("CLIP_NOTES", clip_notes);
+ file->tag.set_title("CLIP_NOTES"); file->append_tag();
+ file->append_text(clip_notes);
+ file->tag.set_title("/CLIP_NOTES"); file->append_tag();
+ file->append_newline();
file->tag.set_title("/LOCALSESSION");
file->append_tag();
red = that->red;
green = that->green;
blue = that->blue;
+ red_max = that->red_max;
+ green_max = that->green_max;
+ blue_max = that->blue_max;
}
// clipboard_length = 0;
// Overwritten by MWindow::load_filenames
file->tag.get_property("CLIP_TITLE", clip_title);
+ clip_notes[0] = 0;
file->tag.get_property("CLIP_NOTES", clip_notes);
- file->tag.get_property("FOLDER", folder);
+ clip_icon[0] = 0;
+ file->tag.get_property("CLIP_ICON", clip_icon);
+// kludge if possible
+ if( !clip_icon[0] ) {
+ char *cp = clip_notes;
+ int year, mon, mday, hour, min, sec;
+ while( *cp && *cp++ != ':' );
+ if( *cp && sscanf(cp, "%d/%02d/%02d %02d:%02d:%02d,",
+ &year, &mon, &mday, &hour, &min, &sec) == 6 ) {
+ sprintf(clip_icon, "clip_%02d%02d%02d-%02d%02d%02d.png",
+ year, mon, mday, hour, min, sec);
+ }
+ }
+ int awindow_folder = file->tag.get_property("AWINDOW_FOLDER", -1);
+ folder = awindow_folder >= 0 ? awindow_folder :
+ file->tag.get_property("FOLDER",
+ edl->parent_edl ? AW_CLIP_FOLDER : AW_MEDIA_FOLDER);
loop_playback = file->tag.get_property("LOOP_PLAYBACK", 0);
loop_start = file->tag.get_property("LOOP_START", (double)0);
loop_end = file->tag.get_property("LOOP_END", (double)0);
red = file->tag.get_property("RED", red);
green = file->tag.get_property("GREEN", green);
blue = file->tag.get_property("BLUE", blue);
-
+ red_max = file->tag.get_property("RED_MAX", red_max);
+ green_max = file->tag.get_property("GREEN_MAX", green_max);
+ blue_max = file->tag.get_property("BLUE_MAX", blue_max);
+ use_max = file->tag.get_property("USE_MAX", use_max);
for (int i = 0; i < AUTOGROUPTYPE_COUNT; i++) {
if (!Automation::autogrouptypes_fixedrange[i]) {
in_point = file->tag.get_property("IN_POINT", (double)-1);
out_point = file->tag.get_property("OUT_POINT", (double)-1);
}
+
+ while( !file->read_tag() ) {
+ if( file->tag.title_is("/LOCALSESSION") ) break;
+ if( file->tag.title_is("CLIP_NOTES") ) {
+ file->read_text_until("/CLIP_NOTES",
+ clip_notes, sizeof(clip_notes)-1, 1);
+ }
+ }
}
void LocalSession::boundaries()
red = defaults->get("RED", 0.0);
green = defaults->get("GREEN", 0.0);
blue = defaults->get("BLUE", 0.0);
+ red_max = defaults->get("RED_MAX", 0.0);
+ green_max = defaults->get("GREEN_MAX", 0.0);
+ blue_max = defaults->get("BLUE_MAX", 0.0);
+ use_max = defaults->get("USE_MAX", 0);
for (int i = 0; i < AUTOGROUPTYPE_COUNT; i++) {
if (!Automation::autogrouptypes_fixedrange[i]) {
defaults->update("RED", red);
defaults->update("GREEN", green);
defaults->update("BLUE", blue);
+ defaults->update("RED_MAX", red_max);
+ defaults->update("GREEN_MAX", green_max);
+ defaults->update("BLUE_MAX", blue_max);
+ defaults->update("USE_MAX", use_max);
for (int i = 0; i < AUTOGROUPTYPE_COUNT; i++) {
if (!Automation::autogrouptypes_fixedrange[i]) {
return out_point >= 0;
}
-
-
-