mirror of
https://github.com/brunoherbelin/vimix.git
synced 2025-12-15 12:20:01 +01:00
DRAFT implementation of a new toolbox to apply fade-in and fade-out and to cut the timeline.
91 lines
2.4 KiB
C++
91 lines
2.4 KiB
C++
#ifndef SOURCECONTROLWINDOW_H
|
|
#define SOURCECONTROLWINDOW_H
|
|
|
|
struct ImVec2;
|
|
struct ImRect;
|
|
|
|
#include "SourceList.h"
|
|
#include "InfoVisitor.h"
|
|
#include "DialogToolkit.h"
|
|
#include "Screenshot.h"
|
|
#include "WorkspaceWindow.h"
|
|
|
|
class SourceControlWindow : public WorkspaceWindow
|
|
{
|
|
float min_width_;
|
|
float h_space_;
|
|
float v_space_;
|
|
float scrollbar_;
|
|
float timeline_height_;
|
|
float mediaplayer_height_;
|
|
float buttons_width_;
|
|
float buttons_height_;
|
|
|
|
bool play_toggle_request_, replay_request_, capture_request_;
|
|
bool pending_;
|
|
std::string active_label_;
|
|
int active_selection_;
|
|
InfoVisitor info_;
|
|
SourceList selection_;
|
|
|
|
// re-usable ui parts
|
|
void DrawButtonBar(ImVec2 bottom, float width);
|
|
int SourceButton(Source *s, ImVec2 framesize);
|
|
|
|
// Render the sources dynamically selected
|
|
void RenderSelectedSources();
|
|
|
|
// Render a stored selection
|
|
bool selection_context_menu_;
|
|
MediaPlayer *selection_mediaplayer_;
|
|
double selection_target_slower_;
|
|
double selection_target_faster_;
|
|
void RenderSelectionContextMenu();
|
|
void RenderSelection(size_t i);
|
|
|
|
// Render a single source
|
|
void RenderSingleSource(Source *s);
|
|
|
|
// Render a single media player
|
|
MediaPlayer *mediaplayer_active_;
|
|
bool mediaplayer_edit_fading_;
|
|
int mediaplayer_set_duration_;
|
|
bool mediaplayer_edit_pipeline_;
|
|
bool mediaplayer_mode_;
|
|
bool mediaplayer_slider_pressed_;
|
|
float mediaplayer_timeline_zoom_;
|
|
|
|
bool mediaplayer_edit_panel_;
|
|
void RenderMediaPlayer(MediaSource *ms);
|
|
|
|
// draw methods
|
|
void DrawSource(Source *s, ImVec2 framesize, ImVec2 top_image, bool withslider = false, bool withinspector = false);
|
|
ImRect DrawSourceWithSlider(Source *s, ImVec2 top, ImVec2 rendersize, bool with_inspector);
|
|
|
|
// magnifying glass
|
|
bool magnifying_glass;
|
|
|
|
// dialog to select frame capture location
|
|
DialogToolkit::OpenFolderDialog *captureFolderDialog;
|
|
Screenshot capture;
|
|
|
|
public:
|
|
SourceControlWindow();
|
|
|
|
inline void Play() { play_toggle_request_ = true; }
|
|
inline void Replay() { replay_request_= true; }
|
|
inline void Capture(){ capture_request_= true; }
|
|
void resetActiveSelection();
|
|
|
|
void setVisible(bool on);
|
|
void Render();
|
|
FrameBuffer *renderedFramebuffer() const;
|
|
|
|
// from WorkspaceWindow
|
|
void Update() override;
|
|
bool Visible() const override;
|
|
};
|
|
|
|
|
|
#endif // SOURCECONTROLWINDOW_H
|