124 lines
113 KiB
HTML
124 lines
113 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.8.15"/>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
<title>MNN: include/Matrix.h 源文件</title>
|
|
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="jquery.js"></script>
|
|
<script type="text/javascript" src="dynsections.js"></script>
|
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
|
</head>
|
|
<body>
|
|
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
|
<div id="titlearea">
|
|
<table cellspacing="0" cellpadding="0">
|
|
<tbody>
|
|
<tr style="height: 56px;">
|
|
<td id="projectalign" style="padding-left: 0.5em;">
|
|
<div id="projectname">MNN
|
|
 <span id="projectnumber">1.0</span>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<!-- end header part -->
|
|
<!-- 制作者 Doxygen 1.8.15 -->
|
|
<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&dn=gpl-2.0.txt GPL-v2 */
|
|
$(function() {
|
|
initMenu('',false,false,'search.php','搜索');
|
|
});
|
|
/* @license-end */</script>
|
|
<div id="main-nav"></div>
|
|
<div id="nav-path" class="navpath">
|
|
<ul>
|
|
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li> </ul>
|
|
</div>
|
|
</div><!-- top -->
|
|
<div class="header">
|
|
<div class="headertitle">
|
|
<div class="title">Matrix.h</div> </div>
|
|
</div><!--header-->
|
|
<div class="contents">
|
|
<a href="_matrix_8h.html">浏览该文件的文档.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright 2006 The Android Open Source Project</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * Use of this source code is governed by a BSD-style license that can be</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * found in the LICENSE file.</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> */</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">/* Generated by tools/bookmaker from include/core/Matrix.h and docs/SkMatrix_Reference.bmh</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> on 2018-07-13 08:15:11. Additional documentation and examples can be found at:</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> https://skia.org/user/api/SkMatrix_Reference</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"></span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> You may edit either file directly. Structural changes to public interfaces require</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> editing both files. After editing docs/SkMatrix_Reference.bmh, run:</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> bookmaker -b docs -i include/core/Matrix.h -p</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> to create an updated version of this file.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> </div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">//</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">// Modified by jiangxiaotang on 2018/09/19.</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">// Copyright © 2018, Alibaba Group Holding Limited</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment">//</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#ifndef SkMatrix_DEFINED</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#define SkMatrix_DEFINED</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <string.h></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <cstdint></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "<a class="code" href="_rect_8h.html">Rect.h</a>"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespace_m_n_n.html">MNN</a> {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">namespace </span>CV {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html"> 48</a></span> <span class="keyword">class </span><a class="code" href="_m_n_n_define_8h.html#a692428e2a0af8ffb79376d223a0695ab">MNN_PUBLIC</a> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html">Matrix</a> {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a994a4f0be12f2881186892d123f83026"> 50</a></span>  <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a994a4f0be12f2881186892d123f83026">Matrix</a>() {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  setIdentity();</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a85cd67b59f24ab307950b437c4669eae"> 64</a></span>  <span class="keyword">static</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html">Matrix</a> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a85cd67b59f24ab307950b437c4669eae">MakeScale</a>(<span class="keywordtype">float</span> sx, <span class="keywordtype">float</span> sy) {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html">Matrix</a> m;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  m.<a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a32c757775b188138cf0b89f2cfd7f2fd">setScale</a>(sx, sy);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">return</span> m;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a3b05fbab55e352623bc6472a3a29b426"> 79</a></span>  <span class="keyword">static</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html">Matrix</a> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a3b05fbab55e352623bc6472a3a29b426">MakeScale</a>(<span class="keywordtype">float</span> scale) {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html">Matrix</a> m;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  m.<a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a32c757775b188138cf0b89f2cfd7f2fd">setScale</a>(scale, scale);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">return</span> m;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  }</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#ad0a7c082d559ef73f93ec16e9644b590"> 95</a></span>  <span class="keyword">static</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html">Matrix</a> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#ad0a7c082d559ef73f93ec16e9644b590">MakeTrans</a>(<span class="keywordtype">float</span> dx, <span class="keywordtype">float</span> dy) {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html">Matrix</a> m;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  m.<a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a64ddd5b5f07a3c7671502769cf95ecf8">setTranslate</a>(dx, dy);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">return</span> m;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#afd03e03f146c891e3a7dd64cea4d09cc"> 118</a></span>  <span class="keyword">static</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html">Matrix</a> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#afd03e03f146c891e3a7dd64cea4d09cc">MakeAll</a>(<span class="keywordtype">float</span> scaleX, <span class="keywordtype">float</span> skewX, <span class="keywordtype">float</span> transX, <span class="keywordtype">float</span> skewY, <span class="keywordtype">float</span> scaleY, <span class="keywordtype">float</span> transY, <span class="keywordtype">float</span> pers0,</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordtype">float</span> pers1, <span class="keywordtype">float</span> pers2) {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html">Matrix</a> m;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  m.<a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a41c5adfb5b4236e756b95884de47c985">setAll</a>(scaleX, skewX, transX, skewY, scaleY, transY, pers0, pers1, pers2);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">return</span> m;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a4d66f9e294a7bf8fcd111568f7f096c3"> 129</a></span>  <span class="keyword">enum</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a4d66f9e294a7bf8fcd111568f7f096c3">TypeMask</a> {</div><div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a4d66f9e294a7bf8fcd111568f7f096c3a7c9c1f245488e9304bad456dba786b91"> 130</a></span>  kIdentity_Mask = 0, </div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a4d66f9e294a7bf8fcd111568f7f096c3a310a4123e7192b899ad0f68ed1b6f38f"> 131</a></span>  kTranslate_Mask = 0x01, </div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a4d66f9e294a7bf8fcd111568f7f096c3a6f6bedaa06c972b92fcd81ef9619e702"> 132</a></span>  kScale_Mask = 0x02, </div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a4d66f9e294a7bf8fcd111568f7f096c3a6f3fcf03cf1d72ebbcf19c7013376c0c"> 133</a></span>  kAffine_Mask = 0x04, </div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a4d66f9e294a7bf8fcd111568f7f096c3a3658085367eabd3791636278654aab19"> 134</a></span>  kPerspective_Mask = 0x08, </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  };</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a920af77c5e089af12f9884583216ee89"> 145</a></span>  <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a4d66f9e294a7bf8fcd111568f7f096c3">TypeMask</a> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a920af77c5e089af12f9884583216ee89">getType</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">if</span> (fTypeMask & kUnknown_Mask) {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  fTypeMask = this->computeTypeMask();</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  }</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="comment">// only return the public masks</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordflow">return</span> (<a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a4d66f9e294a7bf8fcd111568f7f096c3">TypeMask</a>)(fTypeMask & 0xF);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00161"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a80a9efb21f22e19461a7f15f41c7e301"> 161</a></span>  <span class="keywordtype">bool</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a80a9efb21f22e19461a7f15f41c7e301">isIdentity</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keywordflow">return</span> this->getType() == 0;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  }</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div><div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a1e7d34b3eb6adb9ec940827edf03082b"> 174</a></span>  <span class="keywordtype">bool</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a1e7d34b3eb6adb9ec940827edf03082b">isScaleTranslate</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">return</span> !(this->getType() & ~(kScale_Mask | kTranslate_Mask));</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> </div><div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#af7c20c9a4df9dbe0d602271baa2fae8c"> 186</a></span>  <span class="keywordtype">bool</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#af7c20c9a4df9dbe0d602271baa2fae8c">isTranslate</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keywordflow">return</span> !(this->getType() & ~(kTranslate_Mask));</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  }</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> </div><div class="line"><a name="l00211"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#aae4f4671dcd3eb69251b6b69b756c8eb"> 211</a></span>  <span class="keywordtype">bool</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#aae4f4671dcd3eb69251b6b69b756c8eb">rectStaysRect</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keywordflow">if</span> (fTypeMask & kUnknown_Mask) {</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  fTypeMask = this->computeTypeMask();</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  }</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordflow">return</span> (fTypeMask & kRectStaysRect_Mask) != 0;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> </div><div class="line"><a name="l00239"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a0fe9863cb0f149e97c57e0bd310a8091"> 239</a></span>  <span class="keywordtype">bool</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a0fe9863cb0f149e97c57e0bd310a8091">preservesAxisAlignment</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keywordflow">return</span> this->rectStaysRect();</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  }</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> </div><div class="line"><a name="l00246"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a7de74100127ba6292318d4105e2448e0"> 246</a></span>  <span class="keyword">static</span> constexpr <span class="keywordtype">int</span> kMScaleX = 0; </div><div class="line"><a name="l00247"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a37665e4b858862fdc50366fac19ac7b1"> 247</a></span>  <span class="keyword">static</span> constexpr <span class="keywordtype">int</span> kMSkewX = 1; </div><div class="line"><a name="l00248"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a202d2de9bc274df21d07e0d30fb7f7a4"> 248</a></span>  <span class="keyword">static</span> constexpr <span class="keywordtype">int</span> kMTransX = 2; </div><div class="line"><a name="l00249"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a254d3c4f79dadfcde314f757430d46ae"> 249</a></span>  <span class="keyword">static</span> constexpr <span class="keywordtype">int</span> kMSkewY = 3; </div><div class="line"><a name="l00250"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a0740678fdc865ecc7ffbe116fa4adb45"> 250</a></span>  <span class="keyword">static</span> constexpr <span class="keywordtype">int</span> kMScaleY = 4; </div><div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a92341274274d04e3fd668843157ed393"> 251</a></span>  <span class="keyword">static</span> constexpr <span class="keywordtype">int</span> kMTransY = 5; </div><div class="line"><a name="l00252"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#ad89d5ae10e6a97e467805b7e67016071"> 252</a></span>  <span class="keyword">static</span> constexpr <span class="keywordtype">int</span> kMPersp0 = 6; </div><div class="line"><a name="l00253"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a5335529230f770344e12c15814a73040"> 253</a></span>  <span class="keyword">static</span> constexpr <span class="keywordtype">int</span> kMPersp1 = 7; </div><div class="line"><a name="l00254"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#aef5f38e0114da2fb099852078743d7ad"> 254</a></span>  <span class="keyword">static</span> constexpr <span class="keywordtype">int</span> kMPersp2 = 8; </div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> </div><div class="line"><a name="l00259"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#ae8e060cdf6868cdfdf0bae432aa17fd5"> 259</a></span>  <span class="keyword">static</span> constexpr <span class="keywordtype">int</span> kAScaleX = 0; </div><div class="line"><a name="l00260"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#af9c71cf11a29bf7344357c28b4193545"> 260</a></span>  <span class="keyword">static</span> constexpr <span class="keywordtype">int</span> kASkewY = 1; </div><div class="line"><a name="l00261"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a0eb9dedcccbc251c9a412cf71f4e0b3c"> 261</a></span>  <span class="keyword">static</span> constexpr <span class="keywordtype">int</span> kASkewX = 2; </div><div class="line"><a name="l00262"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a2df867ef1512a44a8539d46e0acad6a9"> 262</a></span>  <span class="keyword">static</span> constexpr <span class="keywordtype">int</span> kAScaleY = 3; </div><div class="line"><a name="l00263"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#ad5ae3231629fc59390a63661edf1f447"> 263</a></span>  <span class="keyword">static</span> constexpr <span class="keywordtype">int</span> kATransX = 4; </div><div class="line"><a name="l00264"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a86ee756b37c955f7935cee8ea0e29081"> 264</a></span>  <span class="keyword">static</span> constexpr <span class="keywordtype">int</span> kATransY = 5; </div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span> </div><div class="line"><a name="l00273"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a6d75cd8885bc169ebbed0a3842d0a136"> 273</a></span>  <span class="keywordtype">float</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a6d75cd8885bc169ebbed0a3842d0a136">operator[]</a>(<span class="keywordtype">int</span> index)<span class="keyword"> const </span>{</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <a class="code" href="_m_n_n_define_8h.html#ae353a9c1a1afe84eeefafac7d7f5bed1">MNN_ASSERT</a>((<span class="keywordtype">unsigned</span>)index < 9);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keywordflow">return</span> fMat[index];</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  }</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span> </div><div class="line"><a name="l00285"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a8cb83b8451e52f04224a2f10a8d7e977"> 285</a></span>  <span class="keywordtype">float</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a8cb83b8451e52f04224a2f10a8d7e977">get</a>(<span class="keywordtype">int</span> index)<span class="keyword"> const </span>{</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <a class="code" href="_m_n_n_define_8h.html#ae353a9c1a1afe84eeefafac7d7f5bed1">MNN_ASSERT</a>((<span class="keywordtype">unsigned</span>)index < 9);</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keywordflow">return</span> fMat[index];</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  }</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> </div><div class="line"><a name="l00295"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#afda91b2de2547c56812a990b343adea8"> 295</a></span>  <span class="keywordtype">float</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#afda91b2de2547c56812a990b343adea8">getScaleX</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="keywordflow">return</span> fMat[kMScaleX];</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  }</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span> </div><div class="line"><a name="l00304"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#aebb3f83534c38eec1c605c143db5e440"> 304</a></span>  <span class="keywordtype">float</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#aebb3f83534c38eec1c605c143db5e440">getScaleY</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keywordflow">return</span> fMat[kMScaleY];</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  }</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> </div><div class="line"><a name="l00314"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a4a4b603b48253e55fc27c2677898fe18"> 314</a></span>  <span class="keywordtype">float</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a4a4b603b48253e55fc27c2677898fe18">getSkewY</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keywordflow">return</span> fMat[kMSkewY];</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  }</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> </div><div class="line"><a name="l00324"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a7a50cf880189f8828cbe643c20086c36"> 324</a></span>  <span class="keywordtype">float</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a7a50cf880189f8828cbe643c20086c36">getSkewX</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="keywordflow">return</span> fMat[kMSkewX];</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  }</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span> </div><div class="line"><a name="l00333"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#af6e21da1f6a1342a1e7c3f060d96af4d"> 333</a></span>  <span class="keywordtype">float</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#af6e21da1f6a1342a1e7c3f060d96af4d">getTranslateX</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="keywordflow">return</span> fMat[kMTransX];</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  }</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span> </div><div class="line"><a name="l00342"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a8312ffc5455b9217d8a3f3975237c026"> 342</a></span>  <span class="keywordtype">float</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a8312ffc5455b9217d8a3f3975237c026">getTranslateY</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="keywordflow">return</span> fMat[kMTransY];</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  }</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span> </div><div class="line"><a name="l00350"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a5f8ffb32f8988f89960254e982d5bc87"> 350</a></span>  <span class="keywordtype">float</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a5f8ffb32f8988f89960254e982d5bc87">getPerspX</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="keywordflow">return</span> fMat[kMPersp0];</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  }</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span> </div><div class="line"><a name="l00358"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a63dce01735b6ee0eddf90ee71d7eadf2"> 358</a></span>  <span class="keywordtype">float</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a63dce01735b6ee0eddf90ee71d7eadf2">getPerspY</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <span class="keywordflow">return</span> fMat[kMPersp1];</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  }</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span> </div><div class="line"><a name="l00372"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#ab70b003dcbc742777bb908511be6fd63"> 372</a></span>  <span class="keywordtype">float</span>& <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#ab70b003dcbc742777bb908511be6fd63">operator[]</a>(<span class="keywordtype">int</span> index) {</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <a class="code" href="_m_n_n_define_8h.html#ae353a9c1a1afe84eeefafac7d7f5bed1">MNN_ASSERT</a>((<span class="keywordtype">unsigned</span>)index < 9);</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  this->setTypeMask(kUnknown_Mask);</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <span class="keywordflow">return</span> fMat[index];</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  }</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span> </div><div class="line"><a name="l00385"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a95657f702e16d797477c9aa24ac4a0fd"> 385</a></span>  <span class="keywordtype">void</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a95657f702e16d797477c9aa24ac4a0fd">set</a>(<span class="keywordtype">int</span> index, <span class="keywordtype">float</span> value) {</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <a class="code" href="_m_n_n_define_8h.html#ae353a9c1a1afe84eeefafac7d7f5bed1">MNN_ASSERT</a>((<span class="keywordtype">unsigned</span>)index < 9);</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  fMat[index] = value;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  this->setTypeMask(kUnknown_Mask);</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  }</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span> </div><div class="line"><a name="l00395"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a2ef2a1e031dd5de7ff653038c401c1d4"> 395</a></span>  <span class="keywordtype">void</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a2ef2a1e031dd5de7ff653038c401c1d4">setScaleX</a>(<span class="keywordtype">float</span> v) {</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  this->set(kMScaleX, v);</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  }</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span> </div><div class="line"><a name="l00403"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a536b3ee8befe547496e47bef9422ca22"> 403</a></span>  <span class="keywordtype">void</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a536b3ee8befe547496e47bef9422ca22">setScaleY</a>(<span class="keywordtype">float</span> v) {</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  this->set(kMScaleY, v);</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  }</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span> </div><div class="line"><a name="l00411"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a28974d70ccb159f0c79ebc46f73fdfde"> 411</a></span>  <span class="keywordtype">void</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a28974d70ccb159f0c79ebc46f73fdfde">setSkewY</a>(<span class="keywordtype">float</span> v) {</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  this->set(kMSkewY, v);</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  }</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span> </div><div class="line"><a name="l00419"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a0e7c43a69da5564fade1134e245e5e65"> 419</a></span>  <span class="keywordtype">void</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a0e7c43a69da5564fade1134e245e5e65">setSkewX</a>(<span class="keywordtype">float</span> v) {</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  this->set(kMSkewX, v);</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  }</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span> </div><div class="line"><a name="l00427"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#aafea25177ca15b3e66b796811ff12839"> 427</a></span>  <span class="keywordtype">void</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#aafea25177ca15b3e66b796811ff12839">setTranslateX</a>(<span class="keywordtype">float</span> v) {</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  this->set(kMTransX, v);</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  }</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span> </div><div class="line"><a name="l00435"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#af906c3d8207529707974d551d329ce39"> 435</a></span>  <span class="keywordtype">void</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#af906c3d8207529707974d551d329ce39">setTranslateY</a>(<span class="keywordtype">float</span> v) {</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  this->set(kMTransY, v);</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  }</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span> </div><div class="line"><a name="l00444"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#ac07d0f297600849a05dc3b175098121e"> 444</a></span>  <span class="keywordtype">void</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#ac07d0f297600849a05dc3b175098121e">setPerspX</a>(<span class="keywordtype">float</span> v) {</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  this->set(kMPersp0, v);</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  }</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span> </div><div class="line"><a name="l00453"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a387100b9690549b671cf69a82cc134d1"> 453</a></span>  <span class="keywordtype">void</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a387100b9690549b671cf69a82cc134d1">setPerspY</a>(<span class="keywordtype">float</span> v) {</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  this->set(kMPersp1, v);</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  }</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span> </div><div class="line"><a name="l00473"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a41c5adfb5b4236e756b95884de47c985"> 473</a></span>  <span class="keywordtype">void</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a41c5adfb5b4236e756b95884de47c985">setAll</a>(<span class="keywordtype">float</span> scaleX, <span class="keywordtype">float</span> skewX, <span class="keywordtype">float</span> transX, <span class="keywordtype">float</span> skewY, <span class="keywordtype">float</span> scaleY, <span class="keywordtype">float</span> transY, <span class="keywordtype">float</span> persp0,</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <span class="keywordtype">float</span> persp1, <span class="keywordtype">float</span> persp2) {</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  fMat[kMScaleX] = scaleX;</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  fMat[kMSkewX] = skewX;</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  fMat[kMTransX] = transX;</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  fMat[kMSkewY] = skewY;</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  fMat[kMScaleY] = scaleY;</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  fMat[kMTransY] = transY;</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  fMat[kMPersp0] = persp0;</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  fMat[kMPersp1] = persp1;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  fMat[kMPersp2] = persp2;</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  this->setTypeMask(kUnknown_Mask);</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  }</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span> </div><div class="line"><a name="l00493"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a2e02d4d6e16ccdb49029aa44bab08330"> 493</a></span>  <span class="keywordtype">void</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a2e02d4d6e16ccdb49029aa44bab08330">get9</a>(<span class="keywordtype">float</span> buffer[9])<span class="keyword"> const </span>{</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  memcpy(buffer, fMat, 9 * <span class="keyword">sizeof</span>(<span class="keywordtype">float</span>));</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  }</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span> </div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <span class="keywordtype">void</span> set9(<span class="keyword">const</span> <span class="keywordtype">float</span> buffer[9]);</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span> </div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  <span class="keywordtype">void</span> reset();</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span> </div><div class="line"><a name="l00535"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#ad46ca718c770bba11643c0ecc9a402fa"> 535</a></span>  <span class="keywordtype">void</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#ad46ca718c770bba11643c0ecc9a402fa">setIdentity</a>() {</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  this->reset();</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  }</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span> </div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  <span class="keywordtype">void</span> setTranslate(<span class="keywordtype">float</span> dx, <span class="keywordtype">float</span> dy);</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span> </div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  <span class="keywordtype">void</span> setScale(<span class="keywordtype">float</span> sx, <span class="keywordtype">float</span> sy, <span class="keywordtype">float</span> px, <span class="keywordtype">float</span> py);</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span> </div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  <span class="keywordtype">void</span> setScale(<span class="keywordtype">float</span> sx, <span class="keywordtype">float</span> sy);</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span> </div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  <span class="keywordtype">void</span> setRotate(<span class="keywordtype">float</span> degrees, <span class="keywordtype">float</span> px, <span class="keywordtype">float</span> py);</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span> </div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <span class="keywordtype">void</span> setRotate(<span class="keywordtype">float</span> degrees);</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span> </div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  <span class="keywordtype">void</span> setSinCos(<span class="keywordtype">float</span> sinValue, <span class="keywordtype">float</span> cosValue, <span class="keywordtype">float</span> px, <span class="keywordtype">float</span> py);</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span> </div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  <span class="keywordtype">void</span> setSinCos(<span class="keywordtype">float</span> sinValue, <span class="keywordtype">float</span> cosValue);</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span> </div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  <span class="keywordtype">void</span> setSkew(<span class="keywordtype">float</span> kx, <span class="keywordtype">float</span> ky, <span class="keywordtype">float</span> px, <span class="keywordtype">float</span> py);</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span> </div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  <span class="keywordtype">void</span> setSkew(<span class="keywordtype">float</span> kx, <span class="keywordtype">float</span> ky);</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span> </div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  <span class="keywordtype">void</span> setConcat(<span class="keyword">const</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html">Matrix</a>& a, <span class="keyword">const</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html">Matrix</a>& b);</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span> </div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  <span class="keywordtype">void</span> preTranslate(<span class="keywordtype">float</span> dx, <span class="keywordtype">float</span> dy);</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span> </div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  <span class="keywordtype">void</span> preScale(<span class="keywordtype">float</span> sx, <span class="keywordtype">float</span> sy, <span class="keywordtype">float</span> px, <span class="keywordtype">float</span> py);</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span> </div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  <span class="keywordtype">void</span> preScale(<span class="keywordtype">float</span> sx, <span class="keywordtype">float</span> sy);</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span> </div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  <span class="keywordtype">void</span> preRotate(<span class="keywordtype">float</span> degrees, <span class="keywordtype">float</span> px, <span class="keywordtype">float</span> py);</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span> </div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  <span class="keywordtype">void</span> preRotate(<span class="keywordtype">float</span> degrees);</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span> </div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  <span class="keywordtype">void</span> preSkew(<span class="keywordtype">float</span> kx, <span class="keywordtype">float</span> ky, <span class="keywordtype">float</span> px, <span class="keywordtype">float</span> py);</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span> </div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  <span class="keywordtype">void</span> preSkew(<span class="keywordtype">float</span> kx, <span class="keywordtype">float</span> ky);</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span> </div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  <span class="keywordtype">void</span> preConcat(<span class="keyword">const</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html">Matrix</a>& other);</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span> </div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>  <span class="keywordtype">void</span> postTranslate(<span class="keywordtype">float</span> dx, <span class="keywordtype">float</span> dy);</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span> </div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>  <span class="keywordtype">void</span> postScale(<span class="keywordtype">float</span> sx, <span class="keywordtype">float</span> sy, <span class="keywordtype">float</span> px, <span class="keywordtype">float</span> py);</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span> </div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>  <span class="keywordtype">void</span> postScale(<span class="keywordtype">float</span> sx, <span class="keywordtype">float</span> sy);</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span> </div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>  <span class="keywordtype">bool</span> postIDiv(<span class="keywordtype">int</span> divx, <span class="keywordtype">int</span> divy);</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span> </div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  <span class="keywordtype">void</span> postRotate(<span class="keywordtype">float</span> degrees, <span class="keywordtype">float</span> px, <span class="keywordtype">float</span> py);</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span> </div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>  <span class="keywordtype">void</span> postRotate(<span class="keywordtype">float</span> degrees);</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span> </div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>  <span class="keywordtype">void</span> postSkew(<span class="keywordtype">float</span> kx, <span class="keywordtype">float</span> ky, <span class="keywordtype">float</span> px, <span class="keywordtype">float</span> py);</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span> </div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>  <span class="keywordtype">void</span> postSkew(<span class="keywordtype">float</span> kx, <span class="keywordtype">float</span> ky);</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span> </div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>  <span class="keywordtype">void</span> postConcat(<span class="keyword">const</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html">Matrix</a>& other);</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span> </div><div class="line"><a name="l01064"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#ac4c57512b9ff170b8c27141ac9dc2b16"> 1064</a></span>  <span class="keyword">enum</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#ac4c57512b9ff170b8c27141ac9dc2b16">ScaleToFit</a> {</div><div class="line"><a name="l01065"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#ac4c57512b9ff170b8c27141ac9dc2b16a72d6657e24aae9858f946dcc8d638538"> 1065</a></span>  <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#ac4c57512b9ff170b8c27141ac9dc2b16a72d6657e24aae9858f946dcc8d638538">kFill_ScaleToFit</a>, </div><div class="line"><a name="l01066"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#ac4c57512b9ff170b8c27141ac9dc2b16a7ecd2ad82e428b97949ce05fb72d2bb7"> 1066</a></span>  <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#ac4c57512b9ff170b8c27141ac9dc2b16a7ecd2ad82e428b97949ce05fb72d2bb7">kStart_ScaleToFit</a>, </div><div class="line"><a name="l01067"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#ac4c57512b9ff170b8c27141ac9dc2b16aae2bd4bf3c03002dc0011669a9125a95"> 1067</a></span>  <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#ac4c57512b9ff170b8c27141ac9dc2b16aae2bd4bf3c03002dc0011669a9125a95">kCenter_ScaleToFit</a>, </div><div class="line"><a name="l01068"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#ac4c57512b9ff170b8c27141ac9dc2b16ad8816240d08e10c1dc565d0218a927cd"> 1068</a></span>  <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#ac4c57512b9ff170b8c27141ac9dc2b16ad8816240d08e10c1dc565d0218a927cd">kEnd_ScaleToFit</a>, </div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>  };</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span> </div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>  <span class="keywordtype">bool</span> setRectToRect(<span class="keyword">const</span> <a class="code" href="struct_m_n_n_1_1_c_v_1_1_rect.html">Rect</a>& src, <span class="keyword">const</span> <a class="code" href="struct_m_n_n_1_1_c_v_1_1_rect.html">Rect</a>& dst, ScaleToFit stf);</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span> </div><div class="line"><a name="l01103"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a012a6fe8b976cae6f08d356855a5fd53"> 1103</a></span>  <span class="keyword">static</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html">Matrix</a> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a012a6fe8b976cae6f08d356855a5fd53">MakeRectToRect</a>(<span class="keyword">const</span> <a class="code" href="struct_m_n_n_1_1_c_v_1_1_rect.html">Rect</a>& src, <span class="keyword">const</span> <a class="code" href="struct_m_n_n_1_1_c_v_1_1_rect.html">Rect</a>& dst, <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#ac4c57512b9ff170b8c27141ac9dc2b16">ScaleToFit</a> stf) {</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>  <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html">Matrix</a> m;</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>  m.<a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#afe9ff946b4145e71f40205c9c23d63c7">setRectToRect</a>(src, dst, stf);</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>  <span class="keywordflow">return</span> m;</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>  }</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span> </div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>  <span class="keywordtype">bool</span> setPolyToPoly(<span class="keyword">const</span> <a class="code" href="struct_m_n_n_1_1_c_v_1_1_point.html">Point</a> src[], <span class="keyword">const</span> <a class="code" href="struct_m_n_n_1_1_c_v_1_1_point.html">Point</a> dst[], <span class="keywordtype">int</span> count);</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span> </div><div class="line"><a name="l01132"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a037d7599f234e75c0869302e10a3dd32"> 1132</a></span>  <span class="keywordtype">bool</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a037d7599f234e75c0869302e10a3dd32">invert</a>(<a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html">Matrix</a>* inverse)<span class="keyword"> const </span>{</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>  <span class="comment">// Allow the trivial case to be inlined.</span></div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>  <span class="keywordflow">if</span> (this->isIdentity()) {</div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>  <span class="keywordflow">if</span> (inverse) {</div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>  inverse-><a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a361d0f247ef268c716f3575c2c46c640">reset</a>();</div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>  }</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>  }</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>  <span class="keywordflow">return</span> this->invertNonIdentity(inverse);</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>  }</div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span> </div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> SetAffineIdentity(<span class="keywordtype">float</span> affine[6]);</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span> </div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>  <span class="keywordtype">bool</span> asAffine(<span class="keywordtype">float</span> affine[6]) <span class="keyword">const</span>;</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span> </div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>  <span class="keywordtype">void</span> setAffine(<span class="keyword">const</span> <span class="keywordtype">float</span> affine[6]);</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span> </div><div class="line"><a name="l01209"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a93dbff13c64c0ed0e9005b2609c550a1"> 1209</a></span>  <span class="keywordtype">void</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a93dbff13c64c0ed0e9005b2609c550a1">mapPoints</a>(<a class="code" href="struct_m_n_n_1_1_c_v_1_1_point.html">Point</a> dst[], <span class="keyword">const</span> <a class="code" href="struct_m_n_n_1_1_c_v_1_1_point.html">Point</a> src[], <span class="keywordtype">int</span> count)<span class="keyword"> const </span>{</div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>  <a class="code" href="_m_n_n_define_8h.html#ae353a9c1a1afe84eeefafac7d7f5bed1">MNN_ASSERT</a>((dst && src && count > 0) || 0 == count);</div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>  <span class="comment">// no partial overlap</span></div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>  <a class="code" href="_m_n_n_define_8h.html#ae353a9c1a1afe84eeefafac7d7f5bed1">MNN_ASSERT</a>(src == dst || &dst[count] <= &src[0] || &src[count] <= &dst[0]);</div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>  this->getMapPtsProc()(*<span class="keyword">this</span>, dst, src, count);</div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>  }</div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span> </div><div class="line"><a name="l01239"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#ab7c756e36573cc6ef1c4f77c3088eaee"> 1239</a></span>  <span class="keywordtype">void</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#ab7c756e36573cc6ef1c4f77c3088eaee">mapPoints</a>(<a class="code" href="struct_m_n_n_1_1_c_v_1_1_point.html">Point</a> pts[], <span class="keywordtype">int</span> count)<span class="keyword"> const </span>{</div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>  this->mapPoints(pts, pts, count);</div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>  }</div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span> </div><div class="line"><a name="l01259"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a3f97f8217503e8cb7ed70d2d54960a54"> 1259</a></span>  <span class="keywordtype">void</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a3f97f8217503e8cb7ed70d2d54960a54">mapXY</a>(<span class="keywordtype">float</span> x, <span class="keywordtype">float</span> y, <a class="code" href="struct_m_n_n_1_1_c_v_1_1_point.html">Point</a>* result)<span class="keyword"> const </span>{</div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>  this->getMapXYProc()(*<span class="keyword">this</span>, x, y, result);</div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>  }</div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span> </div><div class="line"><a name="l01279"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a0d45157a305e7063765f534030163f21"> 1279</a></span>  <a class="code" href="struct_m_n_n_1_1_c_v_1_1_point.html">Point</a> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a0d45157a305e7063765f534030163f21">mapXY</a>(<span class="keywordtype">float</span> x, <span class="keywordtype">float</span> y)<span class="keyword"> const </span>{</div><div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>  <a class="code" href="struct_m_n_n_1_1_c_v_1_1_point.html">Point</a> result;</div><div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>  this->getMapXYProc()(*<span class="keyword">this</span>, x, y, &result);</div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>  }</div><div class="line"><a name="l01284"></a><span class="lineno"> 1284</span> </div><div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>  <span class="keywordtype">bool</span> mapRect(<a class="code" href="struct_m_n_n_1_1_c_v_1_1_rect.html">Rect</a>* dst, <span class="keyword">const</span> <a class="code" href="struct_m_n_n_1_1_c_v_1_1_rect.html">Rect</a>& src) <span class="keyword">const</span>;</div><div class="line"><a name="l01295"></a><span class="lineno"> 1295</span> </div><div class="line"><a name="l01304"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a2c1d97cacdb68559670ed7ebd5a02b40"> 1304</a></span>  <span class="keywordtype">bool</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a2c1d97cacdb68559670ed7ebd5a02b40">mapRect</a>(<a class="code" href="struct_m_n_n_1_1_c_v_1_1_rect.html">Rect</a>* rect)<span class="keyword"> const </span>{</div><div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>  <span class="keywordflow">return</span> this->mapRect(rect, *rect);</div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>  }</div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span> </div><div class="line"><a name="l01313"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a549c7d38b10404a4b61043b140dfebdc"> 1313</a></span>  <a class="code" href="struct_m_n_n_1_1_c_v_1_1_rect.html">Rect</a> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a549c7d38b10404a4b61043b140dfebdc">mapRect</a>(<span class="keyword">const</span> <a class="code" href="struct_m_n_n_1_1_c_v_1_1_rect.html">Rect</a>& src)<span class="keyword"> const </span>{</div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>  <a class="code" href="struct_m_n_n_1_1_c_v_1_1_rect.html">Rect</a> dst;</div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>  (void)this->mapRect(&dst, src);</div><div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>  <span class="keywordflow">return</span> dst;</div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>  }</div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span> </div><div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>  <span class="keywordtype">void</span> mapRectScaleTranslate(<a class="code" href="struct_m_n_n_1_1_c_v_1_1_rect.html">Rect</a>* dst, <span class="keyword">const</span> <a class="code" href="struct_m_n_n_1_1_c_v_1_1_rect.html">Rect</a>& src) <span class="keyword">const</span>;</div><div class="line"><a name="l01327"></a><span class="lineno"> 1327</span> </div><div class="line"><a name="l01341"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a67caa4d57647261577f3462efa1d27d1"> 1341</a></span>  <span class="keywordtype">bool</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a67caa4d57647261577f3462efa1d27d1">cheapEqualTo</a>(<span class="keyword">const</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html">Matrix</a>& m)<span class="keyword"> const </span>{</div><div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>  <span class="keywordflow">return</span> 0 == memcmp(fMat, m.fMat, <span class="keyword">sizeof</span>(fMat));</div><div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>  }</div><div class="line"><a name="l01344"></a><span class="lineno"> 1344</span> </div><div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>  <span class="keyword">friend</span> <a class="code" href="_m_n_n_define_8h.html#a692428e2a0af8ffb79376d223a0695ab">MNN_PUBLIC</a> <span class="keywordtype">bool</span> operator==(<span class="keyword">const</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html">Matrix</a>& a, <span class="keyword">const</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html">Matrix</a>& b);</div><div class="line"><a name="l01354"></a><span class="lineno"> 1354</span> </div><div class="line"><a name="l01363"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a9a2ab581fd780faf0c80cd3765fd3121"> 1363</a></span>  <span class="keyword">friend</span> <a class="code" href="_m_n_n_define_8h.html#a692428e2a0af8ffb79376d223a0695ab">MNN_PUBLIC</a> <span class="keywordtype">bool</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a9a2ab581fd780faf0c80cd3765fd3121">operator!=</a>(<span class="keyword">const</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html">Matrix</a>& a, <span class="keyword">const</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html">Matrix</a>& b) {</div><div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>  <span class="keywordflow">return</span> !(a == b);</div><div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>  }</div><div class="line"><a name="l01366"></a><span class="lineno"> 1366</span> </div><div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>  <span class="keywordtype">void</span> dump() <span class="keyword">const</span>;</div><div class="line"><a name="l01372"></a><span class="lineno"> 1372</span> </div><div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>  <span class="keywordtype">float</span> getMinScale() <span class="keyword">const</span>;</div><div class="line"><a name="l01380"></a><span class="lineno"> 1380</span> </div><div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>  <span class="keywordtype">float</span> getMaxScale() <span class="keyword">const</span>;</div><div class="line"><a name="l01388"></a><span class="lineno"> 1388</span> </div><div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>  <span class="keywordtype">bool</span> getMinMaxScales(<span class="keywordtype">float</span> scaleFactors[2]) <span class="keyword">const</span>;</div><div class="line"><a name="l01400"></a><span class="lineno"> 1400</span> </div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>  <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html">Matrix</a>& I();</div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span> </div><div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>  <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html">Matrix</a>& InvalidMatrix();</div><div class="line"><a name="l01421"></a><span class="lineno"> 1421</span> </div><div class="line"><a name="l01440"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a7161b6a80fa3424019b029d29d084fc4"> 1440</a></span>  <span class="keyword">static</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html">Matrix</a> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a7161b6a80fa3424019b029d29d084fc4">Concat</a>(<span class="keyword">const</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html">Matrix</a>& a, <span class="keyword">const</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html">Matrix</a>& b) {</div><div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>  <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html">Matrix</a> result;</div><div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>  result.<a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a2e76afc5160219aa3c331cd2263d622c">setConcat</a>(a, b);</div><div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>  }</div><div class="line"><a name="l01445"></a><span class="lineno"> 1445</span> </div><div class="line"><a name="l01449"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#af68596240a7b1dded463fd642f9a3362"> 1449</a></span>  <span class="keywordtype">void</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#af68596240a7b1dded463fd642f9a3362">dirtyMatrixTypeCache</a>() {</div><div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>  this->setTypeMask(kUnknown_Mask);</div><div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>  }</div><div class="line"><a name="l01452"></a><span class="lineno"> 1452</span> </div><div class="line"><a name="l01464"></a><span class="lineno"><a class="line" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a9900fc53c7e53893983ae6053ac2d98f"> 1464</a></span>  <span class="keywordtype">void</span> <a class="code" href="class_m_n_n_1_1_c_v_1_1_matrix.html#a9900fc53c7e53893983ae6053ac2d98f">setScaleTranslate</a>(<span class="keywordtype">float</span> sx, <span class="keywordtype">float</span> sy, <span class="keywordtype">float</span> tx, <span class="keywordtype">float</span> ty) {</div><div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>  fMat[kMScaleX] = sx;</div><div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>  fMat[kMSkewX] = 0;</div><div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>  fMat[kMTransX] = tx;</div><div class="line"><a name="l01468"></a><span class="lineno"> 1468</span> </div><div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>  fMat[kMSkewY] = 0;</div><div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>  fMat[kMScaleY] = sy;</div><div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>  fMat[kMTransY] = ty;</div><div class="line"><a name="l01472"></a><span class="lineno"> 1472</span> </div><div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>  fMat[kMPersp0] = 0;</div><div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>  fMat[kMPersp1] = 0;</div><div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>  fMat[kMPersp2] = 1;</div><div class="line"><a name="l01476"></a><span class="lineno"> 1476</span> </div><div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>  <span class="keywordtype">unsigned</span> mask = 0;</div><div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>  <span class="keywordflow">if</span> (sx != 1 || sy != 1) {</div><div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>  mask |= kScale_Mask;</div><div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>  }</div><div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>  <span class="keywordflow">if</span> (tx || ty) {</div><div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>  mask |= kTranslate_Mask;</div><div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>  }</div><div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>  this->setTypeMask(mask | kRectStaysRect_Mask);</div><div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>  }</div><div class="line"><a name="l01486"></a><span class="lineno"> 1486</span> </div><div class="line"><a name="l01493"></a><span class="lineno"> 1493</span> <span class="keyword">private</span>:</div><div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>  <span class="keyword">static</span> constexpr <span class="keywordtype">int</span> kRectStaysRect_Mask = 0x10;</div><div class="line"><a name="l01501"></a><span class="lineno"> 1501</span> </div><div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>  <span class="keyword">static</span> constexpr <span class="keywordtype">int</span> kOnlyPerspectiveValid_Mask = 0x40;</div><div class="line"><a name="l01506"></a><span class="lineno"> 1506</span> </div><div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>  <span class="keyword">static</span> constexpr <span class="keywordtype">int</span> kUnknown_Mask = 0x80;</div><div class="line"><a name="l01508"></a><span class="lineno"> 1508</span> </div><div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>  <span class="keyword">static</span> constexpr <span class="keywordtype">int</span> kORableMasks = kTranslate_Mask | kScale_Mask | kAffine_Mask | kPerspective_Mask;</div><div class="line"><a name="l01510"></a><span class="lineno"> 1510</span> </div><div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>  <span class="keyword">static</span> constexpr <span class="keywordtype">int</span> kAllMasks =</div><div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>  kTranslate_Mask | kScale_Mask | kAffine_Mask | kPerspective_Mask | kRectStaysRect_Mask;</div><div class="line"><a name="l01513"></a><span class="lineno"> 1513</span> </div><div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>  <span class="keywordtype">float</span> fMat[9];</div><div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>  <span class="keyword">mutable</span> uint32_t fTypeMask;</div><div class="line"><a name="l01516"></a><span class="lineno"> 1516</span> </div><div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> ComputeInv(<span class="keywordtype">float</span> dst[9], <span class="keyword">const</span> <span class="keywordtype">float</span> src[9], <span class="keywordtype">double</span> invDet, <span class="keywordtype">bool</span> isPersp);</div><div class="line"><a name="l01518"></a><span class="lineno"> 1518</span> </div><div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>  uint8_t computeTypeMask() <span class="keyword">const</span>;</div><div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>  uint8_t computePerspectiveTypeMask() <span class="keyword">const</span>;</div><div class="line"><a name="l01521"></a><span class="lineno"> 1521</span> </div><div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>  <span class="keywordtype">void</span> setTypeMask(<span class="keywordtype">int</span> mask) {</div><div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>  <span class="comment">// allow kUnknown or a valid mask</span></div><div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>  <a class="code" href="_m_n_n_define_8h.html#ae353a9c1a1afe84eeefafac7d7f5bed1">MNN_ASSERT</a>(kUnknown_Mask == mask || (mask & kAllMasks) == mask ||</div><div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>  ((kUnknown_Mask | kOnlyPerspectiveValid_Mask) & mask) ==</div><div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>  (kUnknown_Mask | kOnlyPerspectiveValid_Mask));</div><div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>  fTypeMask = (uint8_t)(mask);</div><div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>  }</div><div class="line"><a name="l01529"></a><span class="lineno"> 1529</span> </div><div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>  <span class="keywordtype">void</span> orTypeMask(<span class="keywordtype">int</span> mask) {</div><div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>  <a class="code" href="_m_n_n_define_8h.html#ae353a9c1a1afe84eeefafac7d7f5bed1">MNN_ASSERT</a>((mask & kORableMasks) == mask);</div><div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>  fTypeMask = (uint8_t)(fTypeMask | mask);</div><div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>  }</div><div class="line"><a name="l01534"></a><span class="lineno"> 1534</span> </div><div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>  <span class="keywordtype">void</span> clearTypeMask(<span class="keywordtype">int</span> mask) {</div><div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>  <span class="comment">// only allow a valid mask</span></div><div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>  <a class="code" href="_m_n_n_define_8h.html#ae353a9c1a1afe84eeefafac7d7f5bed1">MNN_ASSERT</a>((mask & kAllMasks) == mask);</div><div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>  fTypeMask = fTypeMask & ~mask;</div><div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>  }</div><div class="line"><a name="l01540"></a><span class="lineno"> 1540</span> </div><div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>  TypeMask getPerspectiveTypeMaskOnly()<span class="keyword"> const </span>{</div><div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>  <span class="keywordflow">if</span> ((fTypeMask & kUnknown_Mask) && !(fTypeMask & kOnlyPerspectiveValid_Mask)) {</div><div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>  fTypeMask = this->computePerspectiveTypeMask();</div><div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>  }</div><div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>  <span class="keywordflow">return</span> (TypeMask)(fTypeMask & 0xF);</div><div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>  }</div><div class="line"><a name="l01547"></a><span class="lineno"> 1547</span> </div><div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>  <span class="keywordtype">bool</span> isTriviallyIdentity()<span class="keyword"> const </span>{</div><div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>  <span class="keywordflow">if</span> (fTypeMask & kUnknown_Mask) {</div><div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>  }</div><div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>  <span class="keywordflow">return</span> ((fTypeMask & 0xF) == 0);</div><div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>  }</div><div class="line"><a name="l01557"></a><span class="lineno"> 1557</span> </div><div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> updateTranslateMask() {</div><div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>  <span class="keywordflow">if</span> ((fMat[kMTransX] != 0) | (fMat[kMTransY] != 0)) {</div><div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>  fTypeMask |= kTranslate_Mask;</div><div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>  fTypeMask &= ~kTranslate_Mask;</div><div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>  }</div><div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>  }</div><div class="line"><a name="l01565"></a><span class="lineno"> 1565</span> </div><div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>  <span class="keyword">typedef</span> void (*MapXYProc)(<span class="keyword">const</span> Matrix& mat, <span class="keywordtype">float</span> x, <span class="keywordtype">float</span> y, Point* result);</div><div class="line"><a name="l01567"></a><span class="lineno"> 1567</span> </div><div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>  <span class="keyword">static</span> MapXYProc GetMapXYProc(TypeMask mask) {</div><div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>  <a class="code" href="_m_n_n_define_8h.html#ae353a9c1a1afe84eeefafac7d7f5bed1">MNN_ASSERT</a>((mask & ~kAllMasks) == 0);</div><div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>  <span class="keywordflow">return</span> gMapXYProcs[mask & kAllMasks];</div><div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>  }</div><div class="line"><a name="l01572"></a><span class="lineno"> 1572</span> </div><div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>  MapXYProc getMapXYProc()<span class="keyword"> const </span>{</div><div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>  <span class="keywordflow">return</span> GetMapXYProc(this->getType());</div><div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>  }</div><div class="line"><a name="l01576"></a><span class="lineno"> 1576</span> </div><div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>  <span class="keyword">typedef</span> void (*MapPtsProc)(<span class="keyword">const</span> Matrix& mat, Point dst[], <span class="keyword">const</span> Point src[], <span class="keywordtype">int</span> count);</div><div class="line"><a name="l01578"></a><span class="lineno"> 1578</span> </div><div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>  <span class="keyword">static</span> MapPtsProc GetMapPtsProc(TypeMask mask) {</div><div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>  <a class="code" href="_m_n_n_define_8h.html#ae353a9c1a1afe84eeefafac7d7f5bed1">MNN_ASSERT</a>((mask & ~kAllMasks) == 0);</div><div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>  <span class="keywordflow">return</span> gMapPtsProcs[mask & kAllMasks];</div><div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>  }</div><div class="line"><a name="l01583"></a><span class="lineno"> 1583</span> </div><div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>  MapPtsProc getMapPtsProc()<span class="keyword"> const </span>{</div><div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>  <span class="keywordflow">return</span> GetMapPtsProc(this->getType());</div><div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>  }</div><div class="line"><a name="l01587"></a><span class="lineno"> 1587</span> </div><div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>  <span class="keywordtype">bool</span> invertNonIdentity(Matrix* inverse) <span class="keyword">const</span>;</div><div class="line"><a name="l01589"></a><span class="lineno"> 1589</span> </div><div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> Identity_xy(<span class="keyword">const</span> Matrix&, <span class="keywordtype">float</span>, <span class="keywordtype">float</span>, Point*);</div><div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> Trans_xy(<span class="keyword">const</span> Matrix&, <span class="keywordtype">float</span>, <span class="keywordtype">float</span>, Point*);</div><div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> Scale_xy(<span class="keyword">const</span> Matrix&, <span class="keywordtype">float</span>, <span class="keywordtype">float</span>, Point*);</div><div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> ScaleTrans_xy(<span class="keyword">const</span> Matrix&, <span class="keywordtype">float</span>, <span class="keywordtype">float</span>, Point*);</div><div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> Rot_xy(<span class="keyword">const</span> Matrix&, <span class="keywordtype">float</span>, <span class="keywordtype">float</span>, Point*);</div><div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> RotTrans_xy(<span class="keyword">const</span> Matrix&, <span class="keywordtype">float</span>, <span class="keywordtype">float</span>, Point*);</div><div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> Persp_xy(<span class="keyword">const</span> Matrix&, <span class="keywordtype">float</span>, <span class="keywordtype">float</span>, Point*);</div><div class="line"><a name="l01597"></a><span class="lineno"> 1597</span> </div><div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>  <span class="keyword">static</span> <span class="keyword">const</span> MapXYProc gMapXYProcs[];</div><div class="line"><a name="l01599"></a><span class="lineno"> 1599</span> </div><div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> Identity_pts(<span class="keyword">const</span> Matrix&, Point[], <span class="keyword">const</span> Point[], <span class="keywordtype">int</span>);</div><div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> Trans_pts(<span class="keyword">const</span> Matrix&, Point dst[], <span class="keyword">const</span> Point[], <span class="keywordtype">int</span>);</div><div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> Scale_pts(<span class="keyword">const</span> Matrix&, Point dst[], <span class="keyword">const</span> Point[], <span class="keywordtype">int</span>);</div><div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> ScaleTrans_pts(<span class="keyword">const</span> Matrix&, Point dst[], <span class="keyword">const</span> Point[], <span class="keywordtype">int</span> count);</div><div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> Persp_pts(<span class="keyword">const</span> Matrix&, Point dst[], <span class="keyword">const</span> Point[], <span class="keywordtype">int</span>);</div><div class="line"><a name="l01605"></a><span class="lineno"> 1605</span> </div><div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> Affine_vpts(<span class="keyword">const</span> Matrix&, Point dst[], <span class="keyword">const</span> Point[], <span class="keywordtype">int</span>);</div><div class="line"><a name="l01607"></a><span class="lineno"> 1607</span> </div><div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>  <span class="keyword">static</span> <span class="keyword">const</span> MapPtsProc gMapPtsProcs[];</div><div class="line"><a name="l01609"></a><span class="lineno"> 1609</span> };</div><div class="line"><a name="l01610"></a><span class="lineno"> 1610</span> } <span class="comment">// namespace CV</span></div><div class="line"><a name="l01611"></a><span class="lineno"> 1611</span> } <span class="comment">// namespace MNN</span></div><div class="line"><a name="l01612"></a><span class="lineno"> 1612</span> <span class="preprocessor">#endif</span></div><div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_a8cb83b8451e52f04224a2f10a8d7e977"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#a8cb83b8451e52f04224a2f10a8d7e977">MNN::CV::Matrix::get</a></div><div class="ttdeci">float get(int index) const</div><div class="ttdef"><b>Definition:</b> Matrix.h:285</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_ab70b003dcbc742777bb908511be6fd63"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#ab70b003dcbc742777bb908511be6fd63">MNN::CV::Matrix::operator[]</a></div><div class="ttdeci">float & operator[](int index)</div><div class="ttdef"><b>Definition:</b> Matrix.h:372</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_ad46ca718c770bba11643c0ecc9a402fa"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#ad46ca718c770bba11643c0ecc9a402fa">MNN::CV::Matrix::setIdentity</a></div><div class="ttdeci">void setIdentity()</div><div class="ttdef"><b>Definition:</b> Matrix.h:535</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_afda91b2de2547c56812a990b343adea8"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#afda91b2de2547c56812a990b343adea8">MNN::CV::Matrix::getScaleX</a></div><div class="ttdeci">float getScaleX() const</div><div class="ttdef"><b>Definition:</b> Matrix.h:295</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_ac4c57512b9ff170b8c27141ac9dc2b16"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#ac4c57512b9ff170b8c27141ac9dc2b16">MNN::CV::Matrix::ScaleToFit</a></div><div class="ttdeci">ScaleToFit</div><div class="ttdef"><b>Definition:</b> Matrix.h:1064</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_a0d45157a305e7063765f534030163f21"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#a0d45157a305e7063765f534030163f21">MNN::CV::Matrix::mapXY</a></div><div class="ttdeci">Point mapXY(float x, float y) const</div><div class="ttdef"><b>Definition:</b> Matrix.h:1279</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_ad0a7c082d559ef73f93ec16e9644b590"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#ad0a7c082d559ef73f93ec16e9644b590">MNN::CV::Matrix::MakeTrans</a></div><div class="ttdeci">static Matrix MakeTrans(float dx, float dy)</div><div class="ttdef"><b>Definition:</b> Matrix.h:95</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_af6e21da1f6a1342a1e7c3f060d96af4d"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#af6e21da1f6a1342a1e7c3f060d96af4d">MNN::CV::Matrix::getTranslateX</a></div><div class="ttdeci">float getTranslateX() const</div><div class="ttdef"><b>Definition:</b> Matrix.h:333</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_a80a9efb21f22e19461a7f15f41c7e301"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#a80a9efb21f22e19461a7f15f41c7e301">MNN::CV::Matrix::isIdentity</a></div><div class="ttdeci">bool isIdentity() const</div><div class="ttdef"><b>Definition:</b> Matrix.h:161</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_a9900fc53c7e53893983ae6053ac2d98f"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#a9900fc53c7e53893983ae6053ac2d98f">MNN::CV::Matrix::setScaleTranslate</a></div><div class="ttdeci">void setScaleTranslate(float sx, float sy, float tx, float ty)</div><div class="ttdef"><b>Definition:</b> Matrix.h:1464</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_a1e7d34b3eb6adb9ec940827edf03082b"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#a1e7d34b3eb6adb9ec940827edf03082b">MNN::CV::Matrix::isScaleTranslate</a></div><div class="ttdeci">bool isScaleTranslate() const</div><div class="ttdef"><b>Definition:</b> Matrix.h:174</div></div>
|
|
<div class="ttc" id="_m_n_n_define_8h_html_ae353a9c1a1afe84eeefafac7d7f5bed1"><div class="ttname"><a href="_m_n_n_define_8h.html#ae353a9c1a1afe84eeefafac7d7f5bed1">MNN_ASSERT</a></div><div class="ttdeci">#define MNN_ASSERT(x)</div><div class="ttdef"><b>Definition:</b> MNNDefine.h:41</div></div>
|
|
<div class="ttc" id="struct_m_n_n_1_1_c_v_1_1_rect_html"><div class="ttname"><a href="struct_m_n_n_1_1_c_v_1_1_rect.html">MNN::CV::Rect</a></div><div class="ttdef"><b>Definition:</b> Rect.h:54</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_aafea25177ca15b3e66b796811ff12839"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#aafea25177ca15b3e66b796811ff12839">MNN::CV::Matrix::setTranslateX</a></div><div class="ttdeci">void setTranslateX(float v)</div><div class="ttdef"><b>Definition:</b> Matrix.h:427</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_a7a50cf880189f8828cbe643c20086c36"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#a7a50cf880189f8828cbe643c20086c36">MNN::CV::Matrix::getSkewX</a></div><div class="ttdeci">float getSkewX() const</div><div class="ttdef"><b>Definition:</b> Matrix.h:324</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_a2ef2a1e031dd5de7ff653038c401c1d4"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#a2ef2a1e031dd5de7ff653038c401c1d4">MNN::CV::Matrix::setScaleX</a></div><div class="ttdeci">void setScaleX(float v)</div><div class="ttdef"><b>Definition:</b> Matrix.h:395</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_a0e7c43a69da5564fade1134e245e5e65"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#a0e7c43a69da5564fade1134e245e5e65">MNN::CV::Matrix::setSkewX</a></div><div class="ttdeci">void setSkewX(float v)</div><div class="ttdef"><b>Definition:</b> Matrix.h:419</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_a387100b9690549b671cf69a82cc134d1"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#a387100b9690549b671cf69a82cc134d1">MNN::CV::Matrix::setPerspY</a></div><div class="ttdeci">void setPerspY(float v)</div><div class="ttdef"><b>Definition:</b> Matrix.h:453</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_a4a4b603b48253e55fc27c2677898fe18"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#a4a4b603b48253e55fc27c2677898fe18">MNN::CV::Matrix::getSkewY</a></div><div class="ttdeci">float getSkewY() const</div><div class="ttdef"><b>Definition:</b> Matrix.h:314</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_a920af77c5e089af12f9884583216ee89"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#a920af77c5e089af12f9884583216ee89">MNN::CV::Matrix::getType</a></div><div class="ttdeci">TypeMask getType() const</div><div class="ttdef"><b>Definition:</b> Matrix.h:145</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_ac4c57512b9ff170b8c27141ac9dc2b16a72d6657e24aae9858f946dcc8d638538"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#ac4c57512b9ff170b8c27141ac9dc2b16a72d6657e24aae9858f946dcc8d638538">MNN::CV::Matrix::kFill_ScaleToFit</a></div><div class="ttdoc">scales in x and y to fill destination Rect</div><div class="ttdef"><b>Definition:</b> Matrix.h:1065</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_a012a6fe8b976cae6f08d356855a5fd53"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#a012a6fe8b976cae6f08d356855a5fd53">MNN::CV::Matrix::MakeRectToRect</a></div><div class="ttdeci">static Matrix MakeRectToRect(const Rect &src, const Rect &dst, ScaleToFit stf)</div><div class="ttdef"><b>Definition:</b> Matrix.h:1103</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_af906c3d8207529707974d551d329ce39"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#af906c3d8207529707974d551d329ce39">MNN::CV::Matrix::setTranslateY</a></div><div class="ttdeci">void setTranslateY(float v)</div><div class="ttdef"><b>Definition:</b> Matrix.h:435</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_a3b05fbab55e352623bc6472a3a29b426"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#a3b05fbab55e352623bc6472a3a29b426">MNN::CV::Matrix::MakeScale</a></div><div class="ttdeci">static Matrix MakeScale(float scale)</div><div class="ttdef"><b>Definition:</b> Matrix.h:79</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_a3f97f8217503e8cb7ed70d2d54960a54"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#a3f97f8217503e8cb7ed70d2d54960a54">MNN::CV::Matrix::mapXY</a></div><div class="ttdeci">void mapXY(float x, float y, Point *result) const</div><div class="ttdef"><b>Definition:</b> Matrix.h:1259</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_ac4c57512b9ff170b8c27141ac9dc2b16aae2bd4bf3c03002dc0011669a9125a95"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#ac4c57512b9ff170b8c27141ac9dc2b16aae2bd4bf3c03002dc0011669a9125a95">MNN::CV::Matrix::kCenter_ScaleToFit</a></div><div class="ttdoc">scales and aligns to center</div><div class="ttdef"><b>Definition:</b> Matrix.h:1067</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_a28974d70ccb159f0c79ebc46f73fdfde"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#a28974d70ccb159f0c79ebc46f73fdfde">MNN::CV::Matrix::setSkewY</a></div><div class="ttdeci">void setSkewY(float v)</div><div class="ttdef"><b>Definition:</b> Matrix.h:411</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_af7c20c9a4df9dbe0d602271baa2fae8c"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#af7c20c9a4df9dbe0d602271baa2fae8c">MNN::CV::Matrix::isTranslate</a></div><div class="ttdeci">bool isTranslate() const</div><div class="ttdef"><b>Definition:</b> Matrix.h:186</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_a5f8ffb32f8988f89960254e982d5bc87"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#a5f8ffb32f8988f89960254e982d5bc87">MNN::CV::Matrix::getPerspX</a></div><div class="ttdeci">float getPerspX() const</div><div class="ttdef"><b>Definition:</b> Matrix.h:350</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_af68596240a7b1dded463fd642f9a3362"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#af68596240a7b1dded463fd642f9a3362">MNN::CV::Matrix::dirtyMatrixTypeCache</a></div><div class="ttdeci">void dirtyMatrixTypeCache()</div><div class="ttdef"><b>Definition:</b> Matrix.h:1449</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_a6d75cd8885bc169ebbed0a3842d0a136"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#a6d75cd8885bc169ebbed0a3842d0a136">MNN::CV::Matrix::operator[]</a></div><div class="ttdeci">float operator[](int index) const</div><div class="ttdef"><b>Definition:</b> Matrix.h:273</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_ac4c57512b9ff170b8c27141ac9dc2b16ad8816240d08e10c1dc565d0218a927cd"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#ac4c57512b9ff170b8c27141ac9dc2b16ad8816240d08e10c1dc565d0218a927cd">MNN::CV::Matrix::kEnd_ScaleToFit</a></div><div class="ttdoc">scales and aligns to right and bottom</div><div class="ttdef"><b>Definition:</b> Matrix.h:1068</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_a037d7599f234e75c0869302e10a3dd32"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#a037d7599f234e75c0869302e10a3dd32">MNN::CV::Matrix::invert</a></div><div class="ttdeci">bool invert(Matrix *inverse) const</div><div class="ttdef"><b>Definition:</b> Matrix.h:1132</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_a994a4f0be12f2881186892d123f83026"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#a994a4f0be12f2881186892d123f83026">MNN::CV::Matrix::Matrix</a></div><div class="ttdeci">Matrix()</div><div class="ttdef"><b>Definition:</b> Matrix.h:50</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_a2c1d97cacdb68559670ed7ebd5a02b40"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#a2c1d97cacdb68559670ed7ebd5a02b40">MNN::CV::Matrix::mapRect</a></div><div class="ttdeci">bool mapRect(Rect *rect) const</div><div class="ttdef"><b>Definition:</b> Matrix.h:1304</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_a64ddd5b5f07a3c7671502769cf95ecf8"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#a64ddd5b5f07a3c7671502769cf95ecf8">MNN::CV::Matrix::setTranslate</a></div><div class="ttdeci">void setTranslate(float dx, float dy)</div></div>
|
|
<div class="ttc" id="_m_n_n_define_8h_html_a692428e2a0af8ffb79376d223a0695ab"><div class="ttname"><a href="_m_n_n_define_8h.html#a692428e2a0af8ffb79376d223a0695ab">MNN_PUBLIC</a></div><div class="ttdeci">#define MNN_PUBLIC</div><div class="ttdef"><b>Definition:</b> MNNDefine.h:53</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_ac07d0f297600849a05dc3b175098121e"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#ac07d0f297600849a05dc3b175098121e">MNN::CV::Matrix::setPerspX</a></div><div class="ttdeci">void setPerspX(float v)</div><div class="ttdef"><b>Definition:</b> Matrix.h:444</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_a85cd67b59f24ab307950b437c4669eae"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#a85cd67b59f24ab307950b437c4669eae">MNN::CV::Matrix::MakeScale</a></div><div class="ttdeci">static Matrix MakeScale(float sx, float sy)</div><div class="ttdef"><b>Definition:</b> Matrix.h:64</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_a549c7d38b10404a4b61043b140dfebdc"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#a549c7d38b10404a4b61043b140dfebdc">MNN::CV::Matrix::mapRect</a></div><div class="ttdeci">Rect mapRect(const Rect &src) const</div><div class="ttdef"><b>Definition:</b> Matrix.h:1313</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html">MNN::CV::Matrix</a></div><div class="ttdef"><b>Definition:</b> Matrix.h:48</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_a95657f702e16d797477c9aa24ac4a0fd"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#a95657f702e16d797477c9aa24ac4a0fd">MNN::CV::Matrix::set</a></div><div class="ttdeci">void set(int index, float value)</div><div class="ttdef"><b>Definition:</b> Matrix.h:385</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_afd03e03f146c891e3a7dd64cea4d09cc"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#afd03e03f146c891e3a7dd64cea4d09cc">MNN::CV::Matrix::MakeAll</a></div><div class="ttdeci">static Matrix MakeAll(float scaleX, float skewX, float transX, float skewY, float scaleY, float transY, float pers0, float pers1, float pers2)</div><div class="ttdef"><b>Definition:</b> Matrix.h:118</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_a8312ffc5455b9217d8a3f3975237c026"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#a8312ffc5455b9217d8a3f3975237c026">MNN::CV::Matrix::getTranslateY</a></div><div class="ttdeci">float getTranslateY() const</div><div class="ttdef"><b>Definition:</b> Matrix.h:342</div></div>
|
|
<div class="ttc" id="namespace_m_n_n_html"><div class="ttname"><a href="namespace_m_n_n.html">MNN</a></div><div class="ttdef"><b>Definition:</b> AutoTime.hpp:16</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_afe9ff946b4145e71f40205c9c23d63c7"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#afe9ff946b4145e71f40205c9c23d63c7">MNN::CV::Matrix::setRectToRect</a></div><div class="ttdeci">bool setRectToRect(const Rect &src, const Rect &dst, ScaleToFit stf)</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_a2e76afc5160219aa3c331cd2263d622c"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#a2e76afc5160219aa3c331cd2263d622c">MNN::CV::Matrix::setConcat</a></div><div class="ttdeci">void setConcat(const Matrix &a, const Matrix &b)</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_aebb3f83534c38eec1c605c143db5e440"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#aebb3f83534c38eec1c605c143db5e440">MNN::CV::Matrix::getScaleY</a></div><div class="ttdeci">float getScaleY() const</div><div class="ttdef"><b>Definition:</b> Matrix.h:304</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_a93dbff13c64c0ed0e9005b2609c550a1"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#a93dbff13c64c0ed0e9005b2609c550a1">MNN::CV::Matrix::mapPoints</a></div><div class="ttdeci">void mapPoints(Point dst[], const Point src[], int count) const</div><div class="ttdef"><b>Definition:</b> Matrix.h:1209</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_ab7c756e36573cc6ef1c4f77c3088eaee"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#ab7c756e36573cc6ef1c4f77c3088eaee">MNN::CV::Matrix::mapPoints</a></div><div class="ttdeci">void mapPoints(Point pts[], int count) const</div><div class="ttdef"><b>Definition:</b> Matrix.h:1239</div></div>
|
|
<div class="ttc" id="struct_m_n_n_1_1_c_v_1_1_point_html"><div class="ttname"><a href="struct_m_n_n_1_1_c_v_1_1_point.html">MNN::CV::Point</a></div><div class="ttdef"><b>Definition:</b> Rect.h:37</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_a41c5adfb5b4236e756b95884de47c985"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#a41c5adfb5b4236e756b95884de47c985">MNN::CV::Matrix::setAll</a></div><div class="ttdeci">void setAll(float scaleX, float skewX, float transX, float skewY, float scaleY, float transY, float persp0, float persp1, float persp2)</div><div class="ttdef"><b>Definition:</b> Matrix.h:473</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_a361d0f247ef268c716f3575c2c46c640"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#a361d0f247ef268c716f3575c2c46c640">MNN::CV::Matrix::reset</a></div><div class="ttdeci">void reset()</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_aae4f4671dcd3eb69251b6b69b756c8eb"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#aae4f4671dcd3eb69251b6b69b756c8eb">MNN::CV::Matrix::rectStaysRect</a></div><div class="ttdeci">bool rectStaysRect() const</div><div class="ttdef"><b>Definition:</b> Matrix.h:211</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_a32c757775b188138cf0b89f2cfd7f2fd"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#a32c757775b188138cf0b89f2cfd7f2fd">MNN::CV::Matrix::setScale</a></div><div class="ttdeci">void setScale(float sx, float sy, float px, float py)</div></div>
|
|
<div class="ttc" id="_rect_8h_html"><div class="ttname"><a href="_rect_8h.html">Rect.h</a></div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_a0fe9863cb0f149e97c57e0bd310a8091"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#a0fe9863cb0f149e97c57e0bd310a8091">MNN::CV::Matrix::preservesAxisAlignment</a></div><div class="ttdeci">bool preservesAxisAlignment() const</div><div class="ttdef"><b>Definition:</b> Matrix.h:239</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_ac4c57512b9ff170b8c27141ac9dc2b16a7ecd2ad82e428b97949ce05fb72d2bb7"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#ac4c57512b9ff170b8c27141ac9dc2b16a7ecd2ad82e428b97949ce05fb72d2bb7">MNN::CV::Matrix::kStart_ScaleToFit</a></div><div class="ttdoc">scales and aligns to left and top</div><div class="ttdef"><b>Definition:</b> Matrix.h:1066</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_a7161b6a80fa3424019b029d29d084fc4"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#a7161b6a80fa3424019b029d29d084fc4">MNN::CV::Matrix::Concat</a></div><div class="ttdeci">static Matrix Concat(const Matrix &a, const Matrix &b)</div><div class="ttdef"><b>Definition:</b> Matrix.h:1440</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_a536b3ee8befe547496e47bef9422ca22"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#a536b3ee8befe547496e47bef9422ca22">MNN::CV::Matrix::setScaleY</a></div><div class="ttdeci">void setScaleY(float v)</div><div class="ttdef"><b>Definition:</b> Matrix.h:403</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_a67caa4d57647261577f3462efa1d27d1"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#a67caa4d57647261577f3462efa1d27d1">MNN::CV::Matrix::cheapEqualTo</a></div><div class="ttdeci">bool cheapEqualTo(const Matrix &m) const</div><div class="ttdef"><b>Definition:</b> Matrix.h:1341</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_a2e02d4d6e16ccdb49029aa44bab08330"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#a2e02d4d6e16ccdb49029aa44bab08330">MNN::CV::Matrix::get9</a></div><div class="ttdeci">void get9(float buffer[9]) const</div><div class="ttdef"><b>Definition:</b> Matrix.h:493</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_a4d66f9e294a7bf8fcd111568f7f096c3"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#a4d66f9e294a7bf8fcd111568f7f096c3">MNN::CV::Matrix::TypeMask</a></div><div class="ttdeci">TypeMask</div><div class="ttdef"><b>Definition:</b> Matrix.h:129</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_a9a2ab581fd780faf0c80cd3765fd3121"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#a9a2ab581fd780faf0c80cd3765fd3121">MNN::CV::Matrix::operator!=</a></div><div class="ttdeci">friend MNN_PUBLIC bool operator!=(const Matrix &a, const Matrix &b)</div><div class="ttdef"><b>Definition:</b> Matrix.h:1363</div></div>
|
|
<div class="ttc" id="class_m_n_n_1_1_c_v_1_1_matrix_html_a63dce01735b6ee0eddf90ee71d7eadf2"><div class="ttname"><a href="class_m_n_n_1_1_c_v_1_1_matrix.html#a63dce01735b6ee0eddf90ee71d7eadf2">MNN::CV::Matrix::getPerspY</a></div><div class="ttdeci">float getPerspY() const</div><div class="ttdef"><b>Definition:</b> Matrix.h:358</div></div>
|
|
</div><!-- fragment --></div><!-- contents -->
|
|
<!-- start footer part -->
|
|
<hr class="footer"/><address class="footer"><small>
|
|
制作者  <a href="http://www.doxygen.org/index.html">
|
|
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
|
</a> 1.8.15
|
|
</small></address>
|
|
</body>
|
|
</html>
|