+KeyframeCreateItem::KeyframeCreateItem(KeyframeCreate *keyframe_create,
+ const char *text, int mask)
+ : BC_MenuItem(text)
+{
+ this->keyframe_create = keyframe_create;
+ this->mask = mask;
+}
+
+int KeyframeCreateItem::handle_event()
+{
+ MWindow *mwindow = keyframe_create->mwindow;
+ int mode = mwindow->edl->local_session->floatauto_type;
+ int mask = this->mask;
+ if( !mask ) { // visible
+ int *autos = mwindow->edl->session->auto_conf->autos;
+ int modes = (1<<AUTOMATION_FADE) + (1<<AUTOMATION_SPEED) +
+ (7<<AUTOMATION_CAMERA_X) + (7<<AUTOMATION_PROJECTOR_X);
+ for( int i=0; i<AUTOMATION_TOTAL; modes>>=1, ++i ) {
+ if( !(modes & 1) ) continue;
+ if( autos[i] ) mask |= (1<<i);
+ }
+ }
+ mwindow->create_keyframes(mask, mode);
+ return 1;
+}
+
+KeyframeCreateMenu::KeyframeCreateMenu(KeyframeCreate *keyframe_create)
+: BC_SubMenu()
+{
+ this->keyframe_create = keyframe_create;
+}
+
+KeyframeCreate::KeyframeCreate(MWindow *mwindow)
+ : BC_MenuItem(_("Create keyframes..."))
+{
+ this->mwindow = mwindow;
+ keyframe_create_menu = 0;
+}
+
+void KeyframeCreate::create_objects()
+{
+ add_submenu(keyframe_create_menu = new KeyframeCreateMenu(this));
+ keyframe_create_menu->add_item(new KeyframeCreateItem(this, _("Visible"), 0));
+ keyframe_create_menu->add_item(new KeyframeCreateItem(this, _("Fade"),
+ (1<<AUTOMATION_FADE)));
+ keyframe_create_menu->add_item(new KeyframeCreateItem(this, _("Speed"),
+ (1<<AUTOMATION_SPEED)));
+ keyframe_create_menu->add_item(new KeyframeCreateItem(this, _("Camera XYZ"),
+ (7<<AUTOMATION_CAMERA_X)));
+ keyframe_create_menu->add_item(new KeyframeCreateItem(this, _("Projector XYZ"),
+ (7<<AUTOMATION_PROJECTOR_X)));
+ keyframe_create_menu->add_item(new KeyframeCreateItem(this, _("Fade+Speed+XYZ"),
+ (1<<AUTOMATION_FADE) + (1<<AUTOMATION_SPEED) +
+ (7<<AUTOMATION_CAMERA_X) + (7<<AUTOMATION_PROJECTOR_X)));
+}
+
+