363bec27259f18a60ff1b272c30c4c27cdb4f088
[WebKit-https.git] / Source / WebCore / platform / graphics / InbandTextTrackPrivate.h
1 /*
2  * Copyright (C) 2012 Apple Inc. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24  */
25
26 #ifndef InbandTextTrackPrivate_h
27 #define InbandTextTrackPrivate_h
28
29 #if ENABLE(VIDEO_TRACK)
30
31 #include "InbandTextTrackPrivateClient.h"
32
33 namespace WebCore {
34
35 class InbandTextTrackPrivate : public TrackPrivateBase {
36 public:
37     enum CueFormat {
38         Data,
39         Generic,
40         WebVTT
41     };
42     static RefPtr<InbandTextTrackPrivate> create(CueFormat format) { return adoptRef(new InbandTextTrackPrivate(format)); }
43     virtual ~InbandTextTrackPrivate() { }
44
45     void setClient(InbandTextTrackPrivateClient* client) { m_client = client; }
46     InbandTextTrackPrivateClient* client() const override { return m_client; }
47
48     enum Mode {
49         Disabled,
50         Hidden,
51         Showing
52     };
53     virtual void setMode(Mode mode) { m_mode = mode; };
54     virtual InbandTextTrackPrivate::Mode mode() const { return m_mode; }
55
56     enum Kind {
57         Subtitles,
58         Captions,
59         Descriptions,
60         Chapters,
61         Metadata,
62         Forced,
63         None
64     };
65     virtual Kind kind() const { return Subtitles; }
66     virtual bool isClosedCaptions() const { return false; }
67     virtual bool isSDH() const { return false; }
68     virtual bool containsOnlyForcedSubtitles() const { return false; }
69     virtual bool isMainProgramContent() const { return true; }
70     virtual bool isEasyToRead() const { return false; }
71     virtual bool isDefault() const { return false; }
72     AtomicString label() const override { return emptyAtom; }
73     AtomicString language() const override { return emptyAtom; }
74     AtomicString id() const override { return emptyAtom; }
75     virtual AtomicString inBandMetadataTrackDispatchType() const { return emptyAtom; }
76
77     virtual int textTrackIndex() const { return 0; }
78
79     CueFormat cueFormat() const { return m_format; }
80
81 protected:
82     InbandTextTrackPrivate(CueFormat format)
83         : m_format(format)
84         , m_client(0)
85         , m_mode(Disabled)
86     {
87     }
88
89 private:
90     CueFormat m_format;
91     InbandTextTrackPrivateClient* m_client;
92     Mode m_mode;
93 };
94
95 } // namespace WebCore
96
97 #endif
98 #endif