diff --git a/mkvparser.cpp b/mkvparser.cpp index aa138bd..8f89edf 100644 --- a/mkvparser.cpp +++ b/mkvparser.cpp @@ -4374,6 +4374,24 @@ Chapters::Edition::~Edition() } +int Chapters::Edition::GetAtomCount() const +{ + return m_atoms_count; +} + + +const Chapters::Atom* Chapters::Edition::GetAtom(int index) const +{ + if (index < 0) + return NULL; + + if (index >= m_atoms_count) + return NULL; + + return m_atoms + index; +} + + void Chapters::Edition::Init() { m_atoms = NULL; @@ -4496,8 +4514,42 @@ Chapters::Atom::~Atom() } +long long Chapters::Atom::GetStartTimecode() const +{ + return m_start_timecode; +} + + +long long Chapters::Atom::GetStopTimecode() const +{ + return m_stop_timecode; +} + + +int Chapters::Atom::GetDisplayCount() const +{ + return m_displays_count; +} + + +const Chapters::Display* Chapters::Atom::GetDisplay(int index) const +{ + if (index < 0) + return NULL; + + if (index >= m_displays_count) + return NULL; + + return m_displays + index; +} + + void Chapters::Atom::Init() { + m_uid = 0; + m_start_timecode = -1; + m_stop_timecode = -1; + m_displays = NULL; m_displays_size = 0; m_displays_count = 0; @@ -4506,6 +4558,10 @@ void Chapters::Atom::Init() void Chapters::Atom::ShallowCopy(Atom& rhs) const { + rhs.m_uid = m_uid; + rhs.m_start_timecode = m_start_timecode; + rhs.m_stop_timecode = m_stop_timecode; + rhs.m_displays = m_displays; rhs.m_displays_size = m_displays_size; rhs.m_displays_count = m_displays_count; diff --git a/mkvparser.hpp b/mkvparser.hpp index ab4b68b..cf5b917 100644 --- a/mkvparser.hpp +++ b/mkvparser.hpp @@ -567,8 +567,10 @@ public: ~Atom(); Atom& operator=(const Atom&); public: + long long GetStartTimecode() const; + long long GetStopTimecode() const; int GetDisplayCount() const; - const Atom* GetAtom(int index) const; + const Display* GetDisplay(int index) const; private: void Init(); void ShallowCopy(Atom&) const; @@ -580,8 +582,8 @@ public: unsigned long long m_uid; // TODO(matthewjheaney): Cue Identifier (string) - unsigned long long m_start_timecode; - unsigned long long m_stop_timecode; + long long m_start_timecode; + long long m_stop_timecode; Display* m_displays; int m_displays_size; @@ -597,7 +599,7 @@ public: Edition& operator=(const Edition&); public: int GetAtomCount() const; - const Atom& GetAtom(int index) const; + const Atom* GetAtom(int index) const; private: void Init(); void ShallowCopy(Edition&) const;