+++ /dev/null
-
-/*
- * CINELERRA
- * Copyright (C) 2008 Adam Williams <broadcast at earthling dot net>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-#ifndef EDIT_H
-#define EDIT_H
-
-#include <stdio.h>
-#include <stdint.h>
-
-#include "asset.inc"
-#include "edl.inc"
-#include "guicast.h"
-#include "edits.inc"
-#include "filexml.inc"
-#include "indexable.inc"
-#include "mwindow.inc"
-#include "plugin.inc"
-#include "track.inc"
-#include "transition.inc"
-
-// UNITS ARE SAMPLES FOR AUDIO / FRAMES FOR VIDEO
-// zoom_units was mwindow->zoom_sample for AEdit
-
-// Generic edit of something
-
-class Edit : public ListItem<Edit>
-{
-public:
- Edit(EDL *edl, Edits *edits);
- Edit(EDL *edl, Track *track);
- Edit();
- virtual ~Edit();
-
- void reset();
-
- Indexable* get_source();
-// Copy from different EDL
- virtual void copy_from(Edit *edit);
-// Compare with edit in same EDL
- virtual int identical(Edit &edit);
- virtual Edit& operator=(Edit& edit);
-// Called by Edits and PluginSet.
-// Compare with edit in different EDL
- virtual void equivalent_output(Edit *edit, int64_t *result);
- virtual int operator==(Edit& edit);
-// When inherited by a plugin need to resample keyframes
- virtual void synchronize_params(Edit *edit);
-// Used by Edits::insert_edits to shift plugin keyframes
- virtual void shift_keyframes(int64_t position) {};
-
-// Get size of frame to draw on timeline
- double picon_w();
- int picon_h();
- double frame_w();
- double frames_per_picon();
- int copy(int64_t start, int64_t end, FileXML *xml, const char *output_path);
-// When inherited by a plugin need to resample keyframes
- virtual void resample(double old_rate, double new_rate) {};
-
-// Shift in time
- virtual void shift(int64_t difference);
- int shift_start_in(int edit_mode,
- int64_t newposition,
- int64_t oldposition,
- int edit_edits,
- int edit_labels,
- int edit_plugins,
- int edit_autos,
- Edits *trim_edits);
- int shift_start_out(int edit_mode,
- int64_t newposition,
- int64_t oldposition,
- int edit_edits,
- int edit_labels,
- int edit_plugins,
- int edit_autos,
- Edits *trim_edits);
- int shift_end_in(int edit_mode,
- int64_t newposition,
- int64_t oldposition,
- int edit_edits,
- int edit_labels,
- int edit_plugins,
- int edit_autos,
- Edits *trim_edits);
- int shift_end_out(int edit_mode,
- int64_t newposition,
- int64_t oldposition,
- int edit_edits,
- int edit_labels,
- int edit_plugins,
- int edit_autos,
- Edits *trim_edits);
-
- void insert_transition(char *title);
- void detach_transition();
-// Determine if silence depending on existance of asset or plugin title
- virtual int silence();
-
-// Media edit information
-// Units are native units for the track.
-// Start of edit in source file normalized to project sample rate.
-// Normalized because all the editing operations clip startsource relative
-// to the project sample rate;
- int64_t startsource;
-// Start of edit in project file.
- int64_t startproject;
-// # of units in edit.
- int64_t length;
-// Channel or layer of source
- int channel;
-// ID for resource pixmaps
- int id;
-// User defined title for timeline
- char user_title[BCTEXTLEN];
- int is_plugin;
-
-
-// Transition if one is present at the beginning of this edit
-// This stores the length of the transition
- Transition *transition;
-
- Edits *edits;
-
- Track *track;
-
-// Asset is 0 if silence, otherwise points an object in edl->assets
- Asset *asset;
-
-// points to an object in edl->clips if a nested clip
- EDL *nested_edl;
-
-// Parent EDL of this edit
- EDL *edl;
-
-
-
-
-
-
-
-
-
-
-
-// ============================= initialization
-
- int load_properties(FileXML *xml, int64_t &startproject);
- virtual int load_properties_derived(FileXML *xml) { return 0; }
-
-// ============================= drawing
-
- virtual int draw(int flash, int center_pixel,
- int x, int w, int y, int h, int set_index_file) { return 0; }
- virtual int set_index_file(int flash, int center_pixel,
- int x, int y, int w, int h) { return 0; }
- int draw_transition(int flash, int center_pixel,
- int x, int w, int y, int h, int set_index_file);
-
- int draw_handles(BC_SubWindow *canvas, float view_start, float view_units,
- float zoom_units, int view_pixels, int center_pixel);
- int draw_titles(BC_SubWindow *canvas, float view_start, float zoom_units,
- int view_pixels, int center_pixel);
-
-// ============================= editing
-
- virtual int copy_properties_derived(FileXML *xml,
- int64_t length_in_selection) { return 0; }
-
- int popup_transition(float view_start, float zoom_units, int cursor_x, int cursor_y);
-
-// Return 1 if the left handle was selected 2 if the right handle was selected
- int select_handle(float view_start, float zoom_units,
- int cursor_x, int cursor_y, int64_t &selection);
- virtual int get_handle_parameters(int64_t &left, int64_t &right,
- int64_t &left_sample, int64_t &right_sample, float view_start,
- float zoom_units) { return 0; }
- virtual int64_t get_source_end(int64_t default_);
- int dump(FILE *fp=stdout);
- virtual int dump_derived() { return 0; }
-
-};
-
-
-
-
-
-#endif