+++ /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 PLAYTRANSPORT_H
-#define PLAYTRANSPORT_H
-
-#include "edl.inc"
-#include "guicast.h"
-#include "mwindow.inc"
-#include "playbackengine.inc"
-#include "playtransport.inc"
-
-#define PLAY_MODE 0
-#define PAUSE_MODE 1
-#define PAUSEDOWN_MODE 2
-
-class PlayTransport
-{
-public:
- PlayTransport(MWindow *mwindow, BC_WindowBase *subwindow, int x, int y);
- virtual ~PlayTransport();
-
- void create_objects();
- void reposition_buttons(int x, int y);
-
- virtual void goto_start();
- virtual void goto_end();
-
-// Set the playback engine to control
- void set_engine(PlaybackEngine *engine);
- static int get_transport_width(MWindow *mwindow);
- int flip_vertical(int vertical, int &x, int &y);
- int keypress_event();
-// Abstract TransportQue::send_command.
-// wait_tracking - causes stop to wail until the final tracking position
-// is updated before returning
-// use_inout - causes the in/out points to determine the beginning and end
-// of playback
-// update_refresh - causes a frame advance to be issued after STOP to update
-// the refresh frame.
- void handle_transport(int command,
- int wait_tracking = 0,
- int use_inout = 0,
- int update_refresh = 1);
-
- int pause_transport();
- int reset_transport();
- int get_w();
-// Get the EDL to play back with default to mwindow->edl
- virtual EDL* get_edl();
- void change_position(double position);
-
-// playback parameters
- int reverse;
- float speed;
-
- PTransportButton *active_button;
- PlayButton *forward_play;
- FramePlayButton *frame_forward_play;
- ReverseButton *reverse_play;
- FrameReverseButton *frame_reverse_play;
- FastReverseButton *fast_reverse;
- FastPlayButton *fast_play;
- RewindButton *rewind_button;
- StopButton *stop_button;
- EndButton *end_button;
- MWindow *mwindow;
- BC_WindowBase *subwindow;
-
- PlaybackEngine *engine;
- int using_inout, status;
- int x, y;
-};
-
-// Should be toggle
-
-class PTransportButton : public BC_Button
-{
-public:
- PTransportButton(MWindow *mwindow, PlayTransport *transport, int x, int y, VFrame **data);
- virtual ~PTransportButton();
- virtual int set_mode(int mode);
-
- int mode;
- MWindow *mwindow;
- PlayTransport *transport;
-};
-
-class RewindButton : public PTransportButton
-{
-public:
- RewindButton(MWindow *mwindow, PlayTransport *transport, int x, int y);
- int handle_event();
-};
-
-class FastReverseButton : public PTransportButton
-{
-public:
- FastReverseButton(MWindow *mwindow, PlayTransport *transport, int x, int y);
- int handle_event();
-};
-
-class ReverseButton : public PTransportButton
-{
-public:
- ReverseButton(MWindow *mwindow, PlayTransport *transport, int x, int y);
- int handle_event();
-};
-
-class FrameReverseButton : public PTransportButton
-{
-public:
- FrameReverseButton(MWindow *mwindow, PlayTransport *transport, int x, int y);
- int handle_event();
-};
-
-class PlayButton : public PTransportButton
-{
-public:
- PlayButton(MWindow *mwindow, PlayTransport *transport, int x, int y);
- int handle_event();
-};
-
-class FramePlayButton : public PTransportButton
-{
-public:
- FramePlayButton(MWindow *mwindow, PlayTransport *transport, int x, int y);
- int handle_event();
-};
-
-class FastPlayButton : public PTransportButton
-{
-public:
- FastPlayButton(MWindow *mwindow, PlayTransport *transport, int x, int y);
- int handle_event();
-};
-
-
-
-class EndButton : public PTransportButton
-{
-public:
- EndButton(MWindow *mwindow, PlayTransport *transport, int x, int y);
- int handle_event();
-};
-
-class StopButton : public PTransportButton
-{
-public:
- StopButton(MWindow *mwindow, PlayTransport *transport, int x, int y);
- int handle_event();
-};
-
-#endif