- From: Glenn Adams <glenn@skynav.com>
- Date: Mon, 9 Sep 2013 00:26:25 -0600
- To: Silvia Pfeiffer <silviapfeiffer1@gmail.com>
- Cc: Brendan Long <self@brendanlong.com>, "HTML WG (public-html@w3.org)" <public-html@w3.org>
- Message-ID: <CACQ=j+fwz98gELBDKqgzu505BT1cnr3NnX2pNMW7kQodUdhvaA@mail.gmail.com>
On Sun, Sep 8, 2013 at 6:41 PM, Silvia Pfeiffer
<silviapfeiffer1@gmail.com>wrote:
> On Mon, Sep 9, 2013 at 4:30 AM, Brendan Long <self@brendanlong.com> wrote:
> >
> > But for image formats the browser does understand, you would expect it to
> > present a consistent interface for the parts that are consistent (all
> images
> > should have height, width and pixel data).
>
> Right.
>
> >>> I find it hard to believe that there's any cue format
> >>> that can't be represented in HTML, and I think to make things
> reasonable for
> >>> JS developers, we should force that format to always be available
> (although,
> >>> for efficiency, an implementation could choose to create it lazily of
> >>> course).
> >>
> >> Binary cue formats don't have a HTML representation, e.g. DVD subtitles.
> >
> > <img src="data:image/bmp;base64,......" /> would work. It's not as nice
> as
> > getting text, but it's about as good as you can do for image-base
> subtitles.
>
> That would require converting DVD raster graphics to an img format
> that the browser understands. Once a browser implements that, there
> are likely other attributes that it will implement, so a specific
> DVDCue interface would be created. The abstract TextTrackCue interface
> supports creating this and I think we have already agreed that
> reverting that to what the WHATWG spec has is the way to go:
>
> interface TextTrackCue : EventTarget {
> readonly attribute TextTrack? track;
>
> attribute DOMString id;
> attribute double startTime;
> attribute double endTime;
> attribute boolean pauseOnExit;
>
> attribute EventHandler onenter;
> attribute EventHandler onexit;
> };
>
>
> The question now is: should there be a thin GenericCue interface or a
> thick TextCue interface as the parent for text-based cues.
>
> Here's a brain storm on how it could be:
>
>
> [Constructor(double startTime, double endTime, DOMString text)]
> interface GenericCue : TextTrackCue {
> attribute DOMString text;
> DocumentFragment getCueAsHTML();
> };
>
OK, but leave out getCueAsHTML(), since a generic cue has no (known)
rendering semantics.
> OR
>
> enum AutoKeyword { "auto" };
> enum DirectionSetting { "" /* horizontal */, "rl", "lr" };
> enum AlignSetting { "start", "middle", "end", "left", "right" };
> [Constructor(double startTime, double endTime, DOMString text)]
> interface TextCue : TextTrackCue {
> attribute DirectionSetting vertical;
> attribute boolean snapToLines;
> attribute (long or AutoKeyword) line;
> attribute long position;
> attribute long size;
> attribute AlignSetting align;
> attribute DOMString text;
> DocumentFragment getCueAsHTML();
> };
>
I'm not sure what the point is in pretending that this is a generic
renderable cue when it is based on VTT style semantics. Each style
attribute here is defined in terms of VTT semantics. Let's call a duck a
duck.
> I'm now thinking .text could be restricted to just plain text. Thus,
> I've moved getCueAsHTML() into these interfaces, too, seeing as it
> could simply return a DocumentFragment with plain text.
It could, but what's the point when the text attribute suffices?
> There could be
> rendering for the appropriate @kind values, which would only be
> influenced by the attributes.
Again, this would depend on the underlying track format and cue format, not
just @kind. So one mapping doesn't serve all formats.
> With GenericCue, it would just be
> rendered bottom center by default, with TextCue, we'd also get
> positioning and directionality. This would neatly cover simple SRT,
> and restricted versions of other caption formats, too.
>
None of these style attributes accommodate TTML style semantics. So it
would be of no utility there.
>
> Then we get to move advanced markup and rendering functionality into
> more specific interfaces.
>
> For example, VTTCue will be adapted to one of these:
>
> enum AutoKeyword { "auto" };
> enum DirectionSetting { "" /* horizontal */, "rl", "lr" };
> enum AlignSetting { "start", "middle", "end", "left", "right" };
> [Constructor(double startTime, double endTime, DOMString text)]
> interface VTTCue : GenericCue {
> attribute DOMString regionId;
> attribute DirectionSetting vertical;
> attribute boolean snapToLines;
> attribute (long or AutoKeyword) line;
> attribute long position;
> attribute long size;
> attribute AlignSetting align;
> };
>
The only thing you've done here is add regionId and removed getCueAsHTML(),
neither of which makes any sense.
>
> OR
>
> [Constructor(double startTime, double endTime, DOMString text)]
> interface VTTCue : TextCue {
> attribute DOMString regionId;
> };
>
> with .text containing VTT specifics and getCueAsHTML() converting VTT
> cue markup to HTML.
>
If you are going to define a generic text cue, then all it needs is a text
attribute. It doesn't need VTT specific style attributes, and it doesn't
need getCueAsHTML().
You may wish to take a look at a new document I've drafted as a first
attempt to define an UnparsedTTMLCue interface at [1]. Take note also of
"Issue 1" therein.
[1] http://dvcs.w3.org/hg/ttml/raw-file/default/ttml1-api/Overview.html
I will publish a draft parsed/renderable TTML cue interface (TTMLCue) this
week, which I expect will roughly look like:
[Constructor(double startTime, double endTime, XMLDocument? content)]
interface TTMLCue : UnparsedTTMLCue {
XMLDocument getCueAsTTML(); // return live document
DocumentFragment getCueAsHTML(); // return non-live, renderable HTML
fragment
}
>
> Thoughts?
>
> Cheers,
> Silvia.
>
>
Received on Monday, 9 September 2013 06:27:15 UTC