Merge pull request #868 from LittleHuba/add_text_audio
Add capability to link recorded audio to text nodespresentation
commit
a82e4777d9
20 changed files with 283 additions and 86 deletions
@ -0,0 +1,25 @@ |
||||
#include "XmlAudioNode.h" |
||||
|
||||
XmlAudioNode::XmlAudioNode(const char* tag) |
||||
: XmlNode(tag), |
||||
audioFilename("") |
||||
{ |
||||
XOJ_INIT_TYPE(XmlAudioNode); |
||||
} |
||||
|
||||
XmlAudioNode::~XmlAudioNode() |
||||
{ |
||||
XOJ_CHECK_TYPE(XmlAudioNode); |
||||
|
||||
XOJ_RELEASE_TYPE(XmlAudioNode); |
||||
} |
||||
|
||||
string XmlAudioNode::getAudioFilename() |
||||
{ |
||||
return this->audioFilename; |
||||
} |
||||
|
||||
void XmlAudioNode::setAudioFilename(string filename) |
||||
{ |
||||
this->audioFilename = filename; |
||||
} |
||||
@ -0,0 +1,37 @@ |
||||
/*
|
||||
* Xournal++ |
||||
* |
||||
* [Header description] |
||||
* |
||||
* @author Xournal++ Team |
||||
* https://github.com/xournalpp/xournalpp
|
||||
* |
||||
* @license GNU GPLv2 or later |
||||
*/ |
||||
|
||||
#pragma once |
||||
|
||||
|
||||
#include "XmlNode.h" |
||||
|
||||
class XmlAudioNode : public XmlNode |
||||
{ |
||||
public: |
||||
XmlAudioNode(const char* tag); |
||||
virtual ~XmlAudioNode(); |
||||
|
||||
private: |
||||
XmlAudioNode(const XmlAudioNode& node); |
||||
void operator=(const XmlAudioNode& node); |
||||
|
||||
public: |
||||
string getAudioFilename(); |
||||
void setAudioFilename(string filename); |
||||
|
||||
private: |
||||
XOJ_TYPE_ATTRIB; |
||||
|
||||
string audioFilename; |
||||
}; |
||||
|
||||
|
||||
@ -0,0 +1,80 @@ |
||||
#include "AudioElement.h" |
||||
|
||||
AudioElement::AudioElement(ElementType type) : Element(type) |
||||
{ |
||||
XOJ_INIT_TYPE(AudioElement); |
||||
|
||||
this->timestamp = 0; |
||||
} |
||||
|
||||
AudioElement::~AudioElement() |
||||
{ |
||||
|
||||
XOJ_CHECK_TYPE(AudioElement); |
||||
|
||||
this->timestamp = 0; |
||||
|
||||
XOJ_RELEASE_TYPE(AudioElement); |
||||
} |
||||
|
||||
void AudioElement::setAudioFilename(string fn) |
||||
{ |
||||
XOJ_CHECK_TYPE(AudioElement); |
||||
|
||||
this->audioFilename = fn; |
||||
} |
||||
|
||||
string AudioElement::getAudioFilename() const |
||||
{ |
||||
XOJ_CHECK_TYPE(AudioElement); |
||||
|
||||
return this->audioFilename; |
||||
} |
||||
|
||||
void AudioElement::setTimestamp(size_t timestamp) |
||||
{ |
||||
XOJ_CHECK_TYPE(AudioElement); |
||||
|
||||
this->timestamp = timestamp; |
||||
} |
||||
|
||||
size_t AudioElement::getTimestamp() const |
||||
{ |
||||
XOJ_CHECK_TYPE(AudioElement); |
||||
|
||||
return this->timestamp; |
||||
} |
||||
|
||||
void AudioElement::serializeAudioElement(ObjectOutputStream& out) |
||||
{ |
||||
XOJ_CHECK_TYPE(AudioElement); |
||||
|
||||
out.writeObject("AudioElement"); |
||||
|
||||
serializeElement(out); |
||||
|
||||
out.writeString(this->audioFilename); |
||||
out.writeSizeT(this->timestamp); |
||||
|
||||
out.endObject(); |
||||
} |
||||
|
||||
void AudioElement::readSerializedAudioElement(ObjectInputStream& in) |
||||
{ |
||||
XOJ_CHECK_TYPE(AudioElement); |
||||
|
||||
in.readObject("AudioElement"); |
||||
|
||||
readSerializedElement(in); |
||||
|
||||
this->audioFilename = in.readString(); |
||||
this->timestamp = in.readSizeT(); |
||||
|
||||
in.endObject(); |
||||
} |
||||
|
||||
void AudioElement::cloneAudioData(const AudioElement* other) |
||||
{ |
||||
setAudioFilename(other->getAudioFilename()); |
||||
setTimestamp(other->getTimestamp()); |
||||
} |
||||
@ -0,0 +1,50 @@ |
||||
/*
|
||||
* Xournal++ |
||||
* |
||||
* Element that is audio enabled |
||||
* |
||||
* @author Xournal++ Team |
||||
* https://github.com/xournalpp/xournalpp
|
||||
* |
||||
* @license GNU GPLv2 or later |
||||
*/ |
||||
|
||||
#pragma once |
||||
|
||||
#include "Element.h" |
||||
#include <XournalType.h> |
||||
#include <serializing/ObjectInputStream.h> |
||||
#include <serializing/ObjectOutputStream.h> |
||||
|
||||
class AudioElement : public Element |
||||
{ |
||||
protected: |
||||
AudioElement(ElementType type); |
||||
|
||||
public: |
||||
~AudioElement() override; |
||||
|
||||
void setTimestamp(size_t timestamp); |
||||
size_t getTimestamp() const; |
||||
|
||||
void setAudioFilename(string fn); |
||||
string getAudioFilename() const; |
||||
|
||||
virtual bool intersects(double x, double y, double halfSize) = 0; |
||||
virtual bool intersects(double x, double y, double halfSize, double* gap) = 0; |
||||
|
||||
protected: |
||||
void serializeAudioElement(ObjectOutputStream& out); |
||||
void readSerializedAudioElement(ObjectInputStream& in); |
||||
|
||||
void cloneAudioData(const AudioElement *other); |
||||
|
||||
private: |
||||
XOJ_TYPE_ATTRIB; |
||||
|
||||
// Stroke timestamp, to match it to the audio stream
|
||||
size_t timestamp = 0; |
||||
string audioFilename = ""; |
||||
}; |
||||
|
||||
|
||||
Loading…
Reference in new issue