Rename SafeStringStream -> locked_stringstream. Bump deps for removal of stringstream.
[dcpomatic.git] / src / lib / video_frame.cc
1 /*
2     Copyright (C) 2016 Carl Hetherington <cth@carlh.net>
3
4     This file is part of DCP-o-matic.
5
6     DCP-o-matic is free software; you can redistribute it and/or modify
7     it under the terms of the GNU General Public License as published by
8     the Free Software Foundation; either version 2 of the License, or
9     (at your option) any later version.
10
11     DCP-o-matic is distributed in the hope that it will be useful,
12     but WITHOUT ANY WARRANTY; without even the implied warranty of
13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14     GNU General Public License for more details.
15
16     You should have received a copy of the GNU General Public License
17     along with DCP-o-matic.  If not, see <http://www.gnu.org/licenses/>.
18
19 */
20
21 #include "video_frame.h"
22 #include "dcpomatic_assert.h"
23
24 VideoFrame &
25 VideoFrame::operator++ ()
26 {
27         if (_eyes == EYES_BOTH) {
28                 ++_index;
29         } else if (_eyes == EYES_LEFT) {
30                 _eyes = EYES_RIGHT;
31         } else {
32                 _eyes = EYES_LEFT;
33                 ++_index;
34         }
35
36         return *this;
37 }
38
39 bool
40 operator== (VideoFrame const & a, VideoFrame const & b)
41 {
42         return a.index() == b.index() && a.eyes() == b.eyes();
43 }
44
45 bool
46 operator!= (VideoFrame const & a, VideoFrame const & b)
47 {
48         return !(a == b);
49 }
50
51 bool
52 operator> (VideoFrame const & a, VideoFrame const & b)
53 {
54         if (a.index() != b.index()) {
55                 return a.index() > b.index();
56         }
57
58         /* indexes are the same */
59
60         if (a.eyes() == b.eyes()) {
61                 return false;
62         }
63
64         /* eyes are not the same */
65
66         if (a.eyes() == EYES_LEFT && b.eyes() == EYES_RIGHT) {
67                 return false;
68         }
69
70         if (a.eyes() == EYES_RIGHT && b.eyes() == EYES_LEFT) {
71                 return true;
72         }
73
74         /* should never get here; we are comparing 2D with 3D */
75
76         DCPOMATIC_ASSERT (false);
77 }