Sophie

Sophie

distrib > Mandriva > 9.1 > ppc > by-pkgid > 9f39b42a4a9bb5f46373ffcca30c81df > files > 23

libzvbi0-devel-0.2.3-1mdk.ppc.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Events</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.2.18 -->
<center>
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="modules.html">Modules</a> &nbsp; <a class="qindex" href="annotated.html">Data Structures</a> &nbsp; <a class="qindex" href="functions.html">Data Fields</a> &nbsp; <a class="qindex" href="pages.html">Related Pages</a> &nbsp; <a class="qindex" href="examples.html">Examples</a> &nbsp; </center>
<hr><h1>Events<br>
<small>
[<a class="el" href="group__Service.html">Data Service Decoder</a>]</small>
</h1><table border=0 cellpadding=0 cellspacing=0>
<tr><td></td></tr>
<tr><td colspan=2><br><h2>Data Structures</h2></td></tr>
<tr><td nowrap align=right valign=top>struct &nbsp;</td><td valign=bottom><a class="el" href="structvbi__network.html">vbi_network</a></td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Network description.</em> <a href="structvbi__network.html#_details">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>struct &nbsp;</td><td valign=bottom><a class="el" href="structvbi__link.html">vbi_link</a></td></tr>
<tr><td nowrap align=right valign=top>struct &nbsp;</td><td valign=bottom><a class="el" href="structvbi__aspect__ratio.html">vbi_aspect_ratio</a></td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Information about the picture aspect ratio and open subtitles.</em> <a href="structvbi__aspect__ratio.html#_details">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>struct &nbsp;</td><td valign=bottom><a class="el" href="structvbi__program__info.html">vbi_program_info</a></td></tr>
<tr><td nowrap align=right valign=top>struct &nbsp;</td><td valign=bottom><a class="el" href="structvbi__event.html">vbi_event</a></td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Event union.</em> <a href="structvbi__event.html#_details">More...</a><em></em></font><br><br></td></tr>
<tr><td colspan=2><br><h2>US TV rating flags</h2></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="group__Event.html#a14">VBI_RATING_D</a>&nbsp;&nbsp;&nbsp;0x08</td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="group__Event.html#a22">VBI_RATING_L</a>&nbsp;&nbsp;&nbsp;0x04</td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="group__Event.html#a23">VBI_RATING_S</a>&nbsp;&nbsp;&nbsp;0x02</td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="group__Event.html#a24">VBI_RATING_V</a>&nbsp;&nbsp;&nbsp;0x01</td></tr>
<tr><td colspan=2><br><h2>Event types.</h2></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="group__Event.html#a15">VBI_EVENT_NONE</a>&nbsp;&nbsp;&nbsp;0x0000</td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="group__Event.html#a25">VBI_EVENT_CLOSE</a>&nbsp;&nbsp;&nbsp;0x0001</td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="group__Event.html#a26">VBI_EVENT_TTX_PAGE</a>&nbsp;&nbsp;&nbsp;0x0002</td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="group__Event.html#a27">VBI_EVENT_CAPTION</a>&nbsp;&nbsp;&nbsp;0x0004</td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="group__Event.html#a28">VBI_EVENT_NETWORK</a>&nbsp;&nbsp;&nbsp;0x0008</td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="group__Event.html#a29">VBI_EVENT_TRIGGER</a>&nbsp;&nbsp;&nbsp;0x0010</td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="group__Event.html#a30">VBI_EVENT_ASPECT</a>&nbsp;&nbsp;&nbsp;0x0040</td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="group__Event.html#a31">VBI_EVENT_PROG_INFO</a>&nbsp;&nbsp;&nbsp;0x0080</td></tr>
<tr><td colspan=2><br><h2>Typedefs</h2></td></tr>
<tr><td nowrap align=right valign=top>typedef unsigned int&nbsp;</td><td valign=bottom><a class="el" href="group__Event.html#a0">vbi_nuid</a></td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Unique network id (a libzvbi thing).</em> <a href="#a0"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>typedef vbi_link&nbsp;</td><td valign=bottom><a class="el" href="group__Event.html#a1">vbi_link</a></td></tr>
<tr><td nowrap align=right valign=top>typedef vbi_program_info&nbsp;</td><td valign=bottom><a class="el" href="group__Event.html#a2">vbi_program_info</a></td></tr>
<tr><td nowrap align=right valign=top><a name="a3" doxytag="Event::vbi_event"></a>
typedef vbi_event&nbsp;</td><td valign=bottom><a class="el" href="group__Event.html#a3">vbi_event</a></td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Event union.</em></font><br><br></td></tr>
<tr><td colspan=2><br><h2>Enumerations</h2></td></tr>
<tr><td nowrap align=right valign=top>enum &nbsp;</td><td valign=bottom><a class="el" href="group__Event.html#a16">vbi_link_type</a> { <br>
&nbsp;&nbsp;<a class="el" href="group__Event.html#a16a19">VBI_LINK_NONE</a> =  0, 
<br>
&nbsp;&nbsp;<a class="el" href="group__Event.html#a16a20">VBI_LINK_MESSAGE</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="group__Event.html#a16a21">VBI_LINK_PAGE</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="group__Event.html#a16a22">VBI_LINK_SUBPAGE</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="group__Event.html#a16a23">VBI_LINK_HTTP</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="group__Event.html#a16a24">VBI_LINK_FTP</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="group__Event.html#a16a25">VBI_LINK_EMAIL</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="group__Event.html#a16a26">VBI_LINK_LID</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="group__Event.html#a16a27">VBI_LINK_TELEWEB</a>
<br>
 }</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Link type.</em> <a href="#a16">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>enum &nbsp;</td><td valign=bottom><a class="el" href="group__Event.html#a17">vbi_itv_type</a> </td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>ITV link type.</em> <a href="#a17">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>enum &nbsp;</td><td valign=bottom><a class="el" href="group__Event.html#a18">vbi_subt</a> { <br>
&nbsp;&nbsp;<a class="el" href="group__Event.html#a18a34">VBI_SUBT_NONE</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="group__Event.html#a18a35">VBI_SUBT_ACTIVE</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="group__Event.html#a18a36">VBI_SUBT_MATTE</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="group__Event.html#a18a37">VBI_SUBT_UNKNOWN</a>
<br>
 }</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Open subtitle information.</em> <a href="#a18">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>enum &nbsp;</td><td valign=bottom><a class="el" href="group__Event.html#a19">vbi_rating_auth</a> </td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Program rating source.</em> <a href="#a19">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>enum &nbsp;</td><td valign=bottom><a class="el" href="group__Event.html#a20">vbi_prog_classf</a> </td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Program classification schemes.</em> <a href="#a20">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>enum &nbsp;</td><td valign=bottom><a class="el" href="group__Event.html#a21">vbi_audio_mode</a> { <br>
&nbsp;&nbsp;<a class="el" href="group__Event.html#a21a46">VBI_AUDIO_MODE_NONE</a> =  0, 
<br>
&nbsp;&nbsp;<a class="el" href="group__Event.html#a21a47">VBI_AUDIO_MODE_MONO</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="group__Event.html#a21a48">VBI_AUDIO_MODE_STEREO</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="group__Event.html#a21a49">VBI_AUDIO_MODE_STEREO_SURROUND</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="group__Event.html#a21a50">VBI_AUDIO_MODE_SIMULATED_STEREO</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="group__Event.html#a21a51">VBI_AUDIO_MODE_VIDEO_DESCRIPTIONS</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="group__Event.html#a21a52">VBI_AUDIO_MODE_NON_PROGRAM_AUDIO</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="group__Event.html#a21a53">VBI_AUDIO_MODE_SPECIAL_EFFECTS</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="group__Event.html#a21a54">VBI_AUDIO_MODE_DATA_SERVICE</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="group__Event.html#a21a55">VBI_AUDIO_MODE_UNKNOWN</a>
<br>
 }</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Type of audio transmitted on one (mono or stereo) audio track.</em> <a href="#a21">More...</a><em></em></font><br><br></td></tr>
<tr><td colspan=2><br><h2>Functions</h2></td></tr>
<tr><td nowrap align=right valign=top>const char *&nbsp;</td><td valign=bottom><a class="el" href="group__Event.html#a5">vbi_prog_type_string</a> (<a class="el" href="group__Event.html#a20">vbi_prog_classf</a> classf, int id)</td></tr>
<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="group__Event.html#a6">vbi_reset_prog_info</a> (<a class="el" href="structvbi__program__info.html">vbi_program_info</a> *pi)</td></tr>
<tr><td nowrap align=right valign=top>vbi_bool&nbsp;</td><td valign=bottom><a class="el" href="group__Event.html#a7">vbi_event_handler_add</a> (vbi_decoder *vbi, int event_mask, vbi_event_handler handler, void *user_data)</td></tr>
<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="group__Event.html#a8">vbi_event_handler_remove</a> (vbi_decoder *vbi, vbi_event_handler handler)</td></tr>
<tr><td nowrap align=right valign=top>vbi_bool&nbsp;</td><td valign=bottom><a class="el" href="group__Event.html#a9">vbi_event_handler_register</a> (vbi_decoder *vbi, int event_mask, vbi_event_handler handler, void *user_data)</td></tr>
<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="group__Event.html#a10">vbi_event_handler_unregister</a> (vbi_decoder *vbi, vbi_event_handler handler, void *user_data)</td></tr>
<tr><td nowrap align=right valign=top>const char *&nbsp;</td><td valign=bottom><a class="el" href="group__Event.html#a11">vbi_rating_string</a> (<a class="el" href="group__Event.html#a19">vbi_rating_auth</a> auth, int id)</td></tr>
<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="group__Event.html#a12">vbi_resolve_link</a> (<a class="el" href="structvbi__page.html">vbi_page</a> *pg, int column, int row, <a class="el" href="structvbi__link.html">vbi_link</a> *ld)</td></tr>
<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="group__Event.html#a13">vbi_resolve_home</a> (<a class="el" href="structvbi__page.html">vbi_page</a> *pg, <a class="el" href="structvbi__link.html">vbi_link</a> *ld)</td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Typically the transmission of VBI data like a Teletext or Closed Caption page spans several VBI lines or even video frames. So internally the data service decoder maintains caches accumulating data. When a page or other object is complete it calls the respective event handler to notify the application.
<p>
Clients can register any number of handlers needed, also different handlers for the same event. They will be called in the order registered from the <a class="el" href="group__Service.html#a4">vbi_decode()</a> function. Since they block decoding, they should return as soon as possible. The event structure and all data pointed to from there must be read only. The data is only valid until the handler returns. <hr><h2>Define Documentation</h2>
<a name="a14" doxytag="event.h::VBI_RATING_D"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> #define VBI_RATING_D&nbsp;&nbsp;&nbsp;0x08
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
"sexually suggestive dialog"     </td>
  </tr>
</table>
<a name="a15" doxytag="event.h::VBI_EVENT_NONE"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> #define VBI_EVENT_NONE&nbsp;&nbsp;&nbsp;0x0000
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
 No event.     </td>
  </tr>
</table>
<a name="a22" doxytag="event.h::VBI_RATING_L"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> #define VBI_RATING_L&nbsp;&nbsp;&nbsp;0x04
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
"indecent language"     </td>
  </tr>
</table>
<a name="a23" doxytag="event.h::VBI_RATING_S"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> #define VBI_RATING_S&nbsp;&nbsp;&nbsp;0x02
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
"sexual situations"     </td>
  </tr>
</table>
<a name="a24" doxytag="event.h::VBI_RATING_V"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> #define VBI_RATING_V&nbsp;&nbsp;&nbsp;0x01
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
"violence"     </td>
  </tr>
</table>
<a name="a25" doxytag="event.h::VBI_EVENT_CLOSE"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> #define VBI_EVENT_CLOSE&nbsp;&nbsp;&nbsp;0x0001
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
The vbi decoding context is about to be closed. This event is sent by <a class="el" href="group__Service.html#a3">vbi_decoder_delete()</a> and can be used to clean up event handlers.     </td>
  </tr>
</table>
<a name="a26" doxytag="event.h::VBI_EVENT_TTX_PAGE"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> #define VBI_EVENT_TTX_PAGE&nbsp;&nbsp;&nbsp;0x0002
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
The vbi decoder received and cached another Teletext page designated by ev.ttx_page.pgno and ev.ttx_page.subno.
<p>
ev.ttx_page.roll_header flags the page header as suitable for rolling page numbers, e. g. excluding pages transmitted out of order.
<p>
The ev.ttx_page.header_update flag is set when the header, excluding the page number and real time clock, changed since the last <code>VBI_EVENT_TTX_PAGE</code>. Note this may happen at midnight when the date string changes. The ev.ttx_page.clock_update flag is set when the real time clock changed since the last <code>VBI_EVENT_TTX_PAGE</code> (that is at most once per second). They are both set at the first <code>VBI_EVENT_TTX_PAGE</code> sent and unset while the received header or clock field is corrupted.
<p>
If any of the roll_header, header_update or clock_update flags are set ev.ttx_page.raw_header is a pointer to the raw header data (40 bytes), which remains valid until the event handler returns. ev.ttx_page.pn_offset will be the offset (0 ... 37) of the three digit page number in the raw or formatted header. Allways call <a class="el" href="group__Cache.html#a4">vbi_fetch_vt_page()</a> for proper translation of national characters and character attributes, the raw header is only provided here as a means to quickly detect changes.     </td>
  </tr>
</table>
<a name="a27" doxytag="event.h::VBI_EVENT_CAPTION"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> #define VBI_EVENT_CAPTION&nbsp;&nbsp;&nbsp;0x0004
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
A Closed Caption page has changed and needs visual update. The page or "CC channel" is designated by ev.caption.pgno, see vbi_pgno for details.
<p>
When the client is monitoring this page, the expected action is to call <a class="el" href="group__Cache.html#a3">vbi_fetch_cc_page()</a>. To speed up rendering more detailed update information is provided in vbi_page.dirty, see <a class="el" href="group__Page.html#a2">vbi_page</a>. The <a class="el" href="structvbi__page.html">vbi_page</a> will be a snapshot of the status at fetch time and not event time, vbi_page.dirty accumulates all changes since the last fetch.     </td>
  </tr>
</table>
<a name="a28" doxytag="event.h::VBI_EVENT_NETWORK"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> #define VBI_EVENT_NETWORK&nbsp;&nbsp;&nbsp;0x0008
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Some station/network identifier has been received or is no longer transmitted (<a class="el" href="structvbi__network.html">vbi_network</a> all zero, eg. after a channel switch). ev.network is a <a class="el" href="structvbi__network.html">vbi_network</a> object, read only. The event will not repeat*) unless a different identifier has been received and confirmed.
<p>
Minimum time to identify network, when data service is transmitted:  <table border=1 cellspacing=3 cellpadding=3><tr><td>VPS (DE/AT/CH only):</td><td>0.08 s </td></tr>
<tr><td>Teletext PDC, 8/30:</td><td>2 s </td></tr>
<tr><td>Teletext X/26:</td><td>unknown </td></tr>
<tr><td>XDS (US only):</td><td>unknown, between 0.1x to 10x seconds </td></tr></table>

<p>
*) VPS/TTX and XDS will not combine in real life, feeding the decoder with artificial data can confuse the logic.     </td>
  </tr>
</table>
<a name="a29" doxytag="event.h::VBI_EVENT_TRIGGER"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> #define VBI_EVENT_TRIGGER&nbsp;&nbsp;&nbsp;0x0010
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>

<p>
Triggers are sent by broadcasters to start some action on the user interface of modern TVs. Until libzvbi implements all ;-) of WebTV and SuperTeletext the information available are program related (or unrelated) URLs, short messages and Teletext page links.
<p>
This event is sent when a trigger has fired, ev.trigger points to a <a class="el" href="structvbi__link.html">vbi_link</a> structure describing the link in detail. The structure must be read only.     </td>
  </tr>
</table>
<a name="a30" doxytag="event.h::VBI_EVENT_ASPECT"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> #define VBI_EVENT_ASPECT&nbsp;&nbsp;&nbsp;0x0040
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>

<p>
The vbi decoder received new information (potentially from PAL WSS, NTSC XDS or EIA-J CPR-1204) about the program aspect ratio. ev.ratio is a pointer to a vbi_ratio structure. The structure must be read only.     </td>
  </tr>
</table>
<a name="a31" doxytag="event.h::VBI_EVENT_PROG_INFO"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> #define VBI_EVENT_PROG_INFO&nbsp;&nbsp;&nbsp;0x0080
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
We have new information about the current or next program. ev.prog_info is a <a class="el" href="structvbi__program__info.html">vbi_program_info</a> pointer (due to size), read only.
<p>
Preliminary.
<p>
XXX Info from Teletext not implemented yet. XXX Change to get_prog_info. network ditto?     </td>
  </tr>
</table>
<hr><h2>Typedef Documentation</h2>
<a name="a0" doxytag="event.h::vbi_nuid"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> typedef unsigned int vbi_nuid
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Unique network id (a libzvbi thing).
<p>
0 = unknown network, bit 31 reserved for preliminary nuids. Other network codes are arbitrary.     </td>
  </tr>
</table>
<a name="a1" doxytag="event.h::vbi_link"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> typedef struct vbi_link  vbi_link
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
General purpose link description for ATVEF (ITV, WebTV in the United States) and EACEM (SuperTeletext et al in Europe) triggers, Teletext TOP and FLOF navigation, and for links "guessed" by libzvbi from the text (e. g. page numbers and URLs). Usually not all fields will be used.     </td>
  </tr>
</table>
<a name="a2" doxytag="event.h::vbi_program_info"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> typedef struct vbi_program_info  vbi_program_info
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Information about the current program, preliminary.     </td>
  </tr>
</table>
<hr><h2>Enumeration Type Documentation</h2>
<a name="a16" doxytag="event.h::vbi_link_type"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> enum vbi_link_type
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Link type.
<p>
<dl compact><dt><b>Enumeration values: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em><a name="a16a19" doxytag="VBI_LINK_NONE"></a><em>VBI_LINK_NONE</em></em>&nbsp;</td><td>
<a class="el" href="group__Event.html#a12">vbi_resolve_link()</a> may return a link of this type on failure. </td></tr>
<tr><td valign=top><em><a name="a16a20" doxytag="VBI_LINK_MESSAGE"></a><em>VBI_LINK_MESSAGE</em></em>&nbsp;</td><td>
Not really a link, only <a class="el" href="structvbi__link.html">vbi_link</a>-&gt;name will be set. (Probably something like "Help! Help! The station is on fire!") </td></tr>
<tr><td valign=top><em><a name="a16a21" doxytag="VBI_LINK_PAGE"></a><em>VBI_LINK_PAGE</em></em>&nbsp;</td><td>
Points to a Teletext page, <a class="el" href="structvbi__link.html">vbi_link</a>-&gt;pgno and <a class="el" href="structvbi__link.html">vbi_link</a>-&gt;subno, eventually <a class="el" href="structvbi__link.html">vbi_link</a>-&gt;nuid and a descriptive text in <a class="el" href="structvbi__link.html">vbi_link</a>-&gt;name. </td></tr>
<tr><td valign=top><em><a name="a16a22" doxytag="VBI_LINK_SUBPAGE"></a><em>VBI_LINK_SUBPAGE</em></em>&nbsp;</td><td>
Also a Teletext page link, but this one is used exclusively to link subpages of the page containing the link. </td></tr>
<tr><td valign=top><em><a name="a16a23" doxytag="VBI_LINK_HTTP"></a><em>VBI_LINK_HTTP</em></em>&nbsp;</td><td>
<a class="el" href="structvbi__link.html">vbi_link</a>-&gt;url is a HTTP URL (like "<a href="http://zapping.sf.net">http://zapping.sf.net</a>"), eventually accompanied by a descriptive text <a class="el" href="structvbi__link.html">vbi_link</a>-&gt;name. </td></tr>
<tr><td valign=top><em><a name="a16a24" doxytag="VBI_LINK_FTP"></a><em>VBI_LINK_FTP</em></em>&nbsp;</td><td>
<a class="el" href="structvbi__link.html">vbi_link</a>-&gt;url is a FTP URL (like "<a href="ftp://foo.bar.com/baz">ftp://foo.bar.com/baz</a>"), eventually accompanied by a descriptive text <a class="el" href="structvbi__link.html">vbi_link</a>-&gt;name. </td></tr>
<tr><td valign=top><em><a name="a16a25" doxytag="VBI_LINK_EMAIL"></a><em>VBI_LINK_EMAIL</em></em>&nbsp;</td><td>
<a class="el" href="structvbi__link.html">vbi_link</a>-&gt;url is an e-mail address (like "mailto:<a href="mailto:foo@bar">foo@bar</a>"), eventually accompanied by a descriptive text <a class="el" href="structvbi__link.html">vbi_link</a>-&gt;name. </td></tr>
<tr><td valign=top><em><a name="a16a26" doxytag="VBI_LINK_LID"></a><em>VBI_LINK_LID</em></em>&nbsp;</td><td>
Is a trigger link id. Not useful, just ignore. </td></tr>
<tr><td valign=top><em><a name="a16a27" doxytag="VBI_LINK_TELEWEB"></a><em>VBI_LINK_TELEWEB</em></em>&nbsp;</td><td>
Is a SuperTeletext link, ignore. </td></tr>
</table>
</dl>
    </td>
  </tr>
</table>
<a name="a17" doxytag="event.h::vbi_itv_type"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> enum vbi_itv_type
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
ITV link type.
<p>
Some ITV (WebTV, ATVEF) triggers include a type id intended to filter relevant information. The names should speak for themselves. EACEM triggers always have type <code>VBI_WEBLINK_UNKNOWN</code>.     </td>
  </tr>
</table>
<a name="a18" doxytag="event.h::vbi_subt"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> enum vbi_subt
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Open subtitle information.
<p>
Open because they have been inserted into the picture, as opposed to closed subtitles (closed caption) encoded in the vbi. <dl compact><dt><b>Enumeration values: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em><a name="a18a34" doxytag="VBI_SUBT_NONE"></a><em>VBI_SUBT_NONE</em></em>&nbsp;</td><td>
No open subtitles. </td></tr>
<tr><td valign=top><em><a name="a18a35" doxytag="VBI_SUBT_ACTIVE"></a><em>VBI_SUBT_ACTIVE</em></em>&nbsp;</td><td>
Inserted in active picture. </td></tr>
<tr><td valign=top><em><a name="a18a36" doxytag="VBI_SUBT_MATTE"></a><em>VBI_SUBT_MATTE</em></em>&nbsp;</td><td>
Inserted in upper or lower letterbox bar. </td></tr>
<tr><td valign=top><em><a name="a18a37" doxytag="VBI_SUBT_UNKNOWN"></a><em>VBI_SUBT_UNKNOWN</em></em>&nbsp;</td><td>
Presence of open subtitles unknown. </td></tr>
</table>
</dl>
    </td>
  </tr>
</table>
<a name="a19" doxytag="event.h::vbi_rating_auth"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> enum vbi_rating_auth
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Program rating source.
<p>
If program rating information is available (also known in the U. S. as V-Chip data), this describes which rating scheme is being used: U. S. film, U. S. TV, Canadian English or French TV.  You can convert the rating code to a string with <a class="el" href="group__Event.html#a11">vbi_rating_string()</a>.
<p>
When the scheme is <code>VBI_RATING_TV_US</code>, additionally the DLSV rating flags will be set.     </td>
  </tr>
</table>
<a name="a20" doxytag="event.h::vbi_prog_classf"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> enum vbi_prog_classf
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Program classification schemes.
<p>
libzvbi understands two different program classification schemes, the EIA-608 based in the United States and the ETS 300 231 based one in Europe. You can convert the program type code into a string with <a class="el" href="group__Event.html#a5">vbi_prog_type_string()</a>.     </td>
  </tr>
</table>
<a name="a21" doxytag="event.h::vbi_audio_mode"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> enum vbi_audio_mode
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Type of audio transmitted on one (mono or stereo) audio track.
<p>
<dl compact><dt><b>Enumeration values: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em><a name="a21a46" doxytag="VBI_AUDIO_MODE_NONE"></a><em>VBI_AUDIO_MODE_NONE</em></em>&nbsp;</td><td>
No sound. </td></tr>
<tr><td valign=top><em><a name="a21a47" doxytag="VBI_AUDIO_MODE_MONO"></a><em>VBI_AUDIO_MODE_MONO</em></em>&nbsp;</td><td>
Mono audio. </td></tr>
<tr><td valign=top><em><a name="a21a48" doxytag="VBI_AUDIO_MODE_STEREO"></a><em>VBI_AUDIO_MODE_STEREO</em></em>&nbsp;</td><td>
Stereo audio. </td></tr>
<tr><td valign=top><em><a name="a21a49" doxytag="VBI_AUDIO_MODE_STEREO_SURROUND"></a><em>VBI_AUDIO_MODE_STEREO_SURROUND</em></em>&nbsp;</td><td>
Surround. </td></tr>
<tr><td valign=top><em><a name="a21a50" doxytag="VBI_AUDIO_MODE_SIMULATED_STEREO"></a><em>VBI_AUDIO_MODE_SIMULATED_STEREO</em></em>&nbsp;</td><td>
? </td></tr>
<tr><td valign=top><em><a name="a21a51" doxytag="VBI_AUDIO_MODE_VIDEO_DESCRIPTIONS"></a><em>VBI_AUDIO_MODE_VIDEO_DESCRIPTIONS</em></em>&nbsp;</td><td>
Spoken descriptions of the program for the blind, on a secondary audio track. </td></tr>
<tr><td valign=top><em><a name="a21a52" doxytag="VBI_AUDIO_MODE_NON_PROGRAM_AUDIO"></a><em>VBI_AUDIO_MODE_NON_PROGRAM_AUDIO</em></em>&nbsp;</td><td>
Unrelated to the current program. </td></tr>
<tr><td valign=top><em><a name="a21a53" doxytag="VBI_AUDIO_MODE_SPECIAL_EFFECTS"></a><em>VBI_AUDIO_MODE_SPECIAL_EFFECTS</em></em>&nbsp;</td><td>
? </td></tr>
<tr><td valign=top><em><a name="a21a54" doxytag="VBI_AUDIO_MODE_DATA_SERVICE"></a><em>VBI_AUDIO_MODE_DATA_SERVICE</em></em>&nbsp;</td><td>
? </td></tr>
<tr><td valign=top><em><a name="a21a55" doxytag="VBI_AUDIO_MODE_UNKNOWN"></a><em>VBI_AUDIO_MODE_UNKNOWN</em></em>&nbsp;</td><td>
We have no information what is transmitted. </td></tr>
</table>
</dl>
    </td>
  </tr>
</table>
<hr><h2>Function Documentation</h2>
<a name="a5" doxytag="event.h::vbi_prog_type_string"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> const char* vbi_prog_type_string </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="group__Event.html#a20">vbi_prog_classf</a>&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>classf</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>id</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>classf</em>&nbsp;</td><td>
From vbi_program_info.type_classf. </td></tr>
<tr><td valign=top><em>id</em>&nbsp;</td><td>
From vbi_program_info.type_id.</td></tr>
</table>
</dl>Translate a <a class="el" href="structvbi__program__info.html">vbi_program_info</a> program type code into a Latin-1 string, currently English only.
<p>
<dl compact><dt><b>Returns: </b></dt><dd>
 Static pointer to the string (don't free()), or <code>NULL</code> if this code is undefined. </dl>    </td>
  </tr>
</table>
<a name="a6" doxytag="event.h::vbi_reset_prog_info"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void vbi_reset_prog_info </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="structvbi__program__info.html">vbi_program_info</a> *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>&nbsp; <em>pi</em>          </td>
          <td class="md" valign="top">)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>pi</em>&nbsp;</td><td>
Convenience function to set a <a class="el" href="structvbi__program__info.html">vbi_program_info</a> structure to defaults. </td></tr>
</table>
</dl>    </td>
  </tr>
</table>
<a name="a7" doxytag="event.h::vbi_event_handler_add"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> vbi_bool vbi_event_handler_add </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">vbi_decoder *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>vbi</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>event_mask</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>vbi_event_handler&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>handler</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>void *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>user_data</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>vbi</em>&nbsp;</td><td>
Initialized vbi decoding context. </td></tr>
<tr><td valign=top><em>event_mask</em>&nbsp;</td><td>
Events the handler is waiting for. </td></tr>
<tr><td valign=top><em>handler</em>&nbsp;</td><td>
Event handler function. </td></tr>
<tr><td valign=top><em>user_data</em>&nbsp;</td><td>
Pointer passed to the handler.</td></tr>
</table>
</dl><dl compact><dt><b><a class="el" href="deprecated.html#_deprecated000006">Deprecated: </a></b></dt><dd>
Use <a class="el" href="group__Event.html#a9">vbi_event_handler_register()</a> in new code.</dl>
<p>
<dl compact><dt><b>Returns: </b></dt><dd>
 FALSE on failure. </dl>    </td>
  </tr>
</table>
<a name="a8" doxytag="event.h::vbi_event_handler_remove"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void vbi_event_handler_remove </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">vbi_decoder *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>vbi</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>vbi_event_handler&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>handler</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>vbi</em>&nbsp;</td><td>
Initialized vbi decoding context. </td></tr>
<tr><td valign=top><em>handler</em>&nbsp;</td><td>
Event handler function.</td></tr>
</table>
</dl><dl compact><dt><b><a class="el" href="deprecated.html#_deprecated000007">Deprecated: </a></b></dt><dd>
 Use <a class="el" href="group__Event.html#a9">vbi_event_handler_register()</a> in new code. </dl>     </td>
  </tr>
</table>
<a name="a9" doxytag="event.h::vbi_event_handler_register"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> vbi_bool vbi_event_handler_register </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">vbi_decoder *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>vbi</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>event_mask</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>vbi_event_handler&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>handler</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>void *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>user_data</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>vbi</em>&nbsp;</td><td>
Initialized vbi decoding context. </td></tr>
<tr><td valign=top><em>event_mask</em>&nbsp;</td><td>
Events the handler is waiting for. </td></tr>
<tr><td valign=top><em>handler</em>&nbsp;</td><td>
Event handler function. </td></tr>
<tr><td valign=top><em>user_data</em>&nbsp;</td><td>
Pointer passed to the handler.</td></tr>
</table>
</dl>Registers a new event handler. <em>event_mask</em> can be any 'or' of VBI_EVENT_ symbols, -1 for all events and 0 for none. When the <em>handler</em> with <em>user_data</em> is already registered, its event_mask will be changed. Any number of handlers can be registered, also different handlers for the same event which will be called in registration order.
<p>
Apart of adding handlers this function also enables and disables decoding of data services depending on the presence of at least one handler for the respective data. A <code>VBI_EVENT_TTX_PAGE</code> handler for example enables Teletext decoding.
<p>
This function can be safely called at any time, even from a handler.
<p>
<dl compact><dt><b>Returns: </b></dt><dd>
 <code>FALSE</code> on failure. </dl>    </td>
  </tr>
</table>
<a name="a10" doxytag="event.h::vbi_event_handler_unregister"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void vbi_event_handler_unregister </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">vbi_decoder *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>vbi</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>vbi_event_handler&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>handler</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>void *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>user_data</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>vbi</em>&nbsp;</td><td>
Initialized vbi decoding context. </td></tr>
<tr><td valign=top><em>handler</em>&nbsp;</td><td>
Event handler function. </td></tr>
<tr><td valign=top><em>user_data</em>&nbsp;</td><td>
Pointer passed to the handler.</td></tr>
</table>
</dl>Unregisters an event handler.
<p>
Apart of removing a handler this function also disables decoding of data services when no handler is registered to consume the respective data. Removing the last <code>VBI_EVENT_TTX_PAGE</code> handler for example disables Teletext decoding.
<p>
This function can be safely called at any time, even from a handler removing itself or another handler, and regardless if the <em>handler</em> has been successfully registered.     </td>
  </tr>
</table>
<a name="a11" doxytag="event.h::vbi_rating_string"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> const char* vbi_rating_string </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="group__Event.html#a19">vbi_rating_auth</a>&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>auth</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>id</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>auth</em>&nbsp;</td><td>
From vbi_program_info.rating_auth. </td></tr>
<tr><td valign=top><em>id</em>&nbsp;</td><td>
From vbi_program_info.rating_id.</td></tr>
</table>
</dl>Translate a <a class="el" href="structvbi__program__info.html">vbi_program_info</a> program rating code into a Latin-1 string, native language.
<p>
<em>return</em> Static pointer to the string (don't free()), or <code>NULL</code> if this code is undefined.     </td>
  </tr>
</table>
<a name="a12" doxytag="teletext.c::vbi_resolve_link"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void vbi_resolve_link </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="structvbi__page.html">vbi_page</a> *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>pg</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>column</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>row</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap><a class="el" href="structvbi__link.html">vbi_link</a> *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>ld</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>pg</em>&nbsp;</td><td>
With <a class="el" href="group__Cache.html#a4">vbi_fetch_vt_page()</a> obtained <a class="el" href="structvbi__page.html">vbi_page</a>. </td></tr>
<tr><td valign=top><em>column</em>&nbsp;</td><td>
Column 0 ... pg-&gt;columns - 1 of the character in question. </td></tr>
<tr><td valign=top><em>row</em>&nbsp;</td><td>
Row 0 ... pg-&gt;rows - 1 of the character in question. </td></tr>
<tr><td valign=top><em>ld</em>&nbsp;</td><td>
Place to store information about the link.</td></tr>
</table>
</dl>A <a class="el" href="structvbi__page.html">vbi_page</a> (in practice only Teletext pages) may contain hyperlinks such as HTTP URLs, e-mail addresses or links to other pages. Characters being part of a hyperlink have a set <a class="el" href="structvbi__char.html">vbi_char</a>-&gt;link flag, this function returns a more verbose description of the link.     </td>
  </tr>
</table>
<a name="a13" doxytag="teletext.c::vbi_resolve_home"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void vbi_resolve_home </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="structvbi__page.html">vbi_page</a> *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>pg</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap><a class="el" href="structvbi__link.html">vbi_link</a> *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>ld</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>pg</em>&nbsp;</td><td>
With <a class="el" href="group__Cache.html#a4">vbi_fetch_vt_page()</a> obtained <a class="el" href="structvbi__page.html">vbi_page</a>. </td></tr>
<tr><td valign=top><em>ld</em>&nbsp;</td><td>
Place to store information about the link.</td></tr>
</table>
</dl>All Teletext pages have a built-in home link, by default page 100, but can also be the magazine intro page or another page selected by the editor.     </td>
  </tr>
</table>
<hr><address style="align: right;"><small>Generated on Thu Jan 2 16:03:41 2003 for ZVBI Library by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0 
width=110 height=53></a>1.2.18 </small></address>
</body>
</html>