mirror of
https://github.com/brunoherbelin/vimix.git
synced 2025-12-05 23:40:02 +01:00
Work in progress; Sources now have play/pause and associated play functions. Media player can play all playable sources, and adapts to control a media player when possible. Selection of play groups (to finalize)
75 lines
2.5 KiB
C++
75 lines
2.5 KiB
C++
#ifndef XMLVISITOR_H
|
|
#define XMLVISITOR_H
|
|
|
|
#include "Visitor.h"
|
|
#include "tinyxml2Toolkit.h"
|
|
#include "SourceList.h"
|
|
|
|
class Session;
|
|
class FrameBufferImage;
|
|
|
|
class SessionVisitor : public Visitor {
|
|
|
|
bool recursive_;
|
|
tinyxml2::XMLDocument *xmlDoc_;
|
|
tinyxml2::XMLElement *xmlCurrent_;
|
|
|
|
static void saveConfig(tinyxml2::XMLDocument *doc, Session *session);
|
|
static void saveSnapshots(tinyxml2::XMLDocument *doc, Session *session);
|
|
static void saveNotes(tinyxml2::XMLDocument *doc, Session *session);
|
|
static void savePlayGroups(tinyxml2::XMLDocument *doc, Session *session);
|
|
|
|
public:
|
|
SessionVisitor(tinyxml2::XMLDocument *doc = nullptr,
|
|
tinyxml2::XMLElement *root = nullptr,
|
|
bool recursive = false);
|
|
|
|
inline void setRoot(tinyxml2::XMLElement *root) { xmlCurrent_ = root; }
|
|
|
|
static bool saveSession(const std::string& filename, Session *session);
|
|
|
|
static std::string getClipboard(const SourceList &list);
|
|
static std::string getClipboard(Source * const s);
|
|
static std::string getClipboard(ImageProcessingShader * const s);
|
|
|
|
// Elements of Scene
|
|
void visit (Scene& n) override;
|
|
void visit (Node& n) override;
|
|
void visit (Group& n) override;
|
|
void visit (Switch& n) override;
|
|
void visit (Primitive& n) override;
|
|
void visit (Surface&) override;
|
|
void visit (ImageSurface& n) override;
|
|
void visit (MediaSurface& n) override;
|
|
void visit (FrameBufferSurface&) override;
|
|
void visit (LineStrip& n) override;
|
|
void visit (LineSquare&) override;
|
|
void visit (Mesh& n) override;
|
|
void visit (Frame& n) override;
|
|
|
|
// Elements with attributes
|
|
void visit (MediaPlayer& n) override;
|
|
void visit (Shader& n) override;
|
|
void visit (ImageShader& n) override;
|
|
void visit (MaskShader& n) override;
|
|
void visit (ImageProcessingShader& n) override;
|
|
|
|
// Sources
|
|
void visit (Source& s) override;
|
|
void visit (MediaSource& s) override;
|
|
void visit (SessionFileSource& s) override;
|
|
void visit (SessionGroupSource& s) override;
|
|
void visit (RenderSource&) override;
|
|
void visit (CloneSource& s) override;
|
|
void visit (PatternSource& s) override;
|
|
void visit (DeviceSource& s) override;
|
|
void visit (NetworkSource& s) override;
|
|
void visit (MixingGroup& s) override;
|
|
void visit (MultiFileSource& s) override;
|
|
|
|
static tinyxml2::XMLElement *NodeToXML(const Node &n, tinyxml2::XMLDocument *doc);
|
|
static tinyxml2::XMLElement *ImageToXML(const FrameBufferImage *img, tinyxml2::XMLDocument *doc);
|
|
};
|
|
|
|
#endif // XMLVISITOR_H
|