Files
FTXUI/zh-CH/canvas_8hpp_source.html
2025-12-13 19:38:34 +00:00

514 lines
64 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!-- HTML header for doxygen 1.9.8-->
<!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" lang="zh">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FTXUI: canvas.hpp 源文件</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>
<script type="text/javascript" src="doxygen-awesome-fragment-copy-button.js"></script>
<script type="text/javascript" src="doxygen-awesome-paragraph-link.js"></script>
<script type="text/javascript" src="doxygen-awesome-interactive-toc.js"></script>
<script type="text/javascript" src="doxygen-awesome-tabs.js"></script>
<script type="module">
DoxygenAwesomeFragmentCopyButton.init()
DoxygenAwesomeParagraphLink.init()
DoxygenAwesomeInteractiveToc.init()
DoxygenAwesomeTabs.init()
await new Promise(r => window.addEventListener('DOMContentLoaded', r));
// Remove title when a img[alt='title-img'] is present.
// Find an image with the alt "img-title".
const img = document.querySelector("img[alt='title-img']");
const header = document.querySelector(".headertitle");
if (img && header) {
// Hide the header title progressively.
header.style.display = "none";
// Show progressively the image.
img.style.maxHeight = "40vh";
img.style.maxWidth = "100%";
img.style.objectFit = "contain";
}
// In the "examples.html" page. Turn every link with text
// "examples/<...>
//
// Add a "demo" link toward.
// https://arthursonzogni.github.io/FTXUI/examples/?file=<...>
const examples = document.querySelectorAll("a")
examples.forEach((example) => {
if (!example.textContent.startsWith("examples/")) {
return;
}
// Remove the ".cpp" extension from the example name.
const exampleName = example.textContent.replace("examples/", "").replace(".cpp", "");
const a = document.createElement("a");
a.textContent = "[demo]";
a.href = "https://arthursonzogni.github.io/FTXUI/examples/?file=" + exampleName;
a.style.marginRight= "1em";
a.style.fontWeight = "bold";
example.parentElement.insertBefore(a, example)
});
// If the current URL ends with -example.html, we can add a link to the demo
// as well using the div.title textContent.
const url = new URL(window.location.href);
if (url.pathname.endsWith("-example.html")) {
// Get the title text.
const title = document.querySelector("div.title").textContent;
const example = title.replace("examples/", "").replace(".cpp", "");
// Create a link to the demo.
const a = document.createElement("a");
a.textContent = "[demo]";
a.href = "https://arthursonzogni.github.io/FTXUI/examples/?file=" + example;
a.style.marginLeft = "1em";
a.style.fontWeight = "bold";
a.style.display = "inline-block";
// Insert the link after the title.
const titleDiv = document.querySelector("div.title");
if (titleDiv) {
titleDiv.insertBefore(a, titleDiv.nextSibling);
}
}
</script>
<script type="module">
// Click on the navtree, except for the main page where this is already done
// automatically.
let delay = 0;
while(true) {
const navtree = document.querySelector("div.item.selected");
if (!navtree) {
delay *= 2;
delay += 1;
await new Promise(resolve => setTimeout(resolve, delay));
continue;
}
// Include only selected navtree items.
console.log("navtree.textContent", navtree.textContent);
if (!navtree.textContent.includes("Getting Started") &&
!navtree.textContent.includes("Installation") &&
!navtree.textContent.includes("ftxui / screen") &&
!navtree.textContent.includes("ftxui / dom") &&
!navtree.textContent.includes("ftxui / component") &&
!navtree.textContent.includes("Reference")) {
break;
}
// Find the first link inside the navtree.
const link = navtree.querySelector("a");
if (link) {
// Simulate a click on the link.
link.click();
break;
}
}
</script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.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="stylesheet.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 id="projectrow">
<td id="projectalign">
<div id="projectname">FTXUI<span id="projectnumber">&#160;6.1.9</span>
</div>
<div id="projectbrief">C++ functional terminal UI.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- 制作者 Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @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:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','搜索',true);
$(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:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('canvas_8hpp_source.html',''); initResizable(true); });
/* @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">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">载入中...</div>
<div class="SRStatus" id="Searching">搜索中...</div>
<div class="SRStatus" id="NoMatches">未找到</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">canvas.hpp</div></div>
</div><!--header-->
<div class="contents">
<a href="canvas_8hpp.html">浏览该文件的文档.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">// Copyright 2021 Arthur Sonzogni. 保留所有权利。</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment">// 此源代码的使用受 MIT 许可协议的约束,该协议可在以下文件中找到:</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">// LICENSE 文件。</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="preprocessor">#ifndef FTXUI_DOM_CANVAS_HPP</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="preprocessor">#define FTXUI_DOM_CANVAS_HPP</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span> </div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="preprocessor">#include &lt;cstddef&gt;</span> <span class="comment">// for size_t</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="preprocessor">#include &lt;functional&gt;</span> <span class="comment">// for function</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="preprocessor">#include &lt;string&gt;</span> <span class="comment">// for string</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="preprocessor">#include &lt;unordered_map&gt;</span> <span class="comment">// for unordered_map</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span> </div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="preprocessor">#include &quot;<a class="code" href="color_8hpp.html">ftxui/screen/color.hpp</a>&quot;</span> <span class="comment">// for Color</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="preprocessor">#include &quot;<a class="code" href="image_8hpp.html">ftxui/screen/image.hpp</a>&quot;</span> <span class="comment">// for Pixel, Image</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span> </div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="preprocessor">#ifdef DrawText</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment">// 解决 WinUsr.h通过 Windows.h定义破坏性宏的问题。</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment">// https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-drawtext</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="preprocessor">#undef DrawText</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span> </div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespaceftxui.html">ftxui</a> {</div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment"></span> </div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment">/// @brief Canvas 是一个与绘图操作相关的可绘制缓冲区。</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment">///</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment">/// Canvas 是一个可绘制区域,可用于创建复杂的图形。它</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="comment">/// 支持使用点、线、圆、椭圆、文本和图像进行绘制,使用</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><span class="comment">/// 盲文、块或普通字符。</span></div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="comment">///</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="comment">/// 注意:终端包含单元格。一个单元格是以下单位:</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="comment">/// - 2x4 盲文字符1x1 像素)</span></div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="comment">/// - 2x2 块字符2x2 像素)</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="comment">/// - 2x4 普通字符2x4 像素)</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="comment">///</span></div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="comment">/// 您需要将 x 坐标乘以 2将 y 坐标乘以 4</span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span><span class="comment">/// 获取终端中的正确位置。</span></div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span><span class="comment">///</span></div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span><span class="comment">/// @ingroup dom</span></div>
<div class="foldopen" id="foldopen00038" data-start="{" data-end="};">
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"><a class="line" href="group__dom.html"> 38</a></span><span class="comment"></span><span class="keyword">struct </span><a class="code hl_struct" href="group__dom.html#structftxui_1_1Canvas">Canvas</a> {</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"><a class="line" href="group__dom.html#a3cbcd839ac8597df2e0f351850ec4735"> 40</a></span> <a class="code hl_function" href="group__dom.html#a3cbcd839ac8597df2e0f351850ec4735">Canvas</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> <a class="code hl_function" href="group__dom.html#a3cbcd839ac8597df2e0f351850ec4735">Canvas</a>(<span class="keywordtype">int</span> <a class="code hl_function" href="group__dom.html#ad72663daf610f2a0833a2fc3d78e4fdf">width</a>, <span class="keywordtype">int</span> <a class="code hl_function" href="group__dom.html#ad3774f6419003470f54fd495124ef51f">height</a>);</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> </div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> <span class="comment">// 获取器:</span></div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"><a class="line" href="group__dom.html#ad72663daf610f2a0833a2fc3d78e4fdf"> 44</a></span> <span class="keywordtype">int</span> <a class="code hl_function" href="group__dom.html#ad72663daf610f2a0833a2fc3d78e4fdf">width</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> width_; }</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"><a class="line" href="group__dom.html#ad3774f6419003470f54fd495124ef51f"> 45</a></span> <span class="keywordtype">int</span> <a class="code hl_function" href="group__dom.html#ad3774f6419003470f54fd495124ef51f">height</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> height_; }</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> <a class="code hl_struct" href="group__screen.html#structftxui_1_1Pixel">Pixel</a> <a class="code hl_function" href="group__dom.html#a656c4e679bf9254e4688f2049989a9bd">GetPixel</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y) <span class="keyword">const</span>;</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> </div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"><a class="line" href="group__dom.html#a407f299e079846ce6169f2a709ad4aae"> 48</a></span> <span class="keyword">using </span><a class="code hl_typedef" href="group__dom.html#a407f299e079846ce6169f2a709ad4aae">Stylizer</a> = std::function&lt;void(<a class="code hl_struct" href="group__screen.html#structftxui_1_1Pixel">Pixel</a>&amp;)&gt;;</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> </div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> <span class="comment">// 使用盲文字符绘图 --------------------------------------------</span></div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__dom.html#a5f488ea43e72f25cc25d055bf18dac5b">DrawPointOn</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y);</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__dom.html#a64ad8a12830a3341d4a5afb380913474">DrawPointOff</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y);</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__dom.html#afd64176f05f91df2d96e8f3bb0631c51">DrawPointToggle</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y);</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__dom.html#a8707f2585ed8b787b6b14032a5c761a1">DrawPoint</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keywordtype">bool</span> value);</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__dom.html#a8707f2585ed8b787b6b14032a5c761a1">DrawPoint</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keywordtype">bool</span> value, <span class="keyword">const</span> <a class="code hl_typedef" href="group__dom.html#a407f299e079846ce6169f2a709ad4aae">Stylizer</a>&amp; s);</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__dom.html#a8707f2585ed8b787b6b14032a5c761a1">DrawPoint</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keywordtype">bool</span> value, <span class="keyword">const</span> <a class="code hl_class" href="group__screen.html#classftxui_1_1Color">Color</a>&amp; color);</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__dom.html#a2b6800c9a6a93457a921d9b570fb2f30">DrawPointLine</a>(<span class="keywordtype">int</span> x1, <span class="keywordtype">int</span> y1, <span class="keywordtype">int</span> x2, <span class="keywordtype">int</span> y2);</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__dom.html#a2b6800c9a6a93457a921d9b570fb2f30">DrawPointLine</a>(<span class="keywordtype">int</span> x1, <span class="keywordtype">int</span> y1, <span class="keywordtype">int</span> x2, <span class="keywordtype">int</span> y2, <span class="keyword">const</span> <a class="code hl_typedef" href="group__dom.html#a407f299e079846ce6169f2a709ad4aae">Stylizer</a>&amp; s);</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__dom.html#a2b6800c9a6a93457a921d9b570fb2f30">DrawPointLine</a>(<span class="keywordtype">int</span> x1, <span class="keywordtype">int</span> y1, <span class="keywordtype">int</span> x2, <span class="keywordtype">int</span> y2, <span class="keyword">const</span> <a class="code hl_class" href="group__screen.html#classftxui_1_1Color">Color</a>&amp; color);</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__dom.html#ad21641f8f1fd60aa5f1d149379eba3eb">DrawPointCircle</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keywordtype">int</span> radius);</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__dom.html#ad21641f8f1fd60aa5f1d149379eba3eb">DrawPointCircle</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keywordtype">int</span> radius, <span class="keyword">const</span> <a class="code hl_typedef" href="group__dom.html#a407f299e079846ce6169f2a709ad4aae">Stylizer</a>&amp; s);</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__dom.html#ad21641f8f1fd60aa5f1d149379eba3eb">DrawPointCircle</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keywordtype">int</span> radius, <span class="keyword">const</span> <a class="code hl_class" href="group__screen.html#classftxui_1_1Color">Color</a>&amp; color);</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__dom.html#a5b6388d2515edcfb6c88a39ea56805b2">DrawPointCircleFilled</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keywordtype">int</span> radius);</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__dom.html#a5b6388d2515edcfb6c88a39ea56805b2">DrawPointCircleFilled</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keywordtype">int</span> radius, <span class="keyword">const</span> <a class="code hl_typedef" href="group__dom.html#a407f299e079846ce6169f2a709ad4aae">Stylizer</a>&amp; s);</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__dom.html#a5b6388d2515edcfb6c88a39ea56805b2">DrawPointCircleFilled</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keywordtype">int</span> radius, <span class="keyword">const</span> <a class="code hl_class" href="group__screen.html#classftxui_1_1Color">Color</a>&amp; color);</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__dom.html#a79ee88b3cfe258309041469f707dcf68">DrawPointEllipse</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keywordtype">int</span> r1, <span class="keywordtype">int</span> r2);</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__dom.html#a79ee88b3cfe258309041469f707dcf68">DrawPointEllipse</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keywordtype">int</span> r1, <span class="keywordtype">int</span> r2, <span class="keyword">const</span> <a class="code hl_class" href="group__screen.html#classftxui_1_1Color">Color</a>&amp; color);</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__dom.html#a79ee88b3cfe258309041469f707dcf68">DrawPointEllipse</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keywordtype">int</span> r1, <span class="keywordtype">int</span> r2, <span class="keyword">const</span> <a class="code hl_typedef" href="group__dom.html#a407f299e079846ce6169f2a709ad4aae">Stylizer</a>&amp; s);</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__dom.html#a2633b8a556a82c74438fe41b253b39ee">DrawPointEllipseFilled</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keywordtype">int</span> r1, <span class="keywordtype">int</span> r2);</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__dom.html#a2633b8a556a82c74438fe41b253b39ee">DrawPointEllipseFilled</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keywordtype">int</span> r1, <span class="keywordtype">int</span> r2, <span class="keyword">const</span> <a class="code hl_class" href="group__screen.html#classftxui_1_1Color">Color</a>&amp; color);</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__dom.html#a2633b8a556a82c74438fe41b253b39ee">DrawPointEllipseFilled</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keywordtype">int</span> r1, <span class="keywordtype">int</span> r2, <span class="keyword">const</span> <a class="code hl_typedef" href="group__dom.html#a407f299e079846ce6169f2a709ad4aae">Stylizer</a>&amp; s);</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> </div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> <span class="comment">// 使用方块字符绘图 -------------------------------------------------</span></div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> <span class="comment">// 块的大小为 1x2。y 被认为是 2 的倍数。</span></div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__dom.html#a43cd60e79e418d3173e757a1809fde09">DrawBlockOn</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y);</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__dom.html#ad626747e5e54412d0376ba870565dce6">DrawBlockOff</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y);</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__dom.html#ab4154641384d18497de60c2626b71a94">DrawBlockToggle</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y);</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__dom.html#ae38b2e4f5bcda94c060bb77779d1e339">DrawBlock</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keywordtype">bool</span> value);</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__dom.html#ae38b2e4f5bcda94c060bb77779d1e339">DrawBlock</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keywordtype">bool</span> value, <span class="keyword">const</span> <a class="code hl_typedef" href="group__dom.html#a407f299e079846ce6169f2a709ad4aae">Stylizer</a>&amp; s);</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__dom.html#ae38b2e4f5bcda94c060bb77779d1e339">DrawBlock</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keywordtype">bool</span> value, <span class="keyword">const</span> <a class="code hl_class" href="group__screen.html#classftxui_1_1Color">Color</a>&amp; color);</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__dom.html#a182a915a7e3fc863f5c222253de01ff1">DrawBlockLine</a>(<span class="keywordtype">int</span> x1, <span class="keywordtype">int</span> y1, <span class="keywordtype">int</span> x2, <span class="keywordtype">int</span> y2);</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__dom.html#a182a915a7e3fc863f5c222253de01ff1">DrawBlockLine</a>(<span class="keywordtype">int</span> x1, <span class="keywordtype">int</span> y1, <span class="keywordtype">int</span> x2, <span class="keywordtype">int</span> y2, <span class="keyword">const</span> <a class="code hl_typedef" href="group__dom.html#a407f299e079846ce6169f2a709ad4aae">Stylizer</a>&amp; s);</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__dom.html#a182a915a7e3fc863f5c222253de01ff1">DrawBlockLine</a>(<span class="keywordtype">int</span> x1, <span class="keywordtype">int</span> y1, <span class="keywordtype">int</span> x2, <span class="keywordtype">int</span> y2, <span class="keyword">const</span> <a class="code hl_class" href="group__screen.html#classftxui_1_1Color">Color</a>&amp; color);</div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__dom.html#ac3977d4b06ca96ff799a3b72437c8a0b">DrawBlockCircle</a>(<span class="keywordtype">int</span> x1, <span class="keywordtype">int</span> y1, <span class="keywordtype">int</span> radius);</div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__dom.html#ac3977d4b06ca96ff799a3b72437c8a0b">DrawBlockCircle</a>(<span class="keywordtype">int</span> x1, <span class="keywordtype">int</span> y1, <span class="keywordtype">int</span> radius, <span class="keyword">const</span> <a class="code hl_typedef" href="group__dom.html#a407f299e079846ce6169f2a709ad4aae">Stylizer</a>&amp; s);</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__dom.html#ac3977d4b06ca96ff799a3b72437c8a0b">DrawBlockCircle</a>(<span class="keywordtype">int</span> x1, <span class="keywordtype">int</span> y1, <span class="keywordtype">int</span> radius, <span class="keyword">const</span> <a class="code hl_class" href="group__screen.html#classftxui_1_1Color">Color</a>&amp; color);</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__dom.html#acffdcd5bae224992e155facb0baf4119">DrawBlockCircleFilled</a>(<span class="keywordtype">int</span> x1, <span class="keywordtype">int</span> y1, <span class="keywordtype">int</span> radius);</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__dom.html#acffdcd5bae224992e155facb0baf4119">DrawBlockCircleFilled</a>(<span class="keywordtype">int</span> x1, <span class="keywordtype">int</span> y1, <span class="keywordtype">int</span> radius, <span class="keyword">const</span> <a class="code hl_typedef" href="group__dom.html#a407f299e079846ce6169f2a709ad4aae">Stylizer</a>&amp; s);</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__dom.html#acffdcd5bae224992e155facb0baf4119">DrawBlockCircleFilled</a>(<span class="keywordtype">int</span> x1, <span class="keywordtype">int</span> y1, <span class="keywordtype">int</span> radius, <span class="keyword">const</span> <a class="code hl_class" href="group__screen.html#classftxui_1_1Color">Color</a>&amp; color);</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__dom.html#a8dd75f2dfc5bef37aa2c8bc8cfaf0579">DrawBlockEllipse</a>(<span class="keywordtype">int</span> x1, <span class="keywordtype">int</span> y1, <span class="keywordtype">int</span> r1, <span class="keywordtype">int</span> r2);</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__dom.html#a8dd75f2dfc5bef37aa2c8bc8cfaf0579">DrawBlockEllipse</a>(<span class="keywordtype">int</span> x1, <span class="keywordtype">int</span> y1, <span class="keywordtype">int</span> r1, <span class="keywordtype">int</span> r2, <span class="keyword">const</span> <a class="code hl_typedef" href="group__dom.html#a407f299e079846ce6169f2a709ad4aae">Stylizer</a>&amp; s);</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__dom.html#a8dd75f2dfc5bef37aa2c8bc8cfaf0579">DrawBlockEllipse</a>(<span class="keywordtype">int</span> x1, <span class="keywordtype">int</span> y1, <span class="keywordtype">int</span> r1, <span class="keywordtype">int</span> r2, <span class="keyword">const</span> <a class="code hl_class" href="group__screen.html#classftxui_1_1Color">Color</a>&amp; color);</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__dom.html#a78dc3c908f7ce1c30837bd3043f19526">DrawBlockEllipseFilled</a>(<span class="keywordtype">int</span> x1, <span class="keywordtype">int</span> y1, <span class="keywordtype">int</span> r1, <span class="keywordtype">int</span> r2);</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__dom.html#a78dc3c908f7ce1c30837bd3043f19526">DrawBlockEllipseFilled</a>(<span class="keywordtype">int</span> x1,</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> <span class="keywordtype">int</span> y1,</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> <span class="keywordtype">int</span> r1,</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> <span class="keywordtype">int</span> r2,</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> <span class="keyword">const</span> <a class="code hl_typedef" href="group__dom.html#a407f299e079846ce6169f2a709ad4aae">Stylizer</a>&amp; s);</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__dom.html#a78dc3c908f7ce1c30837bd3043f19526">DrawBlockEllipseFilled</a>(<span class="keywordtype">int</span> x1,</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> <span class="keywordtype">int</span> y1,</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> <span class="keywordtype">int</span> r1,</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> <span class="keywordtype">int</span> r2,</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> <span class="keyword">const</span> <a class="code hl_class" href="group__screen.html#classftxui_1_1Color">Color</a>&amp; color);</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> </div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> <span class="comment">// 使用普通字符绘图 ----------------------------------------------</span></div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> <span class="comment">// 在位置 (x,y) 处绘制大小为 2x4 的字符</span></div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> <span class="comment">// x 被认为是 2 的倍数。</span></div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> <span class="comment">// y 被认为是 4 的倍数。</span></div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__dom.html#a3791777bd6d3c6f8ff6281efd19a5161">DrawText</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keyword">const</span> std::string&amp; value);</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__dom.html#a3791777bd6d3c6f8ff6281efd19a5161">DrawText</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keyword">const</span> std::string&amp; value, <span class="keyword">const</span> <a class="code hl_class" href="group__screen.html#classftxui_1_1Color">Color</a>&amp; color);</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__dom.html#a3791777bd6d3c6f8ff6281efd19a5161">DrawText</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keyword">const</span> std::string&amp; value, <span class="keyword">const</span> <a class="code hl_typedef" href="group__dom.html#a407f299e079846ce6169f2a709ad4aae">Stylizer</a>&amp; style);</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> </div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> <span class="comment">// 直接使用像素或图像绘图 --------------------------------------</span></div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> <span class="comment">// x 被认为是 2 的倍数。</span></div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> <span class="comment">// y 被认为是 4 的倍数。</span></div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__dom.html#afde1b1962124ef417569bef59c6dcdcc">DrawPixel</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keyword">const</span> <a class="code hl_struct" href="group__screen.html#structftxui_1_1Pixel">Pixel</a>&amp;);</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> <span class="keywordtype">void</span> <a class="code hl_function" href="group__dom.html#a02b6e8bab532a2c43d3102674e1e1647">DrawImage</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keyword">const</span> <a class="code hl_class" href="group__screen.html#classftxui_1_1Image">Image</a>&amp;);</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> </div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> <span class="comment">// 装饰器:</span></div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> <span class="comment">// x 被认为是 2 的倍数。</span></div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> <span class="comment">// y 被认为是 4 的倍数。</span></div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> <span class="keywordtype">void</span> <a class="code hl_function" href="examples_2component_2button_8cpp.html#a98e3b8d17caf902b7bf0fe47562cea08">Style</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y, <span class="keyword">const</span> <a class="code hl_typedef" href="group__dom.html#a407f299e079846ce6169f2a709ad4aae">Stylizer</a>&amp; style);</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> </div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> <span class="keywordtype">bool</span> IsIn(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y)<span class="keyword"> const </span>{</div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> <span class="keywordflow">return</span> x &gt;= 0 &amp;&amp; x &lt; width_ &amp;&amp; y &gt;= 0 &amp;&amp; y &lt; height_;</div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> }</div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> </div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> <span class="keyword">enum</span> CellType {</div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> kCell, <span class="comment">// 大小为 2x4 的单位</span></div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> kBlock, <span class="comment">// 大小为 2x2 的单位</span></div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> kBraille, <span class="comment">// 大小为 1x1 的单位</span></div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> };</div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> </div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> <span class="keyword">struct </span>Cell {</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> CellType type = kCell;</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> Pixel content;</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> };</div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> </div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> <span class="keyword">struct </span>XY {</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> <span class="keywordtype">int</span> x;</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> <span class="keywordtype">int</span> y;</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> <span class="keywordtype">bool</span> operator==(<span class="keyword">const</span> XY&amp; other)<span class="keyword"> const </span>{</div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> <span class="keywordflow">return</span> x == other.x &amp;&amp; y == other.y;</div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> }</div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> };</div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> </div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> <span class="keyword">struct </span>XYHash {</div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> <span class="keywordtype">size_t</span> operator()(<span class="keyword">const</span> XY&amp; xy)<span class="keyword"> const </span>{</div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> <span class="keyword">constexpr</span> <span class="keywordtype">size_t</span> shift = 1024;</div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> <span class="keywordflow">return</span> size_t(xy.x) * shift + size_t(xy.y);</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> }</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> };</div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> </div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> <span class="keywordtype">int</span> width_ = 0;</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> <span class="keywordtype">int</span> height_ = 0;</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> std::unordered_map&lt;XY, Cell, XYHash&gt; storage_;</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span>};</div>
</div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> </div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span>} <span class="comment">// namespace ftxui</span></div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> </div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span><span class="preprocessor">#endif </span><span class="comment">// FTXUI_DOM_CANVAS_HPP</span></div>
<div class="ttc" id="acolor_8hpp_html"><div class="ttname"><a href="color_8hpp.html">color.hpp</a></div></div>
<div class="ttc" id="aexamples_2component_2button_8cpp_html_a98e3b8d17caf902b7bf0fe47562cea08"><div class="ttname"><a href="examples_2component_2button_8cpp.html#a98e3b8d17caf902b7bf0fe47562cea08">Style</a></div><div class="ttdeci">ButtonOption Style()</div><div class="ttdef"><b>定义</b> <a href="examples_2component_2button_8cpp_source.html#l00021">examples/component/button.cpp:21</a></div></div>
<div class="ttc" id="agroup__dom_html_a02b6e8bab532a2c43d3102674e1e1647"><div class="ttname"><a href="group__dom.html#a02b6e8bab532a2c43d3102674e1e1647">ftxui::Canvas::DrawImage</a></div><div class="ttdeci">void DrawImage(int x, int y, const Image &amp;)</div><div class="ttdoc">在给定坐标处绘制预定义图像,左上角位于该坐标 您可以提供负坐标来随意对齐图像 - 只会绘制“可见”部分</div><div class="ttdef"><b>定义</b> <a href="src_2ftxui_2dom_2canvas_8cpp_source.html#l00838">src/ftxui/dom/canvas.cpp:838</a></div></div>
<div class="ttc" id="agroup__dom_html_a182a915a7e3fc863f5c222253de01ff1"><div class="ttname"><a href="group__dom.html#a182a915a7e3fc863f5c222253de01ff1">ftxui::Canvas::DrawBlockLine</a></div><div class="ttdeci">void DrawBlockLine(int x1, int y1, int x2, int y2)</div><div class="ttdoc">绘制由块字符组成的线条。</div><div class="ttdef"><b>定义</b> <a href="src_2ftxui_2dom_2canvas_8cpp_source.html#l00530">src/ftxui/dom/canvas.cpp:530</a></div></div>
<div class="ttc" id="agroup__dom_html_a2633b8a556a82c74438fe41b253b39ee"><div class="ttname"><a href="group__dom.html#a2633b8a556a82c74438fe41b253b39ee">ftxui::Canvas::DrawPointEllipseFilled</a></div><div class="ttdeci">void DrawPointEllipseFilled(int x, int y, int r1, int r2)</div><div class="ttdoc">绘制由盲文点组成的实心椭圆。</div><div class="ttdef"><b>定义</b> <a href="src_2ftxui_2dom_2canvas_8cpp_source.html#l00373">src/ftxui/dom/canvas.cpp:373</a></div></div>
<div class="ttc" id="agroup__dom_html_a2b6800c9a6a93457a921d9b570fb2f30"><div class="ttname"><a href="group__dom.html#a2b6800c9a6a93457a921d9b570fb2f30">ftxui::Canvas::DrawPointLine</a></div><div class="ttdeci">void DrawPointLine(int x1, int y1, int x2, int y2)</div><div class="ttdoc">绘制由盲文点组成的线条。</div><div class="ttdef"><b>定义</b> <a href="src_2ftxui_2dom_2canvas_8cpp_source.html#l00190">src/ftxui/dom/canvas.cpp:190</a></div></div>
<div class="ttc" id="agroup__dom_html_a3791777bd6d3c6f8ff6281efd19a5161"><div class="ttname"><a href="group__dom.html#a3791777bd6d3c6f8ff6281efd19a5161">ftxui::Canvas::DrawText</a></div><div class="ttdeci">void DrawText(int x, int y, const std::string &amp;value)</div><div class="ttdoc">绘制一段文本。</div><div class="ttdef"><b>定义</b> <a href="src_2ftxui_2dom_2canvas_8cpp_source.html#l00784">src/ftxui/dom/canvas.cpp:784</a></div></div>
<div class="ttc" id="agroup__dom_html_a3cbcd839ac8597df2e0f351850ec4735"><div class="ttname"><a href="group__dom.html#a3cbcd839ac8597df2e0f351850ec4735">ftxui::Canvas::Canvas</a></div><div class="ttdeci">Canvas()=default</div></div>
<div class="ttc" id="agroup__dom_html_a407f299e079846ce6169f2a709ad4aae"><div class="ttname"><a href="group__dom.html#a407f299e079846ce6169f2a709ad4aae">ftxui::Canvas::Stylizer</a></div><div class="ttdeci">std::function&lt; void(Pixel &amp;)&gt; Stylizer</div><div class="ttdef"><b>定义</b> <a href="#l00048">canvas.hpp:48</a></div></div>
<div class="ttc" id="agroup__dom_html_a43cd60e79e418d3173e757a1809fde09"><div class="ttname"><a href="group__dom.html#a43cd60e79e418d3173e757a1809fde09">ftxui::Canvas::DrawBlockOn</a></div><div class="ttdeci">void DrawBlockOn(int x, int y)</div><div class="ttdoc">绘制一个块。</div><div class="ttdef"><b>定义</b> <a href="src_2ftxui_2dom_2canvas_8cpp_source.html#l00467">src/ftxui/dom/canvas.cpp:467</a></div></div>
<div class="ttc" id="agroup__dom_html_a5b6388d2515edcfb6c88a39ea56805b2"><div class="ttname"><a href="group__dom.html#a5b6388d2515edcfb6c88a39ea56805b2">ftxui::Canvas::DrawPointCircleFilled</a></div><div class="ttdeci">void DrawPointCircleFilled(int x, int y, int radius)</div><div class="ttdoc">绘制由盲文点组成的实心圆。</div><div class="ttdef"><b>定义</b> <a href="src_2ftxui_2dom_2canvas_8cpp_source.html#l00275">src/ftxui/dom/canvas.cpp:275</a></div></div>
<div class="ttc" id="agroup__dom_html_a5f488ea43e72f25cc25d055bf18dac5b"><div class="ttname"><a href="group__dom.html#a5f488ea43e72f25cc25d055bf18dac5b">ftxui::Canvas::DrawPointOn</a></div><div class="ttdeci">void DrawPointOn(int x, int y)</div><div class="ttdoc">绘制一个盲文点。</div><div class="ttdef"><b>定义</b> <a href="src_2ftxui_2dom_2canvas_8cpp_source.html#l00137">src/ftxui/dom/canvas.cpp:137</a></div></div>
<div class="ttc" id="agroup__dom_html_a64ad8a12830a3341d4a5afb380913474"><div class="ttname"><a href="group__dom.html#a64ad8a12830a3341d4a5afb380913474">ftxui::Canvas::DrawPointOff</a></div><div class="ttdeci">void DrawPointOff(int x, int y)</div><div class="ttdoc">擦除一个盲文点。</div><div class="ttdef"><b>定义</b> <a href="src_2ftxui_2dom_2canvas_8cpp_source.html#l00154">src/ftxui/dom/canvas.cpp:154</a></div></div>
<div class="ttc" id="agroup__dom_html_a656c4e679bf9254e4688f2049989a9bd"><div class="ttname"><a href="group__dom.html#a656c4e679bf9254e4688f2049989a9bd">ftxui::Canvas::GetPixel</a></div><div class="ttdeci">Pixel GetPixel(int x, int y) const</div><div class="ttdoc">获取单元格的内容。</div><div class="ttdef"><b>定义</b> <a href="src_2ftxui_2dom_2canvas_8cpp_source.html#l00098">src/ftxui/dom/canvas.cpp:98</a></div></div>
<div class="ttc" id="agroup__dom_html_a78dc3c908f7ce1c30837bd3043f19526"><div class="ttname"><a href="group__dom.html#a78dc3c908f7ce1c30837bd3043f19526">ftxui::Canvas::DrawBlockEllipseFilled</a></div><div class="ttdeci">void DrawBlockEllipseFilled(int x1, int y1, int r1, int r2)</div><div class="ttdoc">绘制由块字符组成的实心椭圆。</div><div class="ttdef"><b>定义</b> <a href="src_2ftxui_2dom_2canvas_8cpp_source.html#l00718">src/ftxui/dom/canvas.cpp:718</a></div></div>
<div class="ttc" id="agroup__dom_html_a79ee88b3cfe258309041469f707dcf68"><div class="ttname"><a href="group__dom.html#a79ee88b3cfe258309041469f707dcf68">ftxui::Canvas::DrawPointEllipse</a></div><div class="ttdeci">void DrawPointEllipse(int x, int y, int r1, int r2)</div><div class="ttdoc">绘制由盲文点组成的椭圆。</div><div class="ttdef"><b>定义</b> <a href="src_2ftxui_2dom_2canvas_8cpp_source.html#l00309">src/ftxui/dom/canvas.cpp:309</a></div></div>
<div class="ttc" id="agroup__dom_html_a8707f2585ed8b787b6b14032a5c761a1"><div class="ttname"><a href="group__dom.html#a8707f2585ed8b787b6b14032a5c761a1">ftxui::Canvas::DrawPoint</a></div><div class="ttdeci">void DrawPoint(int x, int y, bool value)</div><div class="ttdoc">绘制一个盲文点。</div><div class="ttdef"><b>定义</b> <a href="src_2ftxui_2dom_2canvas_8cpp_source.html#l00107">src/ftxui/dom/canvas.cpp:107</a></div></div>
<div class="ttc" id="agroup__dom_html_a8dd75f2dfc5bef37aa2c8bc8cfaf0579"><div class="ttname"><a href="group__dom.html#a8dd75f2dfc5bef37aa2c8bc8cfaf0579">ftxui::Canvas::DrawBlockEllipse</a></div><div class="ttdeci">void DrawBlockEllipse(int x1, int y1, int r1, int r2)</div><div class="ttdoc">绘制由块字符组成的椭圆。</div><div class="ttdef"><b>定义</b> <a href="src_2ftxui_2dom_2canvas_8cpp_source.html#l00652">src/ftxui/dom/canvas.cpp:652</a></div></div>
<div class="ttc" id="agroup__dom_html_ab4154641384d18497de60c2626b71a94"><div class="ttname"><a href="group__dom.html#ab4154641384d18497de60c2626b71a94">ftxui::Canvas::DrawBlockToggle</a></div><div class="ttdeci">void DrawBlockToggle(int x, int y)</div><div class="ttdoc">切换一个块。如果已填充,则擦除。如果为空, 将被填充。</div><div class="ttdef"><b>定义</b> <a href="src_2ftxui_2dom_2canvas_8cpp_source.html#l00508">src/ftxui/dom/canvas.cpp:508</a></div></div>
<div class="ttc" id="agroup__dom_html_ac3977d4b06ca96ff799a3b72437c8a0b"><div class="ttname"><a href="group__dom.html#ac3977d4b06ca96ff799a3b72437c8a0b">ftxui::Canvas::DrawBlockCircle</a></div><div class="ttdeci">void DrawBlockCircle(int x1, int y1, int radius)</div><div class="ttdoc">绘制由块字符组成的圆。</div><div class="ttdef"><b>定义</b> <a href="src_2ftxui_2dom_2canvas_8cpp_source.html#l00591">src/ftxui/dom/canvas.cpp:591</a></div></div>
<div class="ttc" id="agroup__dom_html_acffdcd5bae224992e155facb0baf4119"><div class="ttname"><a href="group__dom.html#acffdcd5bae224992e155facb0baf4119">ftxui::Canvas::DrawBlockCircleFilled</a></div><div class="ttdeci">void DrawBlockCircleFilled(int x1, int y1, int radius)</div><div class="ttdoc">绘制由块字符组成的实心圆。</div><div class="ttdef"><b>定义</b> <a href="src_2ftxui_2dom_2canvas_8cpp_source.html#l00618">src/ftxui/dom/canvas.cpp:618</a></div></div>
<div class="ttc" id="agroup__dom_html_ad21641f8f1fd60aa5f1d149379eba3eb"><div class="ttname"><a href="group__dom.html#ad21641f8f1fd60aa5f1d149379eba3eb">ftxui::Canvas::DrawPointCircle</a></div><div class="ttdeci">void DrawPointCircle(int x, int y, int radius)</div><div class="ttdoc">绘制由盲文点组成的圆。</div><div class="ttdef"><b>定义</b> <a href="src_2ftxui_2dom_2canvas_8cpp_source.html#l00248">src/ftxui/dom/canvas.cpp:248</a></div></div>
<div class="ttc" id="agroup__dom_html_ad3774f6419003470f54fd495124ef51f"><div class="ttname"><a href="group__dom.html#ad3774f6419003470f54fd495124ef51f">ftxui::Canvas::height</a></div><div class="ttdeci">int height() const</div><div class="ttdef"><b>定义</b> <a href="#l00045">canvas.hpp:45</a></div></div>
<div class="ttc" id="agroup__dom_html_ad626747e5e54412d0376ba870565dce6"><div class="ttname"><a href="group__dom.html#ad626747e5e54412d0376ba870565dce6">ftxui::Canvas::DrawBlockOff</a></div><div class="ttdeci">void DrawBlockOff(int x, int y)</div><div class="ttdoc">擦除一个块。</div><div class="ttdef"><b>定义</b> <a href="src_2ftxui_2dom_2canvas_8cpp_source.html#l00487">src/ftxui/dom/canvas.cpp:487</a></div></div>
<div class="ttc" id="agroup__dom_html_ad72663daf610f2a0833a2fc3d78e4fdf"><div class="ttname"><a href="group__dom.html#ad72663daf610f2a0833a2fc3d78e4fdf">ftxui::Canvas::width</a></div><div class="ttdeci">int width() const</div><div class="ttdef"><b>定义</b> <a href="#l00044">canvas.hpp:44</a></div></div>
<div class="ttc" id="agroup__dom_html_ae38b2e4f5bcda94c060bb77779d1e339"><div class="ttname"><a href="group__dom.html#ae38b2e4f5bcda94c060bb77779d1e339">ftxui::Canvas::DrawBlock</a></div><div class="ttdeci">void DrawBlock(int x, int y, bool value)</div><div class="ttdoc">绘制一个块。</div><div class="ttdef"><b>定义</b> <a href="src_2ftxui_2dom_2canvas_8cpp_source.html#l00437">src/ftxui/dom/canvas.cpp:437</a></div></div>
<div class="ttc" id="agroup__dom_html_afd64176f05f91df2d96e8f3bb0631c51"><div class="ttname"><a href="group__dom.html#afd64176f05f91df2d96e8f3bb0631c51">ftxui::Canvas::DrawPointToggle</a></div><div class="ttdeci">void DrawPointToggle(int x, int y)</div><div class="ttdoc">切换盲文点。已填充的将被擦除,另一个将被绘制。</div><div class="ttdef"><b>定义</b> <a href="src_2ftxui_2dom_2canvas_8cpp_source.html#l00171">src/ftxui/dom/canvas.cpp:171</a></div></div>
<div class="ttc" id="agroup__dom_html_afde1b1962124ef417569bef59c6dcdcc"><div class="ttname"><a href="group__dom.html#afde1b1962124ef417569bef59c6dcdcc">ftxui::Canvas::DrawPixel</a></div><div class="ttdeci">void DrawPixel(int x, int y, const Pixel &amp;)</div><div class="ttdoc">在给定坐标处直接绘制预定义像素</div><div class="ttdef"><b>定义</b> <a href="src_2ftxui_2dom_2canvas_8cpp_source.html#l00826">src/ftxui/dom/canvas.cpp:826</a></div></div>
<div class="ttc" id="agroup__dom_html_structftxui_1_1Canvas"><div class="ttname"><a href="group__dom.html#structftxui_1_1Canvas">ftxui::Canvas</a></div><div class="ttdoc">Canvas 是一个与绘图操作相关的可绘制缓冲区。</div><div class="ttdef"><b>定义</b> <a href="#l00038">canvas.hpp:38</a></div></div>
<div class="ttc" id="agroup__screen_html_classftxui_1_1Color"><div class="ttname"><a href="group__screen.html#classftxui_1_1Color">ftxui::Color</a></div><div class="ttdoc">Color 是一个表示终端用户界面中颜色的类。</div><div class="ttdef"><b>定义</b> <a href="color_8hpp_source.html#l00020">color.hpp:20</a></div></div>
<div class="ttc" id="agroup__screen_html_classftxui_1_1Image"><div class="ttname"><a href="group__screen.html#classftxui_1_1Image">ftxui::Image</a></div><div class="ttdoc">像素的矩形网格。</div><div class="ttdef"><b>定义</b> <a href="image_8hpp_source.html#l00016">image.hpp:16</a></div></div>
<div class="ttc" id="agroup__screen_html_structftxui_1_1Pixel"><div class="ttname"><a href="group__screen.html#structftxui_1_1Pixel">ftxui::Pixel</a></div><div class="ttdoc">一个 Unicode 字符及其相关样式。</div><div class="ttdef"><b>定义</b> <a href="pixel_8hpp_source.html#l00014">pixel.hpp:14</a></div></div>
<div class="ttc" id="aimage_8hpp_html"><div class="ttname"><a href="image_8hpp.html">image.hpp</a></div></div>
<div class="ttc" id="anamespaceftxui_html"><div class="ttname"><a href="namespaceftxui.html">ftxui</a></div><div class="ttdoc">#include &quot;ftxui/component/component_base.hpp&quot; // 用于 ComponentBase</div><div class="ttdef"><b>定义</b> <a href="animation_8hpp_source.html#l00009">animation.hpp:9</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.9.8-->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
</div>
<script>
document.addEventListener('DOMContentLoaded', function() {
const projectNumber = document.getElementById('projectname');
if (!projectNumber) {
console.warn('Doxygen element with ID "projectnumber" not found. Cannot add version switcher.');
return;
}
const langs = ["en", "es", "fr", "ja", "zh-CH", "zh-TW"];
const lang_paths = {"en": "../index.html", "es": "../es/index.html", "fr": "../fr/index.html", "ja": "../ja/index.html", "zh-CH": "index.html", "zh-TW": "../zh-TW/index.html"};
const lang_display = {"en": "English", "es": "Espa\u00f1ol", "fr": "Fran\u00e7ais", "ja": "\u65e5\u672c\u8a9e", "zh-CH": "\u4e2d\u6587 (\u7b80\u4f53)", "zh-TW": "\u4e2d\u6587 (\u7e41\u9ad4)"};
const versions = ["main"];
const version_paths = {"main": "index.html"};
const currentLang = "zh-CH";
const currentVersion = "main";
// Helper function to create a styled select element
const createSelect = (options, current, paths, label, displayMap = null) => {
const select = document.createElement('select');
select.title = label;
select.onchange = function() {
const selectedValue = this.value;
if (selectedValue in paths) {
window.location.href = paths[selectedValue];
}
};
// Sort versions: 'main' first, then others numerically descending.
options.sort((a, b) => {
if (a === 'main') return -1;
if (b === 'main') return 1;
return b.localeCompare(a, undefined, { numeric: true, sensitivity: 'base' });
});
options.forEach(v => {
const option = document.createElement('option');
option.value = v;
// Use the displayMap if provided, otherwise default to the value (v)
option.textContent = displayMap ? displayMap[v] : v;
if (v === current) {
option.selected = true;
}
select.appendChild(option);
});
// Apply some styling to make it look good.
Object.assign(select.style, {
backgroundColor: 'rgba(0, 0, 0, 0.8)',
color: 'white',
border: '1px solid rgba(255, 255, 255, 0.2)',
padding: '5px',
borderRadius: '5px',
fontSize: '14px',
fontFamily: 'inherit',
margin: '0 5px 0 0',
cursor: 'pointer'
});
return select;
};
// 1. Create Language Switcher, passing the language display names map
const langSelect = createSelect(langs, currentLang, lang_paths, 'Select Language', lang_display);
// 2. Create Version Switcher
const versionSelect = createSelect(versions, currentVersion, version_paths, 'Select Version');
// 3. Create FTXUI title.
const ftxuiTitle = document.createElement('span');
ftxuiTitle.textContent = 'FTXUI: ';
Object.assign(ftxuiTitle.style, {
color: 'white',
fontSize: '20px',
fontWeight: 'bold',
marginRight: '10px'
});
// 3. Create a container to hold both selectors
const container = document.createElement('div');
container.id = 'version-lang-switchers';
Object.assign(container.style, {
display: 'flex',
alignItems: 'center',
justifyContent: 'flex-end',
width: 'auto'
});
container.appendChild(ftxuiTitle);
container.appendChild(langSelect);
container.appendChild(versionSelect);
Object.assign(container.style, {
backgroundColor: 'rgba(0, 0, 0, 0.5)',
padding: '5px 10px',
borderRadius: '8px'
});
// Replace the Doxygen project number element with our container.
projectNumber.replaceWith(container);
// Clean up the original Doxygen project number text if it still exists nearby
const parent = container.parentElement;
if (parent) {
const textNode = Array.from(parent.childNodes).find(n => n.nodeType === 3 && n.textContent.trim() !== '');
if (textNode) {
textNode.remove();
}
}
});
</script>
</body>
</html>