<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta name="generator" content="Doxygen 1.8.5"/> <title>libtiger: simple.c</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="dynsections.js"></script> <link href="doxygen.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="top"><!-- do not remove this div, it is closed by doxygen! --> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td style="padding-left: 0.5em;"> <div id="projectname">libtiger  <span id="projectnumber">0.3.4</span> </div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.5 --> <div id="navrow1" class="tabs"> <ul class="tablist"> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li> <li><a href="annotated.html"><span>Data Structures</span></a></li> <li><a href="files.html"><span>Files</span></a></li> <li><a href="examples.html"><span>Examples</span></a></li> </ul> </div> </div><!-- top --> <div class="header"> <div class="headertitle"> <div class="title">simple.c</div> </div> </div><!--header--> <div class="contents"> <div class="fragment"><div class="line"><span class="comment">/*</span></div> <div class="line"><span class="comment"> */</span></div> <div class="line"></div> <div class="line"><span class="preprocessor">#include <stdio.h></span></div> <div class="line"><span class="preprocessor">#include <stdlib.h></span></div> <div class="line"><span class="preprocessor">#include <ogg/ogg.h></span></div> <div class="line"><span class="preprocessor">#include <kate/kate.h></span></div> <div class="line"><span class="preprocessor">#include "common.h"</span></div> <div class="line"></div> <div class="line"><span class="comment">/* All the libtiger API is available from the main tiger header file: */</span></div> <div class="line"></div> <div class="line"><span class="preprocessor">#include <<a class="code" href="tiger_8h.html">tiger/tiger.h</a>></span></div> <div class="line"></div> <div class="line"><span class="preprocessor">#define FPS ((kate_float)25.0)</span></div> <div class="line"><span class="preprocessor"></span></div> <div class="line"><span class="keyword">static</span> <span class="keywordtype">void</span> step_render(tiger_renderer *tr,kate_float *t,kate_float t1)</div> <div class="line">{</div> <div class="line"> <span class="keywordflow">for</span> (;*t<=t1;*t+=(kate_float)1.0/FPS) {</div> <div class="line"> <a name="a0"></a><a class="code" href="group__renderer.html#gae15f847d25ce9c1b48ef29ecc75fcb60">tiger_renderer_update</a>(tr,*t,1);</div> <div class="line"> <span class="keywordflow">if</span> (<a name="a1"></a><a class="code" href="group__renderer.html#gaaf7c376dde566e84284036f0c5bb3b6b">tiger_renderer_is_dirty</a>(tr)) {</div> <div class="line"> <a name="a2"></a><a class="code" href="group__renderer.html#gab402a7397960e91f82bd7c91c2983435">tiger_renderer_render</a>(tr);</div> <div class="line"> }</div> <div class="line"> }</div> <div class="line">}</div> <div class="line"></div> <div class="line"><span class="keywordtype">int</span> main()</div> <div class="line">{</div> <div class="line"> ogg_sync_state oy;</div> <div class="line"> ogg_stream_state os;</div> <div class="line"> <span class="keywordtype">int</span> init=0;</div> <div class="line"> ogg_packet op;</div> <div class="line"> kate_state k;</div> <div class="line"> <span class="keyword">const</span> kate_event *ev;</div> <div class="line"> kate_packet kp;</div> <div class="line"> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *image;</div> <div class="line"> tiger_renderer *tr;</div> <div class="line"> kate_float render_time=(kate_float)0;</div> <div class="line"> kate_float end_time=(kate_float)0;</div> <div class="line"></div> <div class="line"> set_binary_file(stdin);</div> <div class="line"></div> <div class="line"> <span class="comment">/* create a buffer to draw to */</span></div> <div class="line"> image=(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*)malloc(640*480*4);</div> <div class="line"></div> <div class="line"> <span class="comment">/* we initialize ogg, kate, and tiger */</span></div> <div class="line"> ogg_sync_init(&oy);</div> <div class="line"> kate_high_decode_init(&k);</div> <div class="line"> <a name="a3"></a><a class="code" href="group__renderer.html#ga27e03677cff75565a7723e1711c498aa">tiger_renderer_create</a>(&tr);</div> <div class="line"> <a name="a4"></a><a class="code" href="group__renderer.html#ga616dfb49c1ea8b4dd44a204e702a51c9">tiger_renderer_set_buffer</a>(tr,image,640,480,640*4,0);</div> <div class="line"> <a name="a5"></a><a class="code" href="group__renderer.html#ga04ee034ba17a605f11801b66205c5ed3">tiger_renderer_set_surface_clear_color</a>(tr,1,0,0,0,0);</div> <div class="line"></div> <div class="line"> <span class="comment">/*</span></div> <div class="line"><span class="comment"> We then read packets and feed them to the libkate high level API. When</span></div> <div class="line"><span class="comment"> kate_high_decode_packetin returns a positive number, this signals the</span></div> <div class="line"><span class="comment"> end of the stream.</span></div> <div class="line"><span class="comment"> */</span></div> <div class="line"> <span class="keywordflow">while</span> (1) {</div> <div class="line"> <span class="keywordflow">if</span> (get_packet(&oy,&os,&init,&op)) <span class="keywordflow">break</span>;</div> <div class="line"> kate_packet_wrap(&kp,op.bytes,op.packet);</div> <div class="line"> <span class="keywordflow">if</span> (kate_high_decode_packetin(&k,&kp,&ev)>0) <span class="keywordflow">break</span>;</div> <div class="line"> <span class="comment">/* if the event is non NULL, we have an event */</span></div> <div class="line"> <span class="keywordflow">if</span> (ev) {</div> <div class="line"> step_render(tr,&render_time,ev->start_time);</div> <div class="line"> <span class="keywordflow">if</span> (ev->end_time>end_time) end_time=ev->end_time;</div> <div class="line"> <a name="a6"></a><a class="code" href="group__renderer.html#ga3a83f6b639322dbd99dd63ef03820716">tiger_renderer_add_event</a>(tr,k.ki,ev);</div> <div class="line"> }</div> <div class="line"> }</div> <div class="line"> step_render(tr,&render_time,end_time);</div> <div class="line"></div> <div class="line"> <span class="comment">/* That's it, we can now cleanup */</span></div> <div class="line"> <a name="a7"></a><a class="code" href="group__renderer.html#ga0f2963d8b49870418a58bfc0d3e7ee06">tiger_renderer_destroy</a>(tr);</div> <div class="line"> free(image);</div> <div class="line"></div> <div class="line"> ogg_stream_clear(&os);</div> <div class="line"> ogg_sync_clear(&oy);</div> <div class="line"></div> <div class="line"> kate_high_decode_clear(&k);</div> <div class="line"></div> <div class="line"> <span class="keywordflow">return</span> 0;</div> <div class="line">}</div> <div class="line"></div> </div><!-- fragment --> </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> Generated on Fri Oct 18 2013 05:12:52 for libtiger by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.5 </small></address> </body> </html>