Files
picovga-cmake/docs/group__ScreenGroup.html
2025-08-26 20:47:11 -07:00

2254 lines
120 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>PicoVGA: Screen Layout</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="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
<link href="custom.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 id="projectlogo"><img alt="Logo" src="logo.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">PicoVGA
&#160;<span id="projectnumber">1.2-cmake</span>
</div>
<div id="projectbrief">VGA/TV display on Raspberry Pico</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('group__ScreenGroup.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">Screen Layout</div> </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
<p>Defining the layout of the display. </p>
<p>When displaying screen image, the default pointer is <a class="el" href="group__ScreenGroup.html#ga9c8a0032cf1145c5a6c369193a134a78">pScreen</a> for the library. It points to the <a class="el" href="structsScreen.html" title="Video screen (on change update SSCREEN_* in define.h)">sScreen</a> structure that describes the contents of the display. The Raspberry Pico has a limited RAM size and cannot accommodate a high resolution image. Therefore, the image must be composed of smaller segments to minimize the memory-intensive parts. </p><dl class="section note"><dt>Note</dt><dd>The following descriptions of the image format only apply to the base image layer 0. It is the only one that can contain segments in different formats. Overlay layers 1 through 3 are independent of the base layer format, sharing only the total screen area with the base layer but using their own image format. </dd></dl>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structsSegm.html">sSegm</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Video segment (on change update SSEGM_* in <a class="el" href="define_8h.html" title="VGA common definitions of C and ASM.">define.h</a>) <a href="structsSegm.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structsStrip.html">sStrip</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Video strip (on change update SSTRIP_* in <a class="el" href="define_8h.html" title="VGA common definitions of C and ASM.">define.h</a>) <a href="structsStrip.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structsScreen.html">sScreen</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Video screen (on change update SSCREEN_* in <a class="el" href="define_8h.html" title="VGA common definitions of C and ASM.">define.h</a>) <a href="structsScreen.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga046f23135a9d72c584f6aae5dfc03ca4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ScreenGroup.html#ga046f23135a9d72c584f6aae5dfc03ca4">ScreenClear</a> (<a class="el" href="structsScreen.html">sScreen</a> *s)</td></tr>
<tr class="memdesc:ga046f23135a9d72c584f6aae5dfc03ca4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear screen (set 0 strips, does not modify sprites) <a href="group__ScreenGroup.html#ga046f23135a9d72c584f6aae5dfc03ca4">More...</a><br /></td></tr>
<tr class="separator:ga046f23135a9d72c584f6aae5dfc03ca4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa87f4ccef65edf82ea94f1f00dcff88e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsStrip.html">sStrip</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ScreenGroup.html#gaa87f4ccef65edf82ea94f1f00dcff88e">ScreenAddStrip</a> (<a class="el" href="structsScreen.html">sScreen</a> *s, int height)</td></tr>
<tr class="memdesc:gaa87f4ccef65edf82ea94f1f00dcff88e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add empty strip to the screen. <a href="group__ScreenGroup.html#gaa87f4ccef65edf82ea94f1f00dcff88e">More...</a><br /></td></tr>
<tr class="separator:gaa87f4ccef65edf82ea94f1f00dcff88e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab20230d462f0d84f3bff123192b97faa"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsSegm.html">sSegm</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ScreenGroup.html#gab20230d462f0d84f3bff123192b97faa">ScreenAddSegm</a> (<a class="el" href="structsStrip.html">sStrip</a> *strip, int width)</td></tr>
<tr class="memdesc:gab20230d462f0d84f3bff123192b97faa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add empty segment to video strip; returns pointer to the segment and initialises it to defaults. <a href="group__ScreenGroup.html#gab20230d462f0d84f3bff123192b97faa">More...</a><br /></td></tr>
<tr class="separator:gab20230d462f0d84f3bff123192b97faa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacf69e978d287eff0f18d30c4c77a2e42"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ScreenGroup.html#gacf69e978d287eff0f18d30c4c77a2e42">ScreenSegmColor</a> (<a class="el" href="structsSegm.html">sSegm</a> *segm, u32 col1, u32 col2)</td></tr>
<tr class="memdesc:gacf69e978d287eff0f18d30c4c77a2e42"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set video segment to simple color format GF_COLOR. <a href="group__ScreenGroup.html#gacf69e978d287eff0f18d30c4c77a2e42">More...</a><br /></td></tr>
<tr class="separator:gacf69e978d287eff0f18d30c4c77a2e42"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4df2e7522b0f9c0e996cccbfb0a4ace6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ScreenGroup.html#ga4df2e7522b0f9c0e996cccbfb0a4ace6">ScreenSegmGrad1</a> (<a class="el" href="structsSegm.html">sSegm</a> *segm, const void *data, int wb)</td></tr>
<tr class="memdesc:ga4df2e7522b0f9c0e996cccbfb0a4ace6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set video segment to gradient with 1 line. <a href="group__ScreenGroup.html#ga4df2e7522b0f9c0e996cccbfb0a4ace6">More...</a><br /></td></tr>
<tr class="separator:ga4df2e7522b0f9c0e996cccbfb0a4ace6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga289768c9e54878b14765074cd0b26167"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ScreenGroup.html#ga289768c9e54878b14765074cd0b26167">ScreenSegmGrad2</a> (<a class="el" href="structsSegm.html">sSegm</a> *segm, const void *data, int wb)</td></tr>
<tr class="memdesc:ga289768c9e54878b14765074cd0b26167"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set video segment to gradient with 2 lines. <a href="group__ScreenGroup.html#ga289768c9e54878b14765074cd0b26167">More...</a><br /></td></tr>
<tr class="separator:ga289768c9e54878b14765074cd0b26167"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6132ac135c0097ff77e46500727cf80a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ScreenGroup.html#ga6132ac135c0097ff77e46500727cf80a">ScreenSegmGraph8</a> (<a class="el" href="structsSegm.html">sSegm</a> *segm, const void *data, int wb)</td></tr>
<tr class="memdesc:ga6132ac135c0097ff77e46500727cf80a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set video segment to native 8-bit graphics (R3G3B2) <a href="group__ScreenGroup.html#ga6132ac135c0097ff77e46500727cf80a">More...</a><br /></td></tr>
<tr class="separator:ga6132ac135c0097ff77e46500727cf80a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga63c742a5535d26ecdf6d85f3d9b9d5ff"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ScreenGroup.html#ga63c742a5535d26ecdf6d85f3d9b9d5ff">GenPal16Trans</a> (u16 *trans, const u8 *pal)</td></tr>
<tr class="memdesc:ga63c742a5535d26ecdf6d85f3d9b9d5ff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate 16-color palette translation table. <a href="group__ScreenGroup.html#ga63c742a5535d26ecdf6d85f3d9b9d5ff">More...</a><br /></td></tr>
<tr class="separator:ga63c742a5535d26ecdf6d85f3d9b9d5ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8b1e1ec0a803677fccc326613f58fedd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ScreenGroup.html#ga8b1e1ec0a803677fccc326613f58fedd">ScreenSegmGraph4</a> (<a class="el" href="structsSegm.html">sSegm</a> *segm, const void *data, const void *trans, int wb)</td></tr>
<tr class="memdesc:ga8b1e1ec0a803677fccc326613f58fedd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set video segment to 4-bit palette graphics. <a href="group__ScreenGroup.html#ga8b1e1ec0a803677fccc326613f58fedd">More...</a><br /></td></tr>
<tr class="separator:ga8b1e1ec0a803677fccc326613f58fedd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0e50909cbf3fb62b0f274880bce1bac4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ScreenGroup.html#ga0e50909cbf3fb62b0f274880bce1bac4">GenPal4Trans</a> (u32 *trans, const u8 *pal)</td></tr>
<tr class="memdesc:ga0e50909cbf3fb62b0f274880bce1bac4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate palette 4 translation table for function. <a href="group__ScreenGroup.html#ga0e50909cbf3fb62b0f274880bce1bac4">More...</a><br /></td></tr>
<tr class="separator:ga0e50909cbf3fb62b0f274880bce1bac4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae011fe9e400a31a9a2f7aeacab8f7350"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ScreenGroup.html#gae011fe9e400a31a9a2f7aeacab8f7350">ScreenSegmGraph2</a> (<a class="el" href="structsSegm.html">sSegm</a> *segm, const void *data, const void *trans, int wb)</td></tr>
<tr class="memdesc:gae011fe9e400a31a9a2f7aeacab8f7350"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set video segment to 2-bit palette graphics. <a href="group__ScreenGroup.html#gae011fe9e400a31a9a2f7aeacab8f7350">More...</a><br /></td></tr>
<tr class="separator:gae011fe9e400a31a9a2f7aeacab8f7350"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabd19f136076734d48063f3ac522b12b4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ScreenGroup.html#gabd19f136076734d48063f3ac522b12b4">ScreenSegmGraph1</a> (<a class="el" href="structsSegm.html">sSegm</a> *segm, const void *data, u8 bg, u8 fg, int wb)</td></tr>
<tr class="memdesc:gabd19f136076734d48063f3ac522b12b4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set video segment to 1-bit palette graphics. <a href="group__ScreenGroup.html#gabd19f136076734d48063f3ac522b12b4">More...</a><br /></td></tr>
<tr class="separator:gabd19f136076734d48063f3ac522b12b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf43a2819276e1a80aacf8c69ce99e019"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ScreenGroup.html#gaf43a2819276e1a80aacf8c69ce99e019">ScreenSegmMText</a> (<a class="el" href="structsSegm.html">sSegm</a> *segm, const void *data, const void *font, u16 fontheight, u8 bg, u8 fg, int wb)</td></tr>
<tr class="memdesc:gaf43a2819276e1a80aacf8c69ce99e019"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set video segment to 8-pixel mono text. <a href="group__ScreenGroup.html#gaf43a2819276e1a80aacf8c69ce99e019">More...</a><br /></td></tr>
<tr class="separator:gaf43a2819276e1a80aacf8c69ce99e019"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad2aa166e6a7419e3a76b6284e1d8d202"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ScreenGroup.html#gad2aa166e6a7419e3a76b6284e1d8d202">ScreenSegmAText</a> (<a class="el" href="structsSegm.html">sSegm</a> *segm, const void *data, const void *font, u16 fontheight, const void *pal, int wb)</td></tr>
<tr class="memdesc:gad2aa166e6a7419e3a76b6284e1d8d202"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set video segment to 8-pixel attribute text. <a href="group__ScreenGroup.html#gad2aa166e6a7419e3a76b6284e1d8d202">More...</a><br /></td></tr>
<tr class="separator:gad2aa166e6a7419e3a76b6284e1d8d202"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga46604c7b349607634cc7a447a58d1daf"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ScreenGroup.html#ga46604c7b349607634cc7a447a58d1daf">ScreenSegmFText</a> (<a class="el" href="structsSegm.html">sSegm</a> *segm, const void *data, const void *font, u16 fontheight, u8 bg, int wb)</td></tr>
<tr class="memdesc:ga46604c7b349607634cc7a447a58d1daf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set video segment to 8-pixel foreground color text. <a href="group__ScreenGroup.html#ga46604c7b349607634cc7a447a58d1daf">More...</a><br /></td></tr>
<tr class="separator:ga46604c7b349607634cc7a447a58d1daf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafac348d4c71322a91bcdbe5fbcd89313"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ScreenGroup.html#gafac348d4c71322a91bcdbe5fbcd89313">ScreenSegmCText</a> (<a class="el" href="structsSegm.html">sSegm</a> *segm, const void *data, const void *font, u16 fontheight, int wb)</td></tr>
<tr class="memdesc:gafac348d4c71322a91bcdbe5fbcd89313"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set video segment to 8-pixel color text. <a href="group__ScreenGroup.html#gafac348d4c71322a91bcdbe5fbcd89313">More...</a><br /></td></tr>
<tr class="separator:gafac348d4c71322a91bcdbe5fbcd89313"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaabefa0d870166b1d755eca211dd5167e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ScreenGroup.html#gaabefa0d870166b1d755eca211dd5167e">ScreenSegmGText</a> (<a class="el" href="structsSegm.html">sSegm</a> *segm, const void *data, const void *font, u8 fontheight, u8 bg, const void *grad, int wb)</td></tr>
<tr class="memdesc:gaabefa0d870166b1d755eca211dd5167e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set video segment to 8-pixel gradient color text. <a href="group__ScreenGroup.html#gaabefa0d870166b1d755eca211dd5167e">More...</a><br /></td></tr>
<tr class="separator:gaabefa0d870166b1d755eca211dd5167e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac9f53f0344affb6b5f4f11484c22772f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ScreenGroup.html#gac9f53f0344affb6b5f4f11484c22772f">ScreenSegmDText</a> (<a class="el" href="structsSegm.html">sSegm</a> *segm, const void *data, const void *font, u8 fontheight, u8 bg, const void *grad, int wb)</td></tr>
<tr class="memdesc:gac9f53f0344affb6b5f4f11484c22772f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set video segment to 8-pixel double gradient color text. <a href="group__ScreenGroup.html#gac9f53f0344affb6b5f4f11484c22772f">More...</a><br /></td></tr>
<tr class="separator:gac9f53f0344affb6b5f4f11484c22772f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabae596ff5e55711a382c94cdbe068b14"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ScreenGroup.html#gabae596ff5e55711a382c94cdbe068b14">ScreenSegmTile</a> (<a class="el" href="structsSegm.html">sSegm</a> *segm, const void *data, const void *tiles, int w, int h, int wb)</td></tr>
<tr class="memdesc:gabae596ff5e55711a382c94cdbe068b14"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set video segment to tiles. <a href="group__ScreenGroup.html#gabae596ff5e55711a382c94cdbe068b14">More...</a><br /></td></tr>
<tr class="separator:gabae596ff5e55711a382c94cdbe068b14"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5de2fa720bb6488ff4aaf868bb6c272c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ScreenGroup.html#ga5de2fa720bb6488ff4aaf868bb6c272c">ScreenSegmTile2</a> (<a class="el" href="structsSegm.html">sSegm</a> *segm, const void *data, const void *tiles, int w, int h, int tilewb, int wb)</td></tr>
<tr class="memdesc:ga5de2fa720bb6488ff4aaf868bb6c272c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set video segment to alternate tiles. <a href="group__ScreenGroup.html#ga5de2fa720bb6488ff4aaf868bb6c272c">More...</a><br /></td></tr>
<tr class="separator:ga5de2fa720bb6488ff4aaf868bb6c272c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7f08ce542135baab110f2b51100dd1ae"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ScreenGroup.html#ga7f08ce542135baab110f2b51100dd1ae">ScreenSegmLevel</a> (<a class="el" href="structsSegm.html">sSegm</a> *segm, const void *data, u8 zero, u8 bg, u8 fg)</td></tr>
<tr class="memdesc:ga7f08ce542135baab110f2b51100dd1ae"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set video segment to level graph GF_LEVEL. <a href="group__ScreenGroup.html#ga7f08ce542135baab110f2b51100dd1ae">More...</a><br /></td></tr>
<tr class="separator:ga7f08ce542135baab110f2b51100dd1ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabfce65d432ba3ba23b9e9d26cb7e0833"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ScreenGroup.html#gabfce65d432ba3ba23b9e9d26cb7e0833">ScreenSegmLevelGrad</a> (<a class="el" href="structsSegm.html">sSegm</a> *segm, const void *data, const void *sample1, const void *sample2)</td></tr>
<tr class="memdesc:gabfce65d432ba3ba23b9e9d26cb7e0833"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set video segment to leve gradient graph GF_LEVELGRAD. <a href="group__ScreenGroup.html#gabfce65d432ba3ba23b9e9d26cb7e0833">More...</a><br /></td></tr>
<tr class="separator:gabfce65d432ba3ba23b9e9d26cb7e0833"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga08f6e07b32d0562225dd278369b86f25"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ScreenGroup.html#ga08f6e07b32d0562225dd278369b86f25">ScreenSegmOscil</a> (<a class="el" href="structsSegm.html">sSegm</a> *segm, const void *data, u8 bg, u8 fg, int pixh)</td></tr>
<tr class="memdesc:ga08f6e07b32d0562225dd278369b86f25"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set video segment to oscilloscope 1-pixel graph GF_OSCIL. <a href="group__ScreenGroup.html#ga08f6e07b32d0562225dd278369b86f25">More...</a><br /></td></tr>
<tr class="separator:ga08f6e07b32d0562225dd278369b86f25"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6658bae842b00873fbd81ff314e885f2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ScreenGroup.html#ga6658bae842b00873fbd81ff314e885f2">ScreenSegmOscLine</a> (<a class="el" href="structsSegm.html">sSegm</a> *segm, const void *data, u8 bg, u8 fg)</td></tr>
<tr class="memdesc:ga6658bae842b00873fbd81ff314e885f2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set video segment to oscilloscope line graph GF_OSCLIN. <a href="group__ScreenGroup.html#ga6658bae842b00873fbd81ff314e885f2">More...</a><br /></td></tr>
<tr class="separator:ga6658bae842b00873fbd81ff314e885f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga415f2e80d3d6e92cb026401cba09331f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ScreenGroup.html#ga415f2e80d3d6e92cb026401cba09331f">GenPal4Plane</a> (u32 *trans, const u8 *pal)</td></tr>
<tr class="memdesc:ga415f2e80d3d6e92cb026401cba09331f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate palette 4-color translation table for function <a class="el" href="group__ScreenGroup.html#ga3fd07eb06a7bdc8ef8b827d5c2e6a7a8" title="Set video segment to 4-color on 2-planes graphics.">ScreenSegmPlane2()</a> <a href="group__ScreenGroup.html#ga415f2e80d3d6e92cb026401cba09331f">More...</a><br /></td></tr>
<tr class="separator:ga415f2e80d3d6e92cb026401cba09331f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3fd07eb06a7bdc8ef8b827d5c2e6a7a8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ScreenGroup.html#ga3fd07eb06a7bdc8ef8b827d5c2e6a7a8">ScreenSegmPlane2</a> (<a class="el" href="structsSegm.html">sSegm</a> *segm, const void *data, int plane, const void *trans, int wb)</td></tr>
<tr class="memdesc:ga3fd07eb06a7bdc8ef8b827d5c2e6a7a8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set video segment to 4-color on 2-planes graphics. <a href="group__ScreenGroup.html#ga3fd07eb06a7bdc8ef8b827d5c2e6a7a8">More...</a><br /></td></tr>
<tr class="separator:ga3fd07eb06a7bdc8ef8b827d5c2e6a7a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga032c5a372e2ff20f012097deaf1557d6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ScreenGroup.html#ga032c5a372e2ff20f012097deaf1557d6">ScreenSegmAttrib8</a> (<a class="el" href="structsSegm.html">sSegm</a> *segm, const void *data, const void *attr, const u8 *pal, int wb)</td></tr>
<tr class="memdesc:ga032c5a372e2ff20f012097deaf1557d6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set video segment to 2x4 bit color attribute per 8x8 pixel sample graphics. <a href="group__ScreenGroup.html#ga032c5a372e2ff20f012097deaf1557d6">More...</a><br /></td></tr>
<tr class="separator:ga032c5a372e2ff20f012097deaf1557d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga91307fe494a56bdc90abe81fd29c883b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ScreenGroup.html#ga91307fe494a56bdc90abe81fd29c883b">ScreenSegmProgress</a> (<a class="el" href="structsSegm.html">sSegm</a> *segm, const void *data, const void *sample1, const void *sample2)</td></tr>
<tr class="memdesc:ga91307fe494a56bdc90abe81fd29c883b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set video segment to horizontal progress indicator GF_PROGRESS. <a href="group__ScreenGroup.html#ga91307fe494a56bdc90abe81fd29c883b">More...</a><br /></td></tr>
<tr class="separator:ga91307fe494a56bdc90abe81fd29c883b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac6b3d9370076b7815b6e93cc8dd1331a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ScreenGroup.html#gac6b3d9370076b7815b6e93cc8dd1331a">ScreenSegmGraph8Mat</a> (<a class="el" href="structsSegm.html">sSegm</a> *segm, const void *data, const int *mat, u16 xbits, u16 ybits)</td></tr>
<tr class="memdesc:gac6b3d9370076b7815b6e93cc8dd1331a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set video segment to 8-bit graphics with 2D matrix transformation. <a href="group__ScreenGroup.html#gac6b3d9370076b7815b6e93cc8dd1331a">More...</a><br /></td></tr>
<tr class="separator:gac6b3d9370076b7815b6e93cc8dd1331a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3114024dae44741ce831108307f22ac9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ScreenGroup.html#ga3114024dae44741ce831108307f22ac9">ScreenSegmGraph8Persp</a> (<a class="el" href="structsSegm.html">sSegm</a> *segm, const void *data, const int *mat, u16 xbits, u16 ybits, u16 horiz)</td></tr>
<tr class="memdesc:ga3114024dae44741ce831108307f22ac9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set video segment to 8-bit graphics with perspective projection. <a href="group__ScreenGroup.html#ga3114024dae44741ce831108307f22ac9">More...</a><br /></td></tr>
<tr class="separator:ga3114024dae44741ce831108307f22ac9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga49a3e79f7c5d1bbeec72b66985c0bc6a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ScreenGroup.html#ga49a3e79f7c5d1bbeec72b66985c0bc6a">ScreenSegmTilePersp</a> (<a class="el" href="structsSegm.html">sSegm</a> *segm, const u8 *map, const u8 *tiles, const int *mat, u8 mapwbits, u8 maphbits, u8 tilebits, s8 horizon)</td></tr>
<tr class="memdesc:ga49a3e79f7c5d1bbeec72b66985c0bc6a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set video segment to tiles with perspective. <a href="group__ScreenGroup.html#ga49a3e79f7c5d1bbeec72b66985c0bc6a">More...</a><br /></td></tr>
<tr class="separator:ga49a3e79f7c5d1bbeec72b66985c0bc6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga254ec144884d63aed1bc0f22a1b06c6d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ScreenGroup.html#ga254ec144884d63aed1bc0f22a1b06c6d">ScreenSegmTilePersp15</a> (<a class="el" href="structsSegm.html">sSegm</a> *segm, const u8 *map, const u8 *tiles, const int *mat, u8 mapwbits, u8 maphbits, u8 tilebits, s8 horizon)</td></tr>
<tr class="memdesc:ga254ec144884d63aed1bc0f22a1b06c6d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set video segment to tiles with perspective, 1.5 pixels. <a href="group__ScreenGroup.html#ga254ec144884d63aed1bc0f22a1b06c6d">More...</a><br /></td></tr>
<tr class="separator:ga254ec144884d63aed1bc0f22a1b06c6d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaccae48338e65347201543eed10bdcb3f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ScreenGroup.html#gaccae48338e65347201543eed10bdcb3f">ScreenSegmTilePersp2</a> (<a class="el" href="structsSegm.html">sSegm</a> *segm, const u8 *map, const u8 *tiles, const int *mat, u8 mapwbits, u8 maphbits, u8 tilebits, s8 horizon)</td></tr>
<tr class="memdesc:gaccae48338e65347201543eed10bdcb3f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set video segment to tiles with perspective, double pixels. <a href="group__ScreenGroup.html#gaccae48338e65347201543eed10bdcb3f">More...</a><br /></td></tr>
<tr class="separator:gaccae48338e65347201543eed10bdcb3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga90863ea08105ea7aed367cd6f1626251"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ScreenGroup.html#ga90863ea08105ea7aed367cd6f1626251">ScreenSegmTilePersp3</a> (<a class="el" href="structsSegm.html">sSegm</a> *segm, const u8 *map, const u8 *tiles, const int *mat, u8 mapwbits, u8 maphbits, u8 tilebits, s8 horizon)</td></tr>
<tr class="memdesc:ga90863ea08105ea7aed367cd6f1626251"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set video segment to tiles with perspective, triple pixels. <a href="group__ScreenGroup.html#ga90863ea08105ea7aed367cd6f1626251">More...</a><br /></td></tr>
<tr class="separator:ga90863ea08105ea7aed367cd6f1626251"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaff0df01b94efb9c244ee3c91883503be"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ScreenGroup.html#gaff0df01b94efb9c244ee3c91883503be">ScreenSegmTilePersp4</a> (<a class="el" href="structsSegm.html">sSegm</a> *segm, const u8 *map, const u8 *tiles, const int *mat, u8 mapwbits, u8 maphbits, u8 tilebits, s8 horizon)</td></tr>
<tr class="memdesc:gaff0df01b94efb9c244ee3c91883503be"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set video segment to tiles with perspective, quadruple pixels. <a href="group__ScreenGroup.html#gaff0df01b94efb9c244ee3c91883503be">More...</a><br /></td></tr>
<tr class="separator:gaff0df01b94efb9c244ee3c91883503be"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:ga6621d6bc2191e53ef7c66db1514ff9c3"><td class="memItemLeft" align="right" valign="top"><a id="ga6621d6bc2191e53ef7c66db1514ff9c3"></a>
<a class="el" href="structsScreen.html">sScreen</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ScreenGroup.html#ga6621d6bc2191e53ef7c66db1514ff9c3">Screen</a></td></tr>
<tr class="memdesc:ga6621d6bc2191e53ef7c66db1514ff9c3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default video screen. <br /></td></tr>
<tr class="separator:ga6621d6bc2191e53ef7c66db1514ff9c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9c8a0032cf1145c5a6c369193a134a78"><td class="memItemLeft" align="right" valign="top"><a id="ga9c8a0032cf1145c5a6c369193a134a78"></a>
<a class="el" href="structsScreen.html">sScreen</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ScreenGroup.html#ga9c8a0032cf1145c5a6c369193a134a78">pScreen</a></td></tr>
<tr class="memdesc:ga9c8a0032cf1145c5a6c369193a134a78"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pointer to current video screen. <br /></td></tr>
<tr class="separator:ga9c8a0032cf1145c5a6c369193a134a78"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a id="ga046f23135a9d72c584f6aae5dfc03ca4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga046f23135a9d72c584f6aae5dfc03ca4">&#9670;&nbsp;</a></span>ScreenClear()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ScreenClear </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structsScreen.html">sScreen</a> *&#160;</td>
<td class="paramname"><em>s</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Clear screen (set 0 strips, does not modify sprites) </p>
<p>Resets the display handler structures, clearing the display. At a minimum, this function should be called before initializing the videmode. It initializes the display content descriptor structure pointed to by pScreen (usually the default structure Screen of the library) by setting the number of segments to 0. The screen will be black until we fill it with content descriptors </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">s</td><td>Pointer to screen to clear </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gaa87f4ccef65edf82ea94f1f00dcff88e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa87f4ccef65edf82ea94f1f00dcff88e">&#9670;&nbsp;</a></span>ScreenAddStrip()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structsStrip.html">sStrip</a>* ScreenAddStrip </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structsScreen.html">sScreen</a> *&#160;</td>
<td class="paramname"><em>s</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>height</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Add empty strip to the screen. </p>
<p>This function adds a new horizontal bar of the specified number of video lines to the end of the screen definition. The maximum number of stripes is specified by the STRIPMAX constant (8 by default) in the <a class="el" href="vga__config_8h_source.html">vga_config.h</a> file. Without added segments, the bar is empty (black). </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">s</td><td>The screen to add strip </td></tr>
<tr><td class="paramname">height</td><td>The number of video lines in the strip </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Pointer to the new strip </dd></dl>
</div>
</div>
<a id="gab20230d462f0d84f3bff123192b97faa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gab20230d462f0d84f3bff123192b97faa">&#9670;&nbsp;</a></span>ScreenAddSegm()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structsSegm.html">sSegm</a>* ScreenAddSegm </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structsStrip.html">sStrip</a> *&#160;</td>
<td class="paramname"><em>strip</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>width</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Add empty segment to video strip; returns pointer to the segment and initialises it to defaults. </p>
<p>This function adds a new image segment of the specified width to the end of the strip. The segment will contain one image format. For the vast majority of formats, the width must be a multiple of 4 (a multiple of 4 pixels). </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">strip</td><td>The strip to add the segment to </td></tr>
<tr><td class="paramname">width</td><td>The width of the segment in pixels (for many formats must be a multiple of 4) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Pointer to new segment initialized to defaults </dd></dl>
</div>
</div>
<a id="gacf69e978d287eff0f18d30c4c77a2e42"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gacf69e978d287eff0f18d30c4c77a2e42">&#9670;&nbsp;</a></span>ScreenSegmColor()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ScreenSegmColor </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structsSegm.html">sSegm</a> *&#160;</td>
<td class="paramname"><em>segm</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u32&#160;</td>
<td class="paramname"><em>col1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u32&#160;</td>
<td class="paramname"><em>col2</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set video segment to simple color format GF_COLOR. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">segm</td><td>Segment to configure </td></tr>
<tr><td class="paramname">col1</td><td>Color pattern 4-pixels even line (use macro MULTICOL) </td></tr>
<tr><td class="paramname">col2</td><td>Color pattern 4-pixels odd line (use macro MULTICOL) </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga4df2e7522b0f9c0e996cccbfb0a4ace6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga4df2e7522b0f9c0e996cccbfb0a4ace6">&#9670;&nbsp;</a></span>ScreenSegmGrad1()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ScreenSegmGrad1 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structsSegm.html">sSegm</a> *&#160;</td>
<td class="paramname"><em>segm</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>wb</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set video segment to gradient with 1 line. </p>
<p>The segment will be filled with a color gradient (GF_GRAD1). The gradient is 1 line of 8-bit pixels. </p><dl class="section note"><dt>Note</dt><dd>The gradient can be scrolled horizontally with the offx parameter. </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">segm</td><td>Segment to configure </td></tr>
<tr><td class="paramname">data</td><td>Pointer to data buffer with gradient </td></tr>
<tr><td class="paramname">wb</td><td>Length of buffer </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga289768c9e54878b14765074cd0b26167"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga289768c9e54878b14765074cd0b26167">&#9670;&nbsp;</a></span>ScreenSegmGrad2()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ScreenSegmGrad2 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structsSegm.html">sSegm</a> *&#160;</td>
<td class="paramname"><em>segm</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>wb</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set video segment to gradient with 2 lines. </p>
<p>Gradient with 2 lines, even and odd (GF_GRAD2). </p><dl class="section note"><dt>Note</dt><dd>To scroll gradient, set virtual dimension wrapx, then shift offx </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">segm</td><td>Segment to configure </td></tr>
<tr><td class="paramname">data</td><td>Pointer to data buffer with gradient </td></tr>
<tr><td class="paramname">wb</td><td>Length of buffer </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga6132ac135c0097ff77e46500727cf80a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga6132ac135c0097ff77e46500727cf80a">&#9670;&nbsp;</a></span>ScreenSegmGraph8()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ScreenSegmGraph8 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structsSegm.html">sSegm</a> *&#160;</td>
<td class="paramname"><em>segm</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>wb</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set video segment to native 8-bit graphics (R3G3B2) </p>
<p>8-bit graphics 256 colors (GF_GRAPH8). Each pixel is 1 byte. This mode is one of the fastest, the data is simply sent from the frame buffer to the PIO controller using a DMA transfer. However, it is also one of the most memory intensive. Really, the memory can hold a maximum image resolution of 512x400 pixels (EGA video mode). </p><dl class="section note"><dt>Note</dt><dd>To scroll image, set virtual dimension wrapx and wrapy, then shift offx and offy. </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">segm</td><td>Segment to configure </td></tr>
<tr><td class="paramname">data</td><td>Pointer to data buffer </td></tr>
<tr><td class="paramname">wb</td><td>Line length in bytes </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga63c742a5535d26ecdf6d85f3d9b9d5ff"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga63c742a5535d26ecdf6d85f3d9b9d5ff">&#9670;&nbsp;</a></span>GenPal16Trans()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void GenPal16Trans </td>
<td>(</td>
<td class="paramtype">u16 *&#160;</td>
<td class="paramname"><em>trans</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const u8 *&#160;</td>
<td class="paramname"><em>pal</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Generate 16-color palette translation table. </p>
<p>Generates a palette translation table for the <a class="el" href="group__ScreenGroup.html#ga8b1e1ec0a803677fccc326613f58fedd" title="Set video segment to 4-bit palette graphics.">ScreenSegmGraph4()</a> function. The translation table is 256 entries of 16 bits, so it takes 512 bytes in memory. The table is used during display for internal purposes, must be aligned to 4 bytes, and must be available for the entire time the segment is displayed. The input to the function is the palette table, which is 16 color entries of 1 byte. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">trans</td><td>Pointer to destination palette translation table (u16 trans[256]) </td></tr>
<tr><td class="paramname">pal</td><td>Pointer to source palette of 16 colors (u8 pal[16]) </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga8b1e1ec0a803677fccc326613f58fedd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga8b1e1ec0a803677fccc326613f58fedd">&#9670;&nbsp;</a></span>ScreenSegmGraph4()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ScreenSegmGraph4 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structsSegm.html">sSegm</a> *&#160;</td>
<td class="paramname"><em>segm</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>trans</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>wb</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set video segment to 4-bit palette graphics. </p>
<p>4-bit palette graphics 16 colors (GF_GRAPH4). There are 2 pixels in 1 byte (the first pixel is in the higher 4 bits of the byte). The function requires a palette translation table. </p><dl class="section note"><dt>Note</dt><dd>To scroll image, set virtual dimension wrapx and wrapy, then shift offx and offy. </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">segm</td><td>Segment to configure </td></tr>
<tr><td class="paramname">data</td><td>Pointer to data buffer </td></tr>
<tr><td class="paramname">trans</td><td>Pointer to 16-color palette translation table (generated with GenPal16Trans function) </td></tr>
<tr><td class="paramname">wb</td><td>The line length in bytes </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga0e50909cbf3fb62b0f274880bce1bac4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga0e50909cbf3fb62b0f274880bce1bac4">&#9670;&nbsp;</a></span>GenPal4Trans()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void GenPal4Trans </td>
<td>(</td>
<td class="paramtype">u32 *&#160;</td>
<td class="paramname"><em>trans</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const u8 *&#160;</td>
<td class="paramname"><em>pal</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Generate palette 4 translation table for function. </p>
<p>Generate a palette translation table for the <a class="el" href="group__ScreenGroup.html#gae011fe9e400a31a9a2f7aeacab8f7350" title="Set video segment to 2-bit palette graphics.">ScreenSegmGraph2()</a> function. The translation table is 256 entries with a size of 32 bits, so it takes 1024 bytes in memory. The table is used during display for internal purposes, must be aligned to 4 bytes, and must be available for the entire time the segment is displayed. The input to the function is the palette table, which is 4 color entries of 1 byte. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">trans</td><td>Pointer to destination palette translation table (u32 trans[256]) </td></tr>
<tr><td class="paramname">pal</td><td>Pointer to source palette of 4 colors (u8 pal[4]) </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gae011fe9e400a31a9a2f7aeacab8f7350"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gae011fe9e400a31a9a2f7aeacab8f7350">&#9670;&nbsp;</a></span>ScreenSegmGraph2()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ScreenSegmGraph2 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structsSegm.html">sSegm</a> *&#160;</td>
<td class="paramname"><em>segm</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>trans</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>wb</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set video segment to 2-bit palette graphics. </p>
<dl class="section note"><dt>Note</dt><dd>To scroll image, set virtual dimension wrapx and wrapy, then shift offx and offy. </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">segm</td><td>Segment to configure </td></tr>
<tr><td class="paramname">data</td><td>Pointer to data buffer </td></tr>
<tr><td class="paramname">trans</td><td>Pointer to 4-color palette translation table (generated with GenPal4Trans function) </td></tr>
<tr><td class="paramname">wb</td><td>The line length in bytes </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gabd19f136076734d48063f3ac522b12b4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gabd19f136076734d48063f3ac522b12b4">&#9670;&nbsp;</a></span>ScreenSegmGraph1()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ScreenSegmGraph1 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structsSegm.html">sSegm</a> *&#160;</td>
<td class="paramname"><em>segm</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8&#160;</td>
<td class="paramname"><em>bg</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8&#160;</td>
<td class="paramname"><em>fg</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>wb</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set video segment to 1-bit palette graphics. </p>
<p>1-bit mono graphics 2 colors (GF_GRAPH1). There are 8 pixels in 1 byte (first pixel in the highest bit). The function requires background color and foreground color. </p><dl class="section note"><dt>Note</dt><dd>To scroll image, set virtual dimension wrapx and wrapy, then shift offx and offy. </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">segm</td><td>Segment to configure </td></tr>
<tr><td class="paramname">data</td><td>Pointer to data buffer </td></tr>
<tr><td class="paramname">bg</td><td>Background color </td></tr>
<tr><td class="paramname">fg</td><td>Foreground color </td></tr>
<tr><td class="paramname">wb</td><td>The line length in bytes </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gaf43a2819276e1a80aacf8c69ce99e019"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaf43a2819276e1a80aacf8c69ce99e019">&#9670;&nbsp;</a></span>ScreenSegmMText()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ScreenSegmMText </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structsSegm.html">sSegm</a> *&#160;</td>
<td class="paramname"><em>segm</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>font</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u16&#160;</td>
<td class="paramname"><em>fontheight</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8&#160;</td>
<td class="paramname"><em>bg</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8&#160;</td>
<td class="paramname"><em>fg</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>wb</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set video segment to 8-pixel mono text. </p>
<p>Mono text (GF_MTEXT). For mono text, the foreground and background color is valid for the entire segment. In the display memory there are single characters, 1 byte is one character. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">segm</td><td>Segment to configure </td></tr>
<tr><td class="paramname">data</td><td>Pointer to text buffer </td></tr>
<tr><td class="paramname">font</td><td>Pointer to 1-bit font of 256 characters of width 8 (total width of image 2048 pixels) </td></tr>
<tr><td class="paramname">fontheight</td><td>Font height </td></tr>
<tr><td class="paramname">bg</td><td>Background color </td></tr>
<tr><td class="paramname">fg</td><td>Foregound color </td></tr>
<tr><td class="paramname">wb</td><td>The line length in bytes </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gad2aa166e6a7419e3a76b6284e1d8d202"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gad2aa166e6a7419e3a76b6284e1d8d202">&#9670;&nbsp;</a></span>ScreenSegmAText()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ScreenSegmAText </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structsSegm.html">sSegm</a> *&#160;</td>
<td class="paramname"><em>segm</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>font</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u16&#160;</td>
<td class="paramname"><em>fontheight</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>pal</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>wb</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set video segment to 8-pixel attribute text. </p>
<p>Attribute text (GF_ATEXT). In attribute text, each character is a pair of bytes. The first byte is the ASCII value of the character, the second byte is the color attribute. The higher 4 bits of the attribute represent the background color, the lower 4 bits of the attribute represent the foreground color. The colors are translated from a palette table of 16 colors. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">segm</td><td>Segment to configure </td></tr>
<tr><td class="paramname">data</td><td>Pointer to text buffer (character + 2x4 bit attributes) </td></tr>
<tr><td class="paramname">font</td><td>Pointer to 1-bit font of 256 characters of width 8 (total width of image 2048 pixels) </td></tr>
<tr><td class="paramname">fontheight</td><td>Font height </td></tr>
<tr><td class="paramname">pal</td><td>Pointer to palette of 16 colors </td></tr>
<tr><td class="paramname">wb</td><td>The line length in bytes </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga46604c7b349607634cc7a447a58d1daf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga46604c7b349607634cc7a447a58d1daf">&#9670;&nbsp;</a></span>ScreenSegmFText()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ScreenSegmFText </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structsSegm.html">sSegm</a> *&#160;</td>
<td class="paramname"><em>segm</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>font</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u16&#160;</td>
<td class="paramname"><em>fontheight</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8&#160;</td>
<td class="paramname"><em>bg</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>wb</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set video segment to 8-pixel foreground color text. </p>
<p>Text with foreground color (GF_FTEXT). In text with foreground, each character is represented by a pair of bytes. The first byte is ASCII value of the character, the second byte is foreground color. The background color is common, specified by the 'bg' parameter. </p><dl class="section note"><dt>Note</dt><dd>Library's default fonts include an inverted lower half of the font in the upper half (bit 7 set) - this can provide a character with an optional background color. </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">segm</td><td>Segment to configure </td></tr>
<tr><td class="paramname">data</td><td>Pointer to text buffer (character + foreground color) </td></tr>
<tr><td class="paramname">font</td><td>Pointer to 1-bit font of 256 characters of width 8 (total width of image 2048 pixels) </td></tr>
<tr><td class="paramname">fontheight</td><td>Font height </td></tr>
<tr><td class="paramname">bg</td><td>Background color </td></tr>
<tr><td class="paramname">wb</td><td>The line length in bytes </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gafac348d4c71322a91bcdbe5fbcd89313"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gafac348d4c71322a91bcdbe5fbcd89313">&#9670;&nbsp;</a></span>ScreenSegmCText()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ScreenSegmCText </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structsSegm.html">sSegm</a> *&#160;</td>
<td class="paramname"><em>segm</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>font</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u16&#160;</td>
<td class="paramname"><em>fontheight</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>wb</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set video segment to 8-pixel color text. </p>
<p>Text with color (GF_CTEXT). For text with color, each character occupies 3 bytes. The first byte is the ASCII value of the character, the second byte is the background color, and the third byte is the foreground color. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">segm</td><td>Segment to configure </td></tr>
<tr><td class="paramname">data</td><td>Pointer to text buffer (character + background color + foreground color) </td></tr>
<tr><td class="paramname">font</td><td>Pointer to 1-bit font of 256 characters of width 8 (total width of image 2048 pixels) </td></tr>
<tr><td class="paramname">fontheight</td><td>Font height </td></tr>
<tr><td class="paramname">wb</td><td>The line length in bytes </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gaabefa0d870166b1d755eca211dd5167e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaabefa0d870166b1d755eca211dd5167e">&#9670;&nbsp;</a></span>ScreenSegmGText()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ScreenSegmGText </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structsSegm.html">sSegm</a> *&#160;</td>
<td class="paramname"><em>segm</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>font</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8&#160;</td>
<td class="paramname"><em>fontheight</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8&#160;</td>
<td class="paramname"><em>bg</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>grad</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>wb</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set video segment to 8-pixel gradient color text. </p>
<p>Text with gradient (GF_GTEXT). In this mode, each character is represented by 1 byte in memory and the background color is specified by the 'bg' parameter, similar to the mono text. Instead of the foreground color, there is a parameter 'grad', which is a pointer to a color gradient of length equal to the graphic length of the line of text (e.g. for 40 characters, the gradient is 320 bytes). The foreground color for each pixel of the character is taken from the gradient table. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">segm</td><td>Segment to configure </td></tr>
<tr><td class="paramname">data</td><td>Pointer to text buffer (character + foreground color) </td></tr>
<tr><td class="paramname">font</td><td>Pointer to 1-bit font of 256 characters of width 8 (total width of image 2048 pixels) </td></tr>
<tr><td class="paramname">fontheight</td><td>Font height </td></tr>
<tr><td class="paramname">bg</td><td>Background color </td></tr>
<tr><td class="paramname">grad</td><td>Pointer to array of gradient colors </td></tr>
<tr><td class="paramname">wb</td><td>The line length in bytes </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gac9f53f0344affb6b5f4f11484c22772f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gac9f53f0344affb6b5f4f11484c22772f">&#9670;&nbsp;</a></span>ScreenSegmDText()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ScreenSegmDText </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structsSegm.html">sSegm</a> *&#160;</td>
<td class="paramname"><em>segm</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>font</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8&#160;</td>
<td class="paramname"><em>fontheight</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8&#160;</td>
<td class="paramname"><em>bg</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>grad</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>wb</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set video segment to 8-pixel double gradient color text. </p>
<p>Double gradient text (GF_DTEXT). The function is identical to the previous function, except that each character pixel is generated as 2 image pixels. Thus, the character has twice the width. It is the only text mode that allows displaying characters with double width. The color gradient works similarly here, but 1 byte of the gradient represents 1 pixel of the character (as in the previous function), not 1 pixel displayed. Thus a line of 40 characters again requires a gradient of 320 bytes. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">segm</td><td>Segment to configure </td></tr>
<tr><td class="paramname">data</td><td>Pointer to text buffer (character + foreground color) </td></tr>
<tr><td class="paramname">font</td><td>Pointer to 1-bit font of 256 characters of width 8 (total width of image 2048 pixels) </td></tr>
<tr><td class="paramname">fontheight</td><td>Font height </td></tr>
<tr><td class="paramname">bg</td><td>Background color </td></tr>
<tr><td class="paramname">grad</td><td>Pointer to array of gradient colors </td></tr>
<tr><td class="paramname">wb</td><td>The line length in bytes </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gabae596ff5e55711a382c94cdbe068b14"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gabae596ff5e55711a382c94cdbe068b14">&#9670;&nbsp;</a></span>ScreenSegmTile()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ScreenSegmTile </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structsSegm.html">sSegm</a> *&#160;</td>
<td class="paramname"><em>segm</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>tiles</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>w</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>h</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>wb</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set video segment to tiles. </p>
<p>Tiles in column (GF_TILE). Tiles are image segments of the specified size (tile width and height are 'w' and 'h'). The tile patterns are arranged in a single image. In this case, into a column of width 1 tile. The 'tiles' parameter is a pointer to the image of the tile column. The 'data' parameter is a pointer to an array of bytes, where each byte represents number of displayed tile. Thus, there can be a maximum of 256 tiles. The 'wb' parameter refers to the length of the row of the index array (not the length of the tile image). The width of a tile must be a multiple of 4, at least 8. Tiles allow efficient display of image information by allowing the image to repeat. Thus, high image resolution can be achieved with low memory requirements. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">segm</td><td>Segment to configure </td></tr>
<tr><td class="paramname">data</td><td>Pointer to tile map buffer (with tile indices) </td></tr>
<tr><td class="paramname">tiles</td><td>Pointer to 1 column of tiles, 1 pixel = 8 bits </td></tr>
<tr><td class="paramname">w</td><td>tile width (must be multiple of 4) </td></tr>
<tr><td class="paramname">h</td><td>tile height </td></tr>
<tr><td class="paramname">wb</td><td>Number of bytes between tile map rows </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga5de2fa720bb6488ff4aaf868bb6c272c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga5de2fa720bb6488ff4aaf868bb6c272c">&#9670;&nbsp;</a></span>ScreenSegmTile2()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ScreenSegmTile2 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structsSegm.html">sSegm</a> *&#160;</td>
<td class="paramname"><em>segm</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>tiles</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>w</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>h</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>tilewb</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>wb</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set video segment to alternate tiles. </p>
<p>Tiles in a row (GF_TILE2). This function is an alternative to <a class="el" href="group__ScreenGroup.html#gabae596ff5e55711a382c94cdbe068b14" title="Set video segment to tiles.">ScreenSegmTile()</a>, except that the tile patterns are arranged in a single row in the image. This may be more convenient when creating a tile image, however, you must additionally specify the parameter 'tilewb' representing the line length of the tile image. Usually tilewb = number of tiles * tile width. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">segm</td><td>Segment to configure </td></tr>
<tr><td class="paramname">data</td><td>Pointer to tile map buffer (with tile indices) </td></tr>
<tr><td class="paramname">tiles</td><td>Pointer to 1 row of tiles, 1 pixel = 8 bits </td></tr>
<tr><td class="paramname">w</td><td>tile width (must be multiple of 4) </td></tr>
<tr><td class="paramname">h</td><td>tile height </td></tr>
<tr><td class="paramname">tilewb</td><td>Tile width bytes (usually tile width * number of tiles) </td></tr>
<tr><td class="paramname">wb</td><td>Number of bytes between tile map rows </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga7f08ce542135baab110f2b51100dd1ae"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga7f08ce542135baab110f2b51100dd1ae">&#9670;&nbsp;</a></span>ScreenSegmLevel()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ScreenSegmLevel </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structsSegm.html">sSegm</a> *&#160;</td>
<td class="paramname"><em>segm</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8&#160;</td>
<td class="paramname"><em>zero</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8&#160;</td>
<td class="paramname"><em>bg</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8&#160;</td>
<td class="paramname"><em>fg</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set video segment to level graph GF_LEVEL. </p>
<p>Level display segment (GF_LEVEL). This segment is used to display graphs. The input is an array of 'data' bytes of length corresponding to the width of the array in pixels. The byte value represents the height of the graph at the given X coordinate. The display will show a foreground or background color depending on whether the displayed pixel lies above or below the value from the data array. The 'zero' parameter specifies the height of the reference zero. Zero does not imply negative numbers in the data, the numbers are still given as unsigned (with zero at the bottom). Starting from reference zero, the background and foreground colour is swapped. This results in the graph looking visually symmetrical around the reference zero. You can see the appearance of the segment in the Oscilloscope sample program (lower curve). </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">segm</td><td>Segment to configure </td></tr>
<tr><td class="paramname">data</td><td>Pointer to buffer with line samples 0..255 </td></tr>
<tr><td class="paramname">zero</td><td>Y zero level </td></tr>
<tr><td class="paramname">bg</td><td>Background color </td></tr>
<tr><td class="paramname">fg</td><td>Foregound color </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gabfce65d432ba3ba23b9e9d26cb7e0833"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gabfce65d432ba3ba23b9e9d26cb7e0833">&#9670;&nbsp;</a></span>ScreenSegmLevelGrad()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ScreenSegmLevelGrad </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structsSegm.html">sSegm</a> *&#160;</td>
<td class="paramname"><em>segm</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>sample1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>sample2</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set video segment to leve gradient graph GF_LEVELGRAD. </p>
<p>Level display segment with gradient (GF_LEVELGRAD). This segment is used to display graphs, similar to the previous function. It differs in that the color is given as a vertical gradient with a height corresponding to the height of the segment. If a pixel lies below the data value, the color from the first gradient is used. Otherwise, the second gradient is used. An example use case can be seen in the Level Meter sample program, to display the spectrum. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">segm</td><td>Segment to configure </td></tr>
<tr><td class="paramname">data</td><td>Pointer to buffer with values 0..255 of 4-pixels in rows </td></tr>
<tr><td class="paramname">sample1</td><td>Scanline sample &lt; data </td></tr>
<tr><td class="paramname">sample2</td><td>Scanline sample &gt;= data </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga08f6e07b32d0562225dd278369b86f25"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga08f6e07b32d0562225dd278369b86f25">&#9670;&nbsp;</a></span>ScreenSegmOscil()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ScreenSegmOscil </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structsSegm.html">sSegm</a> *&#160;</td>
<td class="paramname"><em>segm</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8&#160;</td>
<td class="paramname"><em>bg</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8&#160;</td>
<td class="paramname"><em>fg</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>pixh</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set video segment to oscilloscope 1-pixel graph GF_OSCIL. </p>
<p>Oscilloscope waveform display segment (GF_OSCIL). The segment is similar in function to the level display segment. It differs in that the curve is displayed as a line of 'pixh' pixel thickness. This function is already more demanding and may not be able to service the full width of the image. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">segm</td><td>Segment to configure </td></tr>
<tr><td class="paramname">data</td><td>Pointer to buffer with line samples 0..255 </td></tr>
<tr><td class="paramname">bg</td><td>Background color </td></tr>
<tr><td class="paramname">fg</td><td>Foregound color </td></tr>
<tr><td class="paramname">pixh</td><td>Height of pixels - 1 </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga6658bae842b00873fbd81ff314e885f2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga6658bae842b00873fbd81ff314e885f2">&#9670;&nbsp;</a></span>ScreenSegmOscLine()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ScreenSegmOscLine </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structsSegm.html">sSegm</a> *&#160;</td>
<td class="paramname"><em>segm</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8&#160;</td>
<td class="paramname"><em>bg</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8&#160;</td>
<td class="paramname"><em>fg</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set video segment to oscilloscope line graph GF_OSCLIN. </p>
<p>Oscilloscope continuous waveform segment (GF_OSCLINE). The curve is displayed as a continuous line with a thickness of 1 pixel. This mode is already very demanding to render and is therefore accelerated by halving the horizontal resolution (renders points 2 pixels wide). </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">segm</td><td>Segment to configure </td></tr>
<tr><td class="paramname">data</td><td>Pointer to buffer with line samples 0..255 </td></tr>
<tr><td class="paramname">bg</td><td>Background color </td></tr>
<tr><td class="paramname">fg</td><td>Foregound color </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga415f2e80d3d6e92cb026401cba09331f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga415f2e80d3d6e92cb026401cba09331f">&#9670;&nbsp;</a></span>GenPal4Plane()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void GenPal4Plane </td>
<td>(</td>
<td class="paramtype">u32 *&#160;</td>
<td class="paramname"><em>trans</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const u8 *&#160;</td>
<td class="paramname"><em>pal</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Generate palette 4-color translation table for function <a class="el" href="group__ScreenGroup.html#ga3fd07eb06a7bdc8ef8b827d5c2e6a7a8" title="Set video segment to 4-color on 2-planes graphics.">ScreenSegmPlane2()</a> </p>
<p>Generate a palette translation table for the <a class="el" href="group__ScreenGroup.html#ga3fd07eb06a7bdc8ef8b827d5c2e6a7a8" title="Set video segment to 4-color on 2-planes graphics.">ScreenSegmPlane2()</a> function. The translation table is 256 entries of 32 bits, so it takes 1024 bytes in memory. The table is used during display for internal purposes, must be aligned to 4 bytes, and must be available for the entire time the segment is displayed. The input to the function is the palette table, which is 4 color entries of 1 byte. Although there is no program in the PicoVGA library utilities that prepares an image in 2-plane mode, there is an internal function Plane2Conv that converts a 4-color image to 2-plane mode. Thus, the image is attached to the program as a 4-color image, and the conversion function is used to prepare a copy in RAM. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">trans</td><td>Pointer to destination palette translation table (u32 trans[256]) </td></tr>
<tr><td class="paramname">pal</td><td>Pointer to source palette of 4 colors (u8 pal[4]) </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga3fd07eb06a7bdc8ef8b827d5c2e6a7a8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga3fd07eb06a7bdc8ef8b827d5c2e6a7a8">&#9670;&nbsp;</a></span>ScreenSegmPlane2()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ScreenSegmPlane2 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structsSegm.html">sSegm</a> *&#160;</td>
<td class="paramname"><em>segm</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>plane</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>trans</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>wb</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set video segment to 4-color on 2-planes graphics. </p>
<p>2-bit palette graphics 4 colors in 2 planes (GF_PLANE2). The mode is functionally similar to the 2-bit color graphics mode, but the individual pixel bits are stored in 2 separate color planes. This mode is similar to the CGA graphics mode of PC computers. The individual planes correspond to two separate monochrome graphics modes. Each byte of the plane contains 8 pixels (the first pixel in the highest bit). The parameter 'plane' is the relative offset of the second plane from the first plane, given by the parameter 'data'. The function requires a palette translation table, which is generated by the <a class="el" href="group__ScreenGroup.html#ga415f2e80d3d6e92cb026401cba09331f" title="Generate palette 4-color translation table for function ScreenSegmPlane2()">GenPal4Plane()</a> function. </p><dl class="section note"><dt>Note</dt><dd>To scroll image, set virtual dimension wrapx and wrapy, then shift offx and offy. </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">segm</td><td>Segment to configure </td></tr>
<tr><td class="paramname">data</td><td>Pointer to data buffer </td></tr>
<tr><td class="paramname">plane</td><td>Offset of 2nd graphics plane (in bytes), size of one graphics plane </td></tr>
<tr><td class="paramname">trans</td><td>Pointer to 4-color palette translation table (generated with GenPal4Plane function) </td></tr>
<tr><td class="paramname">wb</td><td>Number of bytes between lines </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga032c5a372e2ff20f012097deaf1557d6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga032c5a372e2ff20f012097deaf1557d6">&#9670;&nbsp;</a></span>ScreenSegmAttrib8()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ScreenSegmAttrib8 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structsSegm.html">sSegm</a> *&#160;</td>
<td class="paramname"><em>segm</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>attr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const u8 *&#160;</td>
<td class="paramname"><em>pal</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>wb</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set video segment to 2x4 bit color attribute per 8x8 pixel sample graphics. </p>
<p>Graphical mode with attributes (GF_ATTRIB8). This mode is known from ZX Spectrum computers. The 'data' parameter is a pointer to the pixel data. This corresponds to the monochrome display mode, where each bit distinguishes whether foreground or background color is used. The 'attr' parameter is a pointer to an array of color attributes. The color attribute is a byte, where the lower 4 bits represent the foreground color and the upper 4 bits the background color. The attribute is converted to a colored pixel using the palette table 'pal', which is an array of 16 bytes of colors. Each attribute specifies the foreground and background colors for a group of 8 x 8 pixels. Thus, for every 8 bytes of pixels, there is 1 byte of color attributes. The 'wb' parameter here specifies the line width in bytes for both the pixel array and the attribute array. The difference is that the address in the attributes array is not incremented after each line, but after 8 lines.<br />
<br />
Although there is no program in the PicoVGA library utilities that prepares an image in attribute mode, there is an internal function Attr8Conv that converts an image in 16 colors to attribute mode. Thus, the image is attached to the program as a 16-color image, and the conversion function is used to prepare a copy in RAM. </p><dl class="section note"><dt>Note</dt><dd>To scroll image, set virtual dimension wrapx and wrapy, then shift offx and offy. </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">segm</td><td>Segment to configure </td></tr>
<tr><td class="paramname">data</td><td>Pointer to data buffer with mono pixels </td></tr>
<tr><td class="paramname">attr</td><td>Pointer to color attributes </td></tr>
<tr><td class="paramname">pal</td><td>Pointer to 16-color palette table </td></tr>
<tr><td class="paramname">wb</td><td>Number of bytes between lines </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga91307fe494a56bdc90abe81fd29c883b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga91307fe494a56bdc90abe81fd29c883b">&#9670;&nbsp;</a></span>ScreenSegmProgress()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ScreenSegmProgress </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structsSegm.html">sSegm</a> *&#160;</td>
<td class="paramname"><em>segm</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>sample1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>sample2</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set video segment to horizontal progress indicator GF_PROGRESS. </p>
<p>Progress indicator (GF_PROGRESS). Progress indicator is a horizontal indicator. The parameter 'data' is an array of bytes of length corresponding to the height of the segment. The byte value indicates the line length in multiples of 4 pixels. Thus, a value of 0 to 255 represents an indicator length of 0 to 1020 pixels. For the first part of the indicator (&lt; data) the colour gradient 'sample1' is displayed, for the second part (&gt;= data) 'sample2' is displayed. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">segm</td><td>Segment to configure </td></tr>
<tr><td class="paramname">data</td><td>Pointer to buffer with values 0..255 of 4-pixels in rows </td></tr>
<tr><td class="paramname">sample1</td><td>Scanline sample &lt; data </td></tr>
<tr><td class="paramname">sample2</td><td>Scanline sample &gt;= data </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gac6b3d9370076b7815b6e93cc8dd1331a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gac6b3d9370076b7815b6e93cc8dd1331a">&#9670;&nbsp;</a></span>ScreenSegmGraph8Mat()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ScreenSegmGraph8Mat </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structsSegm.html">sSegm</a> *&#160;</td>
<td class="paramname"><em>segm</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const int *&#160;</td>
<td class="paramname"><em>mat</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u16&#160;</td>
<td class="paramname"><em>xbits</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u16&#160;</td>
<td class="paramname"><em>ybits</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set video segment to 8-bit graphics with 2D matrix transformation. </p>
<p>8-bit graphics with 2D matrix transformation. This segment displays an 8-bit image with transformations - rotate, scale, skew and shift. The image must have width and height as a power of 2. The width and height of the image are specified using the xbits and ybits parameters as the number of bits of the dimension. For example, for a 512 x 256 pixel image, xbits = 9, ybits = 8. The 'mat' parameter is a pointer to an array of 6 integer transformation matrix parameters - see the Transformation matrix section. The segment does not support parameters for image shifting and wrapping, they must be left at default values. </p><dl class="section note"><dt>Note</dt><dd>Use default settings of parameters: offx = 0, offy = 0, wrapx = segment width, wrapy = segment height </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">segm</td><td>Segment to configure </td></tr>
<tr><td class="paramname">data</td><td>Pointer to image data (width and height of image must be power of 2) </td></tr>
<tr><td class="paramname">mat</td><td>Pointer to array of 6 matrix integer parameters m11, m12...m23 (exported with ExportInt function) </td></tr>
<tr><td class="paramname">xbits</td><td>Number of bits of image width (image width must be power of 2 and must be = pitch width bytes) </td></tr>
<tr><td class="paramname">ybits</td><td>Number of bits of image height (image height must be power of 2) </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga3114024dae44741ce831108307f22ac9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga3114024dae44741ce831108307f22ac9">&#9670;&nbsp;</a></span>ScreenSegmGraph8Persp()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ScreenSegmGraph8Persp </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structsSegm.html">sSegm</a> *&#160;</td>
<td class="paramname"><em>segm</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const int *&#160;</td>
<td class="paramname"><em>mat</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u16&#160;</td>
<td class="paramname"><em>xbits</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u16&#160;</td>
<td class="paramname"><em>ybits</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u16&#160;</td>
<td class="paramname"><em>horiz</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set video segment to 8-bit graphics with perspective projection. </p>
<dl class="section note"><dt>Note</dt><dd>Use default settings of parameters: offx = 0, offy = 0, wrapx = segment width, wrapy = segment height </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">segm</td><td>Segment to configure </td></tr>
<tr><td class="paramname">data</td><td>Pointer to image data (width and height of image must be power of 2) </td></tr>
<tr><td class="paramname">mat</td><td>Pointer to array of 6 matrix integer parameters m11, m12...m23 (exported with ExportInt function) </td></tr>
<tr><td class="paramname">xbits</td><td>Number of bits of image width (image width must be power of 2 and must be = pitch width bytes) </td></tr>
<tr><td class="paramname">ybits</td><td>Number of bits of image height (image height must be power of 2) </td></tr>
<tr><td class="paramname">horiz</td><td>Horizon offset </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga49a3e79f7c5d1bbeec72b66985c0bc6a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga49a3e79f7c5d1bbeec72b66985c0bc6a">&#9670;&nbsp;</a></span>ScreenSegmTilePersp()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ScreenSegmTilePersp </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structsSegm.html">sSegm</a> *&#160;</td>
<td class="paramname"><em>segm</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const u8 *&#160;</td>
<td class="paramname"><em>map</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const u8 *&#160;</td>
<td class="paramname"><em>tiles</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const int *&#160;</td>
<td class="paramname"><em>mat</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8&#160;</td>
<td class="paramname"><em>mapwbits</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8&#160;</td>
<td class="paramname"><em>maphbits</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8&#160;</td>
<td class="paramname"><em>tilebits</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">s8&#160;</td>
<td class="paramname"><em>horizon</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set video segment to tiles with perspective. </p>
<p>Tile graphics with 3D perspective. Similar to the previous function, it is used to display terrain with 3D projection. It uses tile definition instead of 8-bit graphics. This allows the display of very large terrains. The 'map' parameter is a pointer to a map of tiles - tile indices 0 to 255. The width and height of the map must be powers of 2 and are specified as the number of mapwbits and maphbits. Tiles must have a square dimension, which must also be a power of 2. The tile dimension is specified by the tilebits parameter as the number of dimension bits. The 'tiles' parameter is a pointer to an image with a pattern of tiles arranged in 1 column of tiles. The 'horizon' parameter specifies the horizon offset over the segment boundary / 4. A positive number represents the horizon offset, a negative number will invert the perspective (can be used to display the sky). A zero value turns off the perspective - in this case the function is similar to the function for displaying an image with a transformation matrix (the array of tiles can be rotated, skewed, etc). </p><dl class="section note"><dt>Note</dt><dd>Use default settings of parameters: offx = 0, offy = 0, wrapx = segment width, wrapy = segment height </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">segm</td><td>Segment to configure </td></tr>
<tr><td class="paramname">map</td><td>Pointer to tile map with tile indices (width and height must be power of 2) </td></tr>
<tr><td class="paramname">tiles</td><td>Pointer to 1 column of square tiles, 1 pixel = 8 bits (width and height must be power of 2) </td></tr>
<tr><td class="paramname">mat</td><td>Pointer to array of 6 matrix integer parameters m11, m12...m23 (exported with ExportInt function) </td></tr>
<tr><td class="paramname">mapwbits</td><td>Number of bits of tile map width </td></tr>
<tr><td class="paramname">maphbits</td><td>Number of bits of tile map height </td></tr>
<tr><td class="paramname">tilebits</td><td>Number of bits of tile width and height </td></tr>
<tr><td class="paramname">horizon</td><td>Horizon offset/4 (0=do not use perspective projection, &lt;0=vertical flip to display ceiling) </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga254ec144884d63aed1bc0f22a1b06c6d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga254ec144884d63aed1bc0f22a1b06c6d">&#9670;&nbsp;</a></span>ScreenSegmTilePersp15()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ScreenSegmTilePersp15 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structsSegm.html">sSegm</a> *&#160;</td>
<td class="paramname"><em>segm</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const u8 *&#160;</td>
<td class="paramname"><em>map</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const u8 *&#160;</td>
<td class="paramname"><em>tiles</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const int *&#160;</td>
<td class="paramname"><em>mat</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8&#160;</td>
<td class="paramname"><em>mapwbits</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8&#160;</td>
<td class="paramname"><em>maphbits</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8&#160;</td>
<td class="paramname"><em>tilebits</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">s8&#160;</td>
<td class="paramname"><em>horizon</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set video segment to tiles with perspective, 1.5 pixels. </p>
<p>Similar to <a class="el" href="group__ScreenGroup.html#ga49a3e79f7c5d1bbeec72b66985c0bc6a" title="Set video segment to tiles with perspective.">ScreenSegmTilePersp()</a>, but the pixels are rendered 1.5 pixels wide. This function can be used if the previous function does not keep up with the rendering speed. </p><dl class="section note"><dt>Note</dt><dd>Use default settings of parameters: offx = 0, offy = 0, wrapx = segment width, wrapy = segment height </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">segm</td><td>Segment to configure </td></tr>
<tr><td class="paramname">map</td><td>Pointer to tile map with tile indices (width and height must be power of 2) </td></tr>
<tr><td class="paramname">tiles</td><td>Pointer to 1 column of square tiles, 1 pixel = 8 bits (width and height must be power of 2) </td></tr>
<tr><td class="paramname">mat</td><td>Pointer to array of 6 matrix integer parameters m11, m12...m23 (exported with ExportInt function) </td></tr>
<tr><td class="paramname">mapwbits</td><td>Number of bits of tile map width </td></tr>
<tr><td class="paramname">maphbits</td><td>Number of bits of tile map height </td></tr>
<tr><td class="paramname">tilebits</td><td>Number of bits of tile width and height </td></tr>
<tr><td class="paramname">horizon</td><td>Horizon offset/4 (0=do not use perspective projection, &lt;0=vertical flip to display ceiling) </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gaccae48338e65347201543eed10bdcb3f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaccae48338e65347201543eed10bdcb3f">&#9670;&nbsp;</a></span>ScreenSegmTilePersp2()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ScreenSegmTilePersp2 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structsSegm.html">sSegm</a> *&#160;</td>
<td class="paramname"><em>segm</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const u8 *&#160;</td>
<td class="paramname"><em>map</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const u8 *&#160;</td>
<td class="paramname"><em>tiles</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const int *&#160;</td>
<td class="paramname"><em>mat</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8&#160;</td>
<td class="paramname"><em>mapwbits</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8&#160;</td>
<td class="paramname"><em>maphbits</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8&#160;</td>
<td class="paramname"><em>tilebits</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">s8&#160;</td>
<td class="paramname"><em>horizon</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set video segment to tiles with perspective, double pixels. </p>
<p>Similar to <a class="el" href="group__ScreenGroup.html#ga49a3e79f7c5d1bbeec72b66985c0bc6a" title="Set video segment to tiles with perspective.">ScreenSegmTilePersp()</a>, but the pixels are rendered 2 pixels wide. This function can be used if the previous function does not keep up with the rendering speed. </p><dl class="section note"><dt>Note</dt><dd>Use default settings of parameters: offx = 0, offy = 0, wrapx = segment width, wrapy = segment height </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">segm</td><td>Segment to configure </td></tr>
<tr><td class="paramname">map</td><td>Pointer to tile map with tile indices (width and height must be power of 2) </td></tr>
<tr><td class="paramname">tiles</td><td>Pointer to 1 column of square tiles, 1 pixel = 8 bits (width and height must be power of 2) </td></tr>
<tr><td class="paramname">mat</td><td>Pointer to array of 6 matrix integer parameters m11, m12...m23 (exported with ExportInt function) </td></tr>
<tr><td class="paramname">mapwbits</td><td>Number of bits of tile map width </td></tr>
<tr><td class="paramname">maphbits</td><td>Number of bits of tile map height </td></tr>
<tr><td class="paramname">tilebits</td><td>Number of bits of tile width and height </td></tr>
<tr><td class="paramname">horizon</td><td>Horizon offset/4 (0=do not use perspective projection, &lt;0=vertical flip to display ceiling) </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga90863ea08105ea7aed367cd6f1626251"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga90863ea08105ea7aed367cd6f1626251">&#9670;&nbsp;</a></span>ScreenSegmTilePersp3()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ScreenSegmTilePersp3 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structsSegm.html">sSegm</a> *&#160;</td>
<td class="paramname"><em>segm</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const u8 *&#160;</td>
<td class="paramname"><em>map</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const u8 *&#160;</td>
<td class="paramname"><em>tiles</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const int *&#160;</td>
<td class="paramname"><em>mat</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8&#160;</td>
<td class="paramname"><em>mapwbits</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8&#160;</td>
<td class="paramname"><em>maphbits</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8&#160;</td>
<td class="paramname"><em>tilebits</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">s8&#160;</td>
<td class="paramname"><em>horizon</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set video segment to tiles with perspective, triple pixels. </p>
<p>Similar to <a class="el" href="group__ScreenGroup.html#ga49a3e79f7c5d1bbeec72b66985c0bc6a" title="Set video segment to tiles with perspective.">ScreenSegmTilePersp()</a>, but the pixels are rendered 3 pixels wide. This function can be used if the previous function does not keep up with the rendering speed. </p><dl class="section note"><dt>Note</dt><dd>Use default settings of parameters: offx = 0, offy = 0, wrapx = segment width, wrapy = segment height </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">segm</td><td>Segment to configure </td></tr>
<tr><td class="paramname">map</td><td>Pointer to tile map with tile indices (width and height must be power of 2) </td></tr>
<tr><td class="paramname">tiles</td><td>Pointer to 1 column of square tiles, 1 pixel = 8 bits (width and height must be power of 2) </td></tr>
<tr><td class="paramname">mat</td><td>Pointer to array of 6 matrix integer parameters m11, m12...m23 (exported with ExportInt function) </td></tr>
<tr><td class="paramname">mapwbits</td><td>Number of bits of tile map width </td></tr>
<tr><td class="paramname">maphbits</td><td>Number of bits of tile map height </td></tr>
<tr><td class="paramname">tilebits</td><td>Number of bits of tile width and height </td></tr>
<tr><td class="paramname">horizon</td><td>Horizon offset/4 (0=do not use perspective projection, &lt;0=vertical flip to display ceiling) </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gaff0df01b94efb9c244ee3c91883503be"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaff0df01b94efb9c244ee3c91883503be">&#9670;&nbsp;</a></span>ScreenSegmTilePersp4()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ScreenSegmTilePersp4 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structsSegm.html">sSegm</a> *&#160;</td>
<td class="paramname"><em>segm</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const u8 *&#160;</td>
<td class="paramname"><em>map</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const u8 *&#160;</td>
<td class="paramname"><em>tiles</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const int *&#160;</td>
<td class="paramname"><em>mat</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8&#160;</td>
<td class="paramname"><em>mapwbits</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8&#160;</td>
<td class="paramname"><em>maphbits</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8&#160;</td>
<td class="paramname"><em>tilebits</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">s8&#160;</td>
<td class="paramname"><em>horizon</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set video segment to tiles with perspective, quadruple pixels. </p>
<p>Similar to <a class="el" href="group__ScreenGroup.html#ga49a3e79f7c5d1bbeec72b66985c0bc6a" title="Set video segment to tiles with perspective.">ScreenSegmTilePersp()</a>, but the pixels are rendered 4 pixels wide. This function can be used if the previous function does not keep up with the rendering speed. </p><dl class="section note"><dt>Note</dt><dd>Use default settings of parameters: offx = 0, offy = 0, wrapx = segment width, wrapy = segment height </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">segm</td><td>Segment to configure </td></tr>
<tr><td class="paramname">map</td><td>Pointer to tile map with tile indices (width and height must be power of 2) </td></tr>
<tr><td class="paramname">tiles</td><td>Pointer to 1 column of square tiles, 1 pixel = 8 bits (width and height must be power of 2) </td></tr>
<tr><td class="paramname">mat</td><td>Pointer to array of 6 matrix integer parameters m11, m12...m23 (exported with ExportInt function) </td></tr>
<tr><td class="paramname">mapwbits</td><td>Number of bits of tile map width </td></tr>
<tr><td class="paramname">maphbits</td><td>Number of bits of tile map height </td></tr>
<tr><td class="paramname">tilebits</td><td>Number of bits of tile width and height </td></tr>
<tr><td class="paramname">horizon</td><td>Horizon offset/4 (0=do not use perspective projection, &lt;0=vertical flip to display ceiling) </td></tr>
</table>
</dd>
</dl>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
</ul>
</div>
</body>
</html>