4c84aaca4aebe992f35ca085cb7b348dff9c540a
[WebKit-https.git] / Source / WebCore / platform / graphics / InbandTextTrackPrivateClient.h
1 /*
2  * Copyright (C) 2012, 2013 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 COMPUTER, 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 COMPUTER, 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 InbandTextTrackPrivateClient_h
27 #define InbandTextTrackPrivateClient_h
28
29 #include "Color.h"
30 #include <wtf/RefCounted.h>
31 #include <wtf/text/WTFString.h>
32
33 #if ENABLE(VIDEO_TRACK)
34
35 namespace WebCore {
36
37 class InbandTextTrackPrivate;
38
39 class GenericCueData : public RefCounted<GenericCueData> {
40 public:
41
42     static PassRefPtr<GenericCueData> create() { return adoptRef(new GenericCueData()); }
43     virtual ~GenericCueData() { }
44
45     double startTime() const { return m_startTime; }
46     void setStartTime(double startTime) { m_startTime = startTime; }
47
48     double endTime() const { return m_endTime; }
49     void setEndTime(double endTime) { m_endTime = endTime; }
50
51     String id() const { return m_id; }
52     void setId(String id) { m_id = id; }
53
54     String content() const { return m_content; }
55     void setContent(String content) { m_content = content; }
56
57     double line() const { return m_line; }
58     void setLine(double line) { m_line = line; }
59
60     double position() const { return m_position; }
61     void setPosition(double position) { m_position = position; }
62
63     double size() const { return m_size; }
64     void setSize(double size) { m_size = size; }
65
66     enum Alignment {
67         None,
68         Start,
69         Middle,
70         End
71     };
72     Alignment align() const { return m_align; }
73     void setAlign(Alignment align) { m_align = align; }
74
75     String fontName() const { return m_fontName; }
76     void setFontName(String fontName) { m_fontName = fontName; }
77
78     double baseFontSize() const { return m_baseFontSize; }
79     void setBaseFontSize(double baseFontSize) { m_baseFontSize = baseFontSize; }
80
81     double relativeFontSize() const { return m_relativeFontSize; }
82     void setRelativeFontSize(double relativeFontSize) { m_relativeFontSize = relativeFontSize; }
83
84     Color foregroundColor() const { return m_foregroundColor; }
85     void setForegroundColor(RGBA32 color) { m_foregroundColor.setRGB(color); }
86
87     Color backgroundColor() const { return m_backgroundColor; }
88     void setBackgroundColor(RGBA32 color) { m_backgroundColor.setRGB(color); }
89
90     enum Status {
91         Uninitialized,
92         Partial,
93         Complete,
94     };
95     Status status() { return m_status; }
96     void setStatus(Status status) { m_status = status; }
97     
98 private:
99     GenericCueData()
100         : m_startTime(0)
101         , m_endTime(0)
102         , m_line(-1)
103         , m_position(-1)
104         , m_size(-1)
105         , m_align(None)
106         , m_baseFontSize(0)
107         , m_relativeFontSize(0)
108         , m_status(Uninitialized)
109     {
110     }
111
112     double m_startTime;
113     double m_endTime;
114     String m_id;
115     String m_content;
116     double m_line;
117     double m_position;
118     double m_size;
119     Alignment m_align;
120     String m_fontName;
121     double m_baseFontSize;
122     double m_relativeFontSize;
123     Color m_foregroundColor;
124     Color m_backgroundColor;
125     Status m_status;
126 };
127
128 class InbandTextTrackPrivateClient {
129 public:
130     virtual ~InbandTextTrackPrivateClient() { }
131     
132     virtual void addGenericCue(InbandTextTrackPrivate*, PassRefPtr<GenericCueData>) = 0;
133     virtual void updateGenericCue(InbandTextTrackPrivate*, GenericCueData*) = 0;
134     virtual void removeGenericCue(InbandTextTrackPrivate*, GenericCueData*) = 0;
135 };
136
137 } // namespace WebCore
138
139 #endif
140 #endif