blob: bd2a8989f95b8b4fc2698fef95c6e5c636ffddc3 [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Skia: include/core/SkBitmap.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.1 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File&nbsp;List</span></a></li>
<li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
</ul>
</div>
<h1>include/core/SkBitmap.h</h1><a href="_sk_bitmap_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2006 The Android Open Source Project</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
<a name="l00005"></a>00005 <span class="comment"> * you may not use this file except in compliance with the License.</span>
<a name="l00006"></a>00006 <span class="comment"> * You may obtain a copy of the License at</span>
<a name="l00007"></a>00007 <span class="comment"> *</span>
<a name="l00008"></a>00008 <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span>
<a name="l00009"></a>00009 <span class="comment"> *</span>
<a name="l00010"></a>00010 <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span>
<a name="l00011"></a>00011 <span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
<a name="l00012"></a>00012 <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
<a name="l00013"></a>00013 <span class="comment"> * See the License for the specific language governing permissions and</span>
<a name="l00014"></a>00014 <span class="comment"> * limitations under the License.</span>
<a name="l00015"></a>00015 <span class="comment"> */</span>
<a name="l00016"></a>00016
<a name="l00017"></a>00017 <span class="preprocessor">#ifndef SkBitmap_DEFINED</span>
<a name="l00018"></a>00018 <span class="preprocessor"></span><span class="preprocessor">#define SkBitmap_DEFINED</span>
<a name="l00019"></a>00019 <span class="preprocessor"></span>
<a name="l00020"></a>00020 <span class="preprocessor">#include &quot;<a class="code" href="_sk64_8h.html">Sk64.h</a>&quot;</span>
<a name="l00021"></a>00021 <span class="preprocessor">#include &quot;<a class="code" href="_sk_color_8h.html">SkColor.h</a>&quot;</span>
<a name="l00022"></a>00022 <span class="preprocessor">#include &quot;<a class="code" href="_sk_point_8h.html">SkPoint.h</a>&quot;</span>
<a name="l00023"></a>00023 <span class="preprocessor">#include &quot;<a class="code" href="_sk_ref_cnt_8h.html">SkRefCnt.h</a>&quot;</span>
<a name="l00024"></a>00024
<a name="l00025"></a>00025 <span class="keyword">struct </span><a class="code" href="struct_sk_i_rect.html">SkIRect</a>;
<a name="l00026"></a>00026 <span class="keyword">class </span><a class="code" href="class_sk_color_table.html">SkColorTable</a>;
<a name="l00027"></a>00027 <span class="keyword">class </span><a class="code" href="class_sk_paint.html">SkPaint</a>;
<a name="l00028"></a>00028 <span class="keyword">class </span><a class="code" href="class_sk_pixel_ref.html">SkPixelRef</a>;
<a name="l00029"></a>00029 <span class="keyword">class </span><a class="code" href="class_sk_region.html">SkRegion</a>;
<a name="l00030"></a>00030 <span class="keyword">class </span><a class="code" href="class_sk_flattenable_read_buffer.html">SkFlattenableReadBuffer</a>;
<a name="l00031"></a>00031 <span class="keyword">class </span><a class="code" href="class_sk_flattenable_write_buffer.html">SkFlattenableWriteBuffer</a>;
<a name="l00032"></a>00032
<a name="l00040"></a><a class="code" href="class_sk_bitmap.html">00040</a> <span class="keyword">class </span><a class="code" href="class_sk_bitmap.html">SkBitmap</a> {
<a name="l00041"></a>00041 <span class="keyword">public</span>:
<a name="l00042"></a>00042 <span class="keyword">class </span>Allocator;
<a name="l00043"></a>00043
<a name="l00044"></a><a class="code" href="class_sk_bitmap.html#a62602e28fc755def34d7e261bfd0b74a">00044</a> <span class="keyword">enum</span> <a class="code" href="class_sk_bitmap.html#a62602e28fc755def34d7e261bfd0b74a">Config</a> {
<a name="l00045"></a><a class="code" href="class_sk_bitmap.html#a62602e28fc755def34d7e261bfd0b74aa14e7f816be308af0f5b949b81722eeb8">00045</a> <a class="code" href="class_sk_bitmap.html#a62602e28fc755def34d7e261bfd0b74aa14e7f816be308af0f5b949b81722eeb8" title="bitmap has not been configured">kNo_Config</a>,
<a name="l00046"></a><a class="code" href="class_sk_bitmap.html#a62602e28fc755def34d7e261bfd0b74aa7024f2de781fea6248620aa14d79ce75">00046</a> <a class="code" href="class_sk_bitmap.html#a62602e28fc755def34d7e261bfd0b74aa7024f2de781fea6248620aa14d79ce75" title="1-bit per pixel, (0 is transparent, 1 is opaque)">kA1_Config</a>,
<a name="l00047"></a><a class="code" href="class_sk_bitmap.html#a62602e28fc755def34d7e261bfd0b74aa4135562fb9aa82dbeed796867d38c8c1">00047</a> <a class="code" href="class_sk_bitmap.html#a62602e28fc755def34d7e261bfd0b74aa4135562fb9aa82dbeed796867d38c8c1" title="8-bits per pixel, with only alpha specified (0 is transparent, 0xFF is opaque)">kA8_Config</a>,
<a name="l00048"></a><a class="code" href="class_sk_bitmap.html#a62602e28fc755def34d7e261bfd0b74aa3a24db43cf983e57d083e7fbec2d3502">00048</a> <a class="code" href="class_sk_bitmap.html#a62602e28fc755def34d7e261bfd0b74aa3a24db43cf983e57d083e7fbec2d3502" title="8-bits per pixel, using SkColorTable to specify the colors">kIndex8_Config</a>,
<a name="l00049"></a><a class="code" href="class_sk_bitmap.html#a62602e28fc755def34d7e261bfd0b74aad6507349d4332b1a8f9e7830d52f11a3">00049</a> <a class="code" href="class_sk_bitmap.html#a62602e28fc755def34d7e261bfd0b74aad6507349d4332b1a8f9e7830d52f11a3" title="16-bits per pixel, (see SkColorPriv.h for packing)">kRGB_565_Config</a>,
<a name="l00050"></a><a class="code" href="class_sk_bitmap.html#a62602e28fc755def34d7e261bfd0b74aa4e75dc2391a4ed0e32a90e03cb3e07cb">00050</a> <a class="code" href="class_sk_bitmap.html#a62602e28fc755def34d7e261bfd0b74aa4e75dc2391a4ed0e32a90e03cb3e07cb" title="16-bits per pixel, (see SkColorPriv.h for packing)">kARGB_4444_Config</a>,
<a name="l00051"></a><a class="code" href="class_sk_bitmap.html#a62602e28fc755def34d7e261bfd0b74aab61714b71c59899924650e207280ce67">00051</a> <a class="code" href="class_sk_bitmap.html#a62602e28fc755def34d7e261bfd0b74aab61714b71c59899924650e207280ce67" title="32-bits per pixel, (see SkColorPriv.h for packing)">kARGB_8888_Config</a>,
<a name="l00052"></a><a class="code" href="class_sk_bitmap.html#a62602e28fc755def34d7e261bfd0b74aa2c36ea9b160250416ac6e4c46ba3e588">00052</a> <a class="code" href="class_sk_bitmap.html#a62602e28fc755def34d7e261bfd0b74aa2c36ea9b160250416ac6e4c46ba3e588">kRLE_Index8_Config</a>,
<a name="l00053"></a>00053
<a name="l00054"></a><a class="code" href="class_sk_bitmap.html#a62602e28fc755def34d7e261bfd0b74aa0d2bd055e731f183ec0497bc5e253c0c">00054</a> <a class="code" href="class_sk_bitmap.html#a62602e28fc755def34d7e261bfd0b74aa0d2bd055e731f183ec0497bc5e253c0c">kConfigCount</a>
<a name="l00055"></a>00055 };
<a name="l00056"></a>00056
<a name="l00060"></a>00060 <a class="code" href="class_sk_bitmap.html#ab578d11c44291378c41cf33d78f49b3a">SkBitmap</a>();
<a name="l00064"></a>00064 <a class="code" href="class_sk_bitmap.html#ab578d11c44291378c41cf33d78f49b3a">SkBitmap</a>(<span class="keyword">const</span> <a class="code" href="class_sk_bitmap.html">SkBitmap</a>&amp; src);
<a name="l00067"></a>00067 <a class="code" href="class_sk_bitmap.html#a7d26b1db0838981021287b53a96e20e1">~SkBitmap</a>();
<a name="l00068"></a>00068
<a name="l00072"></a>00072 <a class="code" href="class_sk_bitmap.html">SkBitmap</a>&amp; <a class="code" href="class_sk_bitmap.html#ac6d424490d4ac0b0369245db8317af2c">operator=</a>(<span class="keyword">const</span> <a class="code" href="class_sk_bitmap.html">SkBitmap</a>&amp; src);
<a name="l00075"></a>00075 <span class="comment">// This method is not exported to java.</span>
<a name="l00076"></a>00076 <span class="keywordtype">void</span> <a class="code" href="class_sk_bitmap.html#aea42480b7e9f79d4139199de9c5d4219">swap</a>(<a class="code" href="class_sk_bitmap.html">SkBitmap</a>&amp; other);
<a name="l00077"></a>00077
<a name="l00080"></a><a class="code" href="class_sk_bitmap.html#a962916e9995a3b0ee88faa7283c681e6">00080</a> <span class="keywordtype">bool</span> <a class="code" href="class_sk_bitmap.html#a962916e9995a3b0ee88faa7283c681e6">empty</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> 0 == fWidth || 0 == fHeight; }
<a name="l00081"></a>00081
<a name="l00085"></a><a class="code" href="class_sk_bitmap.html#a2159cf066074e59f66619b2724c633bc">00085</a> <span class="keywordtype">bool</span> <a class="code" href="class_sk_bitmap.html#a2159cf066074e59f66619b2724c633bc">isNull</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> NULL == fPixels &amp;&amp; NULL == fPixelRef; }
<a name="l00086"></a>00086
<a name="l00089"></a><a class="code" href="class_sk_bitmap.html#ab6476d8027536011e91dabbe8659f391">00089</a> <a class="code" href="class_sk_bitmap.html#a62602e28fc755def34d7e261bfd0b74a">Config</a> <a class="code" href="class_sk_bitmap.html#ab6476d8027536011e91dabbe8659f391">config</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (<a class="code" href="class_sk_bitmap.html#a62602e28fc755def34d7e261bfd0b74a">Config</a>)fConfig; }
<a name="l00092"></a><a class="code" href="class_sk_bitmap.html#ac1d297ebf750b4d09158ada7eec454fe">00092</a> <a class="code" href="class_sk_bitmap.html#a62602e28fc755def34d7e261bfd0b74a">Config</a> <a class="code" href="class_sk_bitmap.html#ac1d297ebf750b4d09158ada7eec454fe">getConfig</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;<a class="code" href="class_sk_bitmap.html#ab6476d8027536011e91dabbe8659f391">config</a>(); }
<a name="l00095"></a><a class="code" href="class_sk_bitmap.html#af2894e784145cfe31c940f963a12b1e0">00095</a> <span class="keywordtype">int</span> <a class="code" href="class_sk_bitmap.html#af2894e784145cfe31c940f963a12b1e0">width</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> fWidth; }
<a name="l00098"></a><a class="code" href="class_sk_bitmap.html#aafe3dc4c4b270434616daa52936438eb">00098</a> <span class="keywordtype">int</span> <a class="code" href="class_sk_bitmap.html#aafe3dc4c4b270434616daa52936438eb">height</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> fHeight; }
<a name="l00101"></a><a class="code" href="class_sk_bitmap.html#a76606bafefab4a556ed3ea67513163f8">00101</a> <span class="keywordtype">int</span> <a class="code" href="class_sk_bitmap.html#a76606bafefab4a556ed3ea67513163f8">rowBytes</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> fRowBytes; }
<a name="l00102"></a>00102
<a name="l00108"></a><a class="code" href="class_sk_bitmap.html#a85fb91b69496f8dea3f37bc16aa181a3">00108</a> <span class="keywordtype">int</span> <a class="code" href="class_sk_bitmap.html#a85fb91b69496f8dea3f37bc16aa181a3">shiftPerPixel</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> fBytesPerPixel &gt;&gt; 1; }
<a name="l00109"></a>00109
<a name="l00113"></a><a class="code" href="class_sk_bitmap.html#a54c7231c0bd588203c3a55d7cb1960bf">00113</a> <span class="keywordtype">int</span> <a class="code" href="class_sk_bitmap.html#a54c7231c0bd588203c3a55d7cb1960bf">bytesPerPixel</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> fBytesPerPixel; }
<a name="l00114"></a>00114
<a name="l00120"></a><a class="code" href="class_sk_bitmap.html#a1e3a4d9ad1d1b302efdd2ea219aeac8d">00120</a> <span class="keywordtype">int</span> <a class="code" href="class_sk_bitmap.html#a1e3a4d9ad1d1b302efdd2ea219aeac8d">rowBytesAsPixels</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> fRowBytes &gt;&gt; (fBytesPerPixel &gt;&gt; 1); }
<a name="l00121"></a>00121
<a name="l00124"></a><a class="code" href="class_sk_bitmap.html#ab69a2168d6f97a858bb90df22abb8da3">00124</a> <span class="keywordtype">void</span>* <a class="code" href="class_sk_bitmap.html#ab69a2168d6f97a858bb90df22abb8da3">getPixels</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> fPixels; }
<a name="l00125"></a>00125
<a name="l00130"></a><a class="code" href="class_sk_bitmap.html#aa8e66f81d566b98cc59bd97c31faabe6">00130</a> <span class="keywordtype">size_t</span> <a class="code" href="class_sk_bitmap.html#aa8e66f81d566b98cc59bd97c31faabe6">getSize</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> fHeight * fRowBytes; }
<a name="l00131"></a>00131
<a name="l00136"></a><a class="code" href="class_sk_bitmap.html#a3365ed8bfa0bfe8b9720f91b9dbd7c27">00136</a> <a class="code" href="struct_sk64.html">Sk64</a> <a class="code" href="class_sk_bitmap.html#a3365ed8bfa0bfe8b9720f91b9dbd7c27">getSize64</a>()<span class="keyword"> const </span>{
<a name="l00137"></a>00137 <a class="code" href="struct_sk64.html">Sk64</a> size;
<a name="l00138"></a>00138 size.<a class="code" href="struct_sk64.html#a8f58e62643bf385d4948c2ffd1bcbadd">setMul</a>(fHeight, fRowBytes);
<a name="l00139"></a>00139 <span class="keywordflow">return</span> size;
<a name="l00140"></a>00140 }
<a name="l00141"></a>00141
<a name="l00144"></a>00144 <span class="keywordtype">bool</span> <a class="code" href="class_sk_bitmap.html#a903fd9c9cdf191826dfb51fb26306cb1">isOpaque</a>() <span class="keyword">const</span>;
<a name="l00148"></a>00148 <span class="keywordtype">void</span> <a class="code" href="class_sk_bitmap.html#a46cf780c0dc70b8519654fd99515040b">setIsOpaque</a>(<span class="keywordtype">bool</span>);
<a name="l00149"></a>00149
<a name="l00153"></a>00153 <span class="keywordtype">void</span> <a class="code" href="class_sk_bitmap.html#a76025c6d35d97fd33683bd104d621a0b">reset</a>();
<a name="l00154"></a>00154
<a name="l00158"></a>00158 <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="class_sk_bitmap.html#ab0848dc015f1dd6f1b9b19cb911e0de6">ComputeRowBytes</a>(<a class="code" href="class_sk_bitmap.html#a62602e28fc755def34d7e261bfd0b74a">Config</a> c, <span class="keywordtype">int</span> <a class="code" href="class_sk_bitmap.html#af2894e784145cfe31c940f963a12b1e0">width</a>);
<a name="l00159"></a>00159
<a name="l00163"></a>00163 <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="class_sk_bitmap.html#ac492eb55856fb50352fde524dc4a6f1d">ComputeBytesPerPixel</a>(<a class="code" href="class_sk_bitmap.html#a62602e28fc755def34d7e261bfd0b74a">Config</a> c);
<a name="l00164"></a>00164
<a name="l00168"></a><a class="code" href="class_sk_bitmap.html#a37bdd22966a35f7bca4dd9d72b9a41cc">00168</a> <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="class_sk_bitmap.html#a37bdd22966a35f7bca4dd9d72b9a41cc">ComputeShiftPerPixel</a>(<a class="code" href="class_sk_bitmap.html#a62602e28fc755def34d7e261bfd0b74a">Config</a> c) {
<a name="l00169"></a>00169 <span class="keywordflow">return</span> <a class="code" href="class_sk_bitmap.html#ac492eb55856fb50352fde524dc4a6f1d">ComputeBytesPerPixel</a>(c) &gt;&gt; 1;
<a name="l00170"></a>00170 }
<a name="l00171"></a>00171
<a name="l00172"></a>00172 <span class="keyword">static</span> <a class="code" href="struct_sk64.html">Sk64</a> <a class="code" href="class_sk_bitmap.html#a978424cc18e234fdafde3c361afa563d">ComputeSize64</a>(<a class="code" href="class_sk_bitmap.html#a62602e28fc755def34d7e261bfd0b74a">Config</a>, <span class="keywordtype">int</span> <a class="code" href="class_sk_bitmap.html#af2894e784145cfe31c940f963a12b1e0">width</a>, <span class="keywordtype">int</span> <a class="code" href="class_sk_bitmap.html#aafe3dc4c4b270434616daa52936438eb">height</a>);
<a name="l00173"></a>00173 <span class="keyword">static</span> <span class="keywordtype">size_t</span> <a class="code" href="class_sk_bitmap.html#afc37dc4ea45a7c3df8707aac8d260083">ComputeSize</a>(<a class="code" href="class_sk_bitmap.html#a62602e28fc755def34d7e261bfd0b74a">Config</a>, <span class="keywordtype">int</span> <a class="code" href="class_sk_bitmap.html#af2894e784145cfe31c940f963a12b1e0">width</a>, <span class="keywordtype">int</span> <a class="code" href="class_sk_bitmap.html#aafe3dc4c4b270434616daa52936438eb">height</a>);
<a name="l00174"></a>00174
<a name="l00179"></a>00179 <span class="keywordtype">void</span> <a class="code" href="class_sk_bitmap.html#a8975872be23b643e8f32a52e463b2256">setConfig</a>(<a class="code" href="class_sk_bitmap.html#a62602e28fc755def34d7e261bfd0b74a">Config</a>, <span class="keywordtype">int</span> <a class="code" href="class_sk_bitmap.html#af2894e784145cfe31c940f963a12b1e0">width</a>, <span class="keywordtype">int</span> <a class="code" href="class_sk_bitmap.html#aafe3dc4c4b270434616daa52936438eb">height</a>, <span class="keywordtype">int</span> <a class="code" href="class_sk_bitmap.html#a76606bafefab4a556ed3ea67513163f8">rowBytes</a> = 0);
<a name="l00190"></a>00190 <span class="keywordtype">void</span> <a class="code" href="class_sk_bitmap.html#a8486408a629c627d461d260bbe3fec79">setPixels</a>(<span class="keywordtype">void</span>* p, <a class="code" href="class_sk_color_table.html">SkColorTable</a>* ctable = NULL);
<a name="l00191"></a>00191
<a name="l00205"></a><a class="code" href="class_sk_bitmap.html#a56c48205c0bbe2007ccfc51710533434">00205</a> <span class="keywordtype">bool</span> <a class="code" href="class_sk_bitmap.html#a56c48205c0bbe2007ccfc51710533434">allocPixels</a>(<a class="code" href="class_sk_color_table.html">SkColorTable</a>* ctable = NULL) {
<a name="l00206"></a>00206 <span class="keywordflow">return</span> this-&gt;<a class="code" href="class_sk_bitmap.html#a56c48205c0bbe2007ccfc51710533434">allocPixels</a>(NULL, ctable);
<a name="l00207"></a>00207 }
<a name="l00208"></a>00208
<a name="l00228"></a>00228 <span class="keywordtype">bool</span> <a class="code" href="class_sk_bitmap.html#a56c48205c0bbe2007ccfc51710533434">allocPixels</a>(Allocator* allocator, <a class="code" href="class_sk_color_table.html">SkColorTable</a>* ctable);
<a name="l00229"></a>00229
<a name="l00232"></a><a class="code" href="class_sk_bitmap.html#a8e7e71bd61ef06df29bac04cb7884eaf">00232</a> <a class="code" href="class_sk_pixel_ref.html">SkPixelRef</a>* <a class="code" href="class_sk_bitmap.html#a8e7e71bd61ef06df29bac04cb7884eaf">pixelRef</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> fPixelRef; }
<a name="l00236"></a><a class="code" href="class_sk_bitmap.html#a1594f14cd67444aea13b5c5c61abc854">00236</a> <span class="keywordtype">size_t</span> <a class="code" href="class_sk_bitmap.html#a1594f14cd67444aea13b5c5c61abc854">pixelRefOffset</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> fPixelRefOffset; }
<a name="l00241"></a>00241 <a class="code" href="class_sk_pixel_ref.html">SkPixelRef</a>* <a class="code" href="class_sk_bitmap.html#aabfac2e3e3cbc27c1f6600adeec804df">setPixelRef</a>(<a class="code" href="class_sk_pixel_ref.html">SkPixelRef</a>* pr, <span class="keywordtype">size_t</span> offset = 0);
<a name="l00242"></a>00242
<a name="l00247"></a>00247 <span class="keywordtype">void</span> <a class="code" href="class_sk_bitmap.html#af5df9be961b3202705fedcd57a082b81">lockPixels</a>() <span class="keyword">const</span>;
<a name="l00253"></a>00253 <span class="keywordtype">void</span> <a class="code" href="class_sk_bitmap.html#a1a84a138655973d5b071d2c9a0741cec">unlockPixels</a>() <span class="keyword">const</span>;
<a name="l00254"></a>00254
<a name="l00259"></a><a class="code" href="class_sk_bitmap.html#a6e135c44d790bab8db78dab3d56baf6f">00259</a> <span class="keywordtype">bool</span> <a class="code" href="class_sk_bitmap.html#a6e135c44d790bab8db78dab3d56baf6f">readyToDraw</a>()<span class="keyword"> const </span>{
<a name="l00260"></a>00260 <span class="keywordflow">return</span> this-&gt;<a class="code" href="class_sk_bitmap.html#ab69a2168d6f97a858bb90df22abb8da3">getPixels</a>() != NULL &amp;&amp;
<a name="l00261"></a>00261 ((this-&gt;<a class="code" href="class_sk_bitmap.html#ab6476d8027536011e91dabbe8659f391">config</a>() != <a class="code" href="class_sk_bitmap.html#a62602e28fc755def34d7e261bfd0b74aa3a24db43cf983e57d083e7fbec2d3502" title="8-bits per pixel, using SkColorTable to specify the colors">kIndex8_Config</a> &amp;&amp; this-&gt;<a class="code" href="class_sk_bitmap.html#ab6476d8027536011e91dabbe8659f391">config</a>() != <a class="code" href="class_sk_bitmap.html#a62602e28fc755def34d7e261bfd0b74aa2c36ea9b160250416ac6e4c46ba3e588">kRLE_Index8_Config</a>) ||
<a name="l00262"></a>00262 fColorTable != NULL);
<a name="l00263"></a>00263 }
<a name="l00264"></a>00264
<a name="l00268"></a><a class="code" href="class_sk_bitmap.html#a2f65539244022f14c2cba453a19fa241">00268</a> <a class="code" href="class_sk_color_table.html">SkColorTable</a>* <a class="code" href="class_sk_bitmap.html#a2f65539244022f14c2cba453a19fa241">getColorTable</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> fColorTable; }
<a name="l00269"></a>00269
<a name="l00275"></a>00275 uint32_t <a class="code" href="class_sk_bitmap.html#aa0000c6daffd3113f5c01a8a751d2d40">getGenerationID</a>() <span class="keyword">const</span>;
<a name="l00276"></a>00276
<a name="l00281"></a>00281 <span class="keywordtype">void</span> <a class="code" href="class_sk_bitmap.html#a8b2ac8569d8b0c44eaf5374387485140">notifyPixelsChanged</a>() <span class="keyword">const</span>;
<a name="l00282"></a>00282
<a name="l00287"></a>00287 <span class="keywordtype">void</span> <a class="code" href="class_sk_bitmap.html#a7ec326e7cf6331497f73163ab3311893">eraseARGB</a>(<a class="code" href="_sk_types_8h.html#a6882636f582abdb2a130b7e5ff38aa83">U8CPU</a> a, <a class="code" href="_sk_types_8h.html#a6882636f582abdb2a130b7e5ff38aa83">U8CPU</a> r, <a class="code" href="_sk_types_8h.html#a6882636f582abdb2a130b7e5ff38aa83">U8CPU</a> g, <a class="code" href="_sk_types_8h.html#a6882636f582abdb2a130b7e5ff38aa83">U8CPU</a> b) <span class="keyword">const</span>;
<a name="l00293"></a><a class="code" href="class_sk_bitmap.html#ac6b99ba8b77e42780ff1c780f4792659">00293</a> <span class="keywordtype">void</span> <a class="code" href="class_sk_bitmap.html#ac6b99ba8b77e42780ff1c780f4792659">eraseRGB</a>(<a class="code" href="_sk_types_8h.html#a6882636f582abdb2a130b7e5ff38aa83">U8CPU</a> r, <a class="code" href="_sk_types_8h.html#a6882636f582abdb2a130b7e5ff38aa83">U8CPU</a> g, <a class="code" href="_sk_types_8h.html#a6882636f582abdb2a130b7e5ff38aa83">U8CPU</a> b)<span class="keyword"> const </span>{
<a name="l00294"></a>00294 this-&gt;<a class="code" href="class_sk_bitmap.html#a7ec326e7cf6331497f73163ab3311893">eraseARGB</a>(0xFF, r, g, b);
<a name="l00295"></a>00295 }
<a name="l00300"></a><a class="code" href="class_sk_bitmap.html#a35f53aa9e91280892da7e38b101f4f31">00300</a> <span class="keywordtype">void</span> <a class="code" href="class_sk_bitmap.html#a35f53aa9e91280892da7e38b101f4f31">eraseColor</a>(<a class="code" href="_sk_color_8h.html#a84c81e6a24ff07a55333acf5603046a8">SkColor</a> c)<span class="keyword"> const </span>{
<a name="l00301"></a>00301 this-&gt;<a class="code" href="class_sk_bitmap.html#a7ec326e7cf6331497f73163ab3311893">eraseARGB</a>(<a class="code" href="_sk_color_8h.html#ae05860d342c5073e890caa4cd366e947">SkColorGetA</a>(c), <a class="code" href="_sk_color_8h.html#a2ea563278aea3bc61174f337304c57a9">SkColorGetR</a>(c), <a class="code" href="_sk_color_8h.html#a3b387fe3e5a4f9ebe0c445d55dc443ee">SkColorGetG</a>(c),
<a name="l00302"></a>00302 <a class="code" href="_sk_color_8h.html#af92bdc477c651777e7ae313e3f83f326">SkColorGetB</a>(c));
<a name="l00303"></a>00303 }
<a name="l00304"></a>00304
<a name="l00324"></a>00324 <span class="keywordtype">bool</span> <a class="code" href="class_sk_bitmap.html#a44ebb9388a196be5912274d450a27fc7">scrollRect</a>(<span class="keyword">const</span> <a class="code" href="struct_sk_i_rect.html">SkIRect</a>* subset, <span class="keywordtype">int</span> dx, <span class="keywordtype">int</span> dy,
<a name="l00325"></a>00325 <a class="code" href="class_sk_region.html">SkRegion</a>* inval = NULL) <span class="keyword">const</span>;
<a name="l00326"></a>00326
<a name="l00336"></a>00336 <span class="keywordtype">void</span>* <a class="code" href="class_sk_bitmap.html#a1c170bbb008c9e7e27be3d467b4a15ea">getAddr</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y) <span class="keyword">const</span>;
<a name="l00337"></a>00337
<a name="l00340"></a>00340 <span class="keyword">inline</span> uint32_t* <a class="code" href="class_sk_bitmap.html#a766008e38a2b4deccc8567c89cd85381">getAddr32</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y) <span class="keyword">const</span>;
<a name="l00343"></a>00343 <span class="keyword">inline</span> uint16_t* <a class="code" href="class_sk_bitmap.html#af94b7f677cbb57a60e6bf1c78feeab44">getAddr16</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y) <span class="keyword">const</span>;
<a name="l00346"></a>00346 <span class="keyword">inline</span> uint8_t* <a class="code" href="class_sk_bitmap.html#a0b547a274c3341e5e94abd725a7b6815">getAddr8</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y) <span class="keyword">const</span>;
<a name="l00350"></a>00350 <span class="keyword">inline</span> uint8_t* <a class="code" href="class_sk_bitmap.html#a7a2204f4d4920ddc3719d9e01398ac21">getAddr1</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y) <span class="keyword">const</span>;
<a name="l00351"></a>00351
<a name="l00355"></a>00355 <span class="keyword">inline</span> <a class="code" href="_sk_color_8h.html#a9ec12bd74c4b63b5da802b419106b8ea">SkPMColor</a> <a class="code" href="class_sk_bitmap.html#a4455a40ecf262362d266be97933da3f1">getIndex8Color</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y) <span class="keyword">const</span>;
<a name="l00356"></a>00356
<a name="l00368"></a>00368 <span class="keywordtype">bool</span> <a class="code" href="class_sk_bitmap.html#a6be9f42217d3e8e09cc9dc7eb25fb22b">extractSubset</a>(<a class="code" href="class_sk_bitmap.html">SkBitmap</a>* dst, <span class="keyword">const</span> <a class="code" href="struct_sk_i_rect.html">SkIRect</a>&amp; subset) <span class="keyword">const</span>;
<a name="l00369"></a>00369
<a name="l00381"></a>00381 <span class="keywordtype">bool</span> <a class="code" href="class_sk_bitmap.html#a4d8b8f6848e8172249dfdb8a6b14cf38">copyTo</a>(<a class="code" href="class_sk_bitmap.html">SkBitmap</a>* dst, <a class="code" href="class_sk_bitmap.html#a62602e28fc755def34d7e261bfd0b74a">Config</a> c, Allocator* allocator = NULL) <span class="keyword">const</span>;
<a name="l00382"></a>00382
<a name="l00386"></a>00386 <span class="keywordtype">bool</span> <a class="code" href="class_sk_bitmap.html#a5deaa2479e6d3543305f0125d5ac67a4">canCopyTo</a>(<a class="code" href="class_sk_bitmap.html#a62602e28fc755def34d7e261bfd0b74a">Config</a> newConfig) <span class="keyword">const</span>;
<a name="l00387"></a>00387
<a name="l00388"></a>00388 <span class="keywordtype">bool</span> <a class="code" href="class_sk_bitmap.html#a803be076ffba697f79abeb8b85fcb3e4">hasMipMap</a>() <span class="keyword">const</span>;
<a name="l00389"></a>00389 <span class="keywordtype">void</span> <a class="code" href="class_sk_bitmap.html#ac178b172818bcd9fc338edec313ff497">buildMipMap</a>(<span class="keywordtype">bool</span> forceRebuild = <span class="keyword">false</span>);
<a name="l00390"></a>00390 <span class="keywordtype">void</span> <a class="code" href="class_sk_bitmap.html#a2a9c6381e1ad467998f61a9b90f4a8ca">freeMipMap</a>();
<a name="l00391"></a>00391
<a name="l00396"></a>00396 <span class="keywordtype">int</span> <a class="code" href="class_sk_bitmap.html#a3bc73c419da001098540577af8f01ab5">extractMipLevel</a>(<a class="code" href="class_sk_bitmap.html">SkBitmap</a>* dst, <a class="code" href="_sk_fixed_8h.html#a2f208c049f1e9eb4d35b8c47615f5c47">SkFixed</a> sx, <a class="code" href="_sk_fixed_8h.html#a2f208c049f1e9eb4d35b8c47615f5c47">SkFixed</a> sy);
<a name="l00397"></a>00397
<a name="l00398"></a><a class="code" href="class_sk_bitmap.html#abca5e3dd4a1a5fb9f8a702e74fac86af">00398</a> <span class="keywordtype">void</span> <a class="code" href="class_sk_bitmap.html#abca5e3dd4a1a5fb9f8a702e74fac86af">extractAlpha</a>(<a class="code" href="class_sk_bitmap.html">SkBitmap</a>* dst)<span class="keyword"> const </span>{
<a name="l00399"></a>00399 this-&gt;<a class="code" href="class_sk_bitmap.html#abca5e3dd4a1a5fb9f8a702e74fac86af">extractAlpha</a>(dst, NULL, NULL);
<a name="l00400"></a>00400 }
<a name="l00401"></a>00401
<a name="l00402"></a>00402 <span class="keywordtype">void</span> <a class="code" href="class_sk_bitmap.html#abca5e3dd4a1a5fb9f8a702e74fac86af">extractAlpha</a>(<a class="code" href="class_sk_bitmap.html">SkBitmap</a>* dst, <span class="keyword">const</span> <a class="code" href="class_sk_paint.html">SkPaint</a>* paint,
<a name="l00403"></a>00403 <a class="code" href="struct_sk_i_point.html">SkIPoint</a>* offset) <span class="keyword">const</span>;
<a name="l00404"></a>00404
<a name="l00405"></a>00405 <span class="keywordtype">void</span> <a class="code" href="class_sk_bitmap.html#a845786d502ea8682bdd35c6d4711ef39">flatten</a>(<a class="code" href="class_sk_flattenable_write_buffer.html">SkFlattenableWriteBuffer</a>&amp;) <span class="keyword">const</span>;
<a name="l00406"></a>00406 <span class="keywordtype">void</span> <a class="code" href="class_sk_bitmap.html#a0eb16075897585934d95109552bdb99e">unflatten</a>(<a class="code" href="class_sk_flattenable_read_buffer.html">SkFlattenableReadBuffer</a>&amp;);
<a name="l00407"></a>00407
<a name="l00408"></a><a class="code" href="class_sk_bitmap.html#a5aec2290f2e05fa02e2fb280755aaba7">00408</a> <a class="code" href="class_sk_bitmap.html#a5aec2290f2e05fa02e2fb280755aaba7">SkDEBUGCODE</a>(<span class="keywordtype">void</span> validate() <span class="keyword">const</span>;)
<a name="l00409"></a>00409
<a name="l00410"></a>00410 <span class="keyword">class</span> Allocator : <span class="keyword">public</span> <a class="code" href="class_sk_ref_cnt.html">SkRefCnt</a> {
<a name="l00411"></a>00411 <span class="keyword">public</span>:
<a name="l00419"></a>00419 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> allocPixelRef(<a class="code" href="class_sk_bitmap.html">SkBitmap</a>*, <a class="code" href="class_sk_color_table.html">SkColorTable</a>*) = 0;
<a name="l00420"></a>00420 };
<a name="l00421"></a>00421
<a name="l00426"></a><a class="code" href="class_sk_bitmap_1_1_heap_allocator.html">00426</a> <span class="keyword">class </span><a class="code" href="class_sk_bitmap_1_1_heap_allocator.html">HeapAllocator</a> : <span class="keyword">public</span> Allocator {
<a name="l00427"></a>00427 <span class="keyword">public</span>:
<a name="l00428"></a>00428 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_sk_bitmap_1_1_heap_allocator.html#a799dfc0b0c12313a083be545a32868f4">allocPixelRef</a>(<a class="code" href="class_sk_bitmap.html">SkBitmap</a>*, <a class="code" href="class_sk_color_table.html">SkColorTable</a>*);
<a name="l00429"></a>00429 };
<a name="l00430"></a>00430
<a name="l00431"></a><a class="code" href="class_sk_bitmap_1_1_r_l_e_pixels.html">00431</a> <span class="keyword">class </span><a class="code" href="class_sk_bitmap_1_1_r_l_e_pixels.html">RLEPixels</a> {
<a name="l00432"></a>00432 <span class="keyword">public</span>:
<a name="l00433"></a>00433 <a class="code" href="class_sk_bitmap_1_1_r_l_e_pixels.html#a4f287fe1a93a4c39ad5fcbd88283bf89">RLEPixels</a>(<span class="keywordtype">int</span> <a class="code" href="class_sk_bitmap.html#af2894e784145cfe31c940f963a12b1e0">width</a>, <span class="keywordtype">int</span> <a class="code" href="class_sk_bitmap.html#aafe3dc4c4b270434616daa52936438eb">height</a>);
<a name="l00434"></a>00434 <span class="keyword">virtual</span> <a class="code" href="class_sk_bitmap_1_1_r_l_e_pixels.html#ac11e94f622bec8b7e443a2cbb66262e1">~RLEPixels</a>();
<a name="l00435"></a>00435
<a name="l00436"></a><a class="code" href="class_sk_bitmap_1_1_r_l_e_pixels.html#a5161b3316199bfae91ff4ec4f159a0b6">00436</a> uint8_t* <a class="code" href="class_sk_bitmap_1_1_r_l_e_pixels.html#a5161b3316199bfae91ff4ec4f159a0b6">packedAtY</a>(<span class="keywordtype">int</span> y)<span class="keyword"> const </span>{
<a name="l00437"></a>00437 <a class="code" href="_sk_types_8h.html#acc82ca88a67ae7ce95a107a9a4b81123">SkASSERT</a>((<span class="keywordtype">unsigned</span>)y &lt; (<span class="keywordtype">unsigned</span>)fHeight);
<a name="l00438"></a>00438 <span class="keywordflow">return</span> fYPtrs[y];
<a name="l00439"></a>00439 }
<a name="l00440"></a>00440
<a name="l00441"></a>00441 <span class="comment">// called by subclasses during creation</span>
<a name="l00442"></a><a class="code" href="class_sk_bitmap_1_1_r_l_e_pixels.html#afc92452fb0ddd2ba7314767730964622">00442</a> <span class="keywordtype">void</span> <a class="code" href="class_sk_bitmap_1_1_r_l_e_pixels.html#afc92452fb0ddd2ba7314767730964622">setPackedAtY</a>(<span class="keywordtype">int</span> y, uint8_t* addr) {
<a name="l00443"></a>00443 <a class="code" href="_sk_types_8h.html#acc82ca88a67ae7ce95a107a9a4b81123">SkASSERT</a>((<span class="keywordtype">unsigned</span>)y &lt; (<span class="keywordtype">unsigned</span>)fHeight);
<a name="l00444"></a>00444 fYPtrs[y] = addr;
<a name="l00445"></a>00445 }
<a name="l00446"></a>00446
<a name="l00447"></a>00447 <span class="keyword">private</span>:
<a name="l00448"></a>00448 uint8_t** fYPtrs;
<a name="l00449"></a>00449 <span class="keywordtype">int</span> fHeight;
<a name="l00450"></a>00450 };
<a name="l00451"></a>00451
<a name="l00452"></a>00452 <span class="keyword">private</span>:
<a name="l00453"></a>00453 <span class="keyword">struct </span>MipMap;
<a name="l00454"></a>00454 <span class="keyword">mutable</span> MipMap* fMipMap;
<a name="l00455"></a>00455
<a name="l00456"></a>00456 <span class="keyword">mutable</span> <a class="code" href="class_sk_pixel_ref.html">SkPixelRef</a>* fPixelRef;
<a name="l00457"></a>00457 <span class="keyword">mutable</span> <span class="keywordtype">size_t</span> fPixelRefOffset;
<a name="l00458"></a>00458 <span class="keyword">mutable</span> <span class="keywordtype">int</span> fPixelLockCount;
<a name="l00459"></a>00459 <span class="comment">// either user-specified (in which case it is not treated as mutable)</span>
<a name="l00460"></a>00460 <span class="comment">// or a cache of the returned value from fPixelRef-&gt;lockPixels()</span>
<a name="l00461"></a>00461 <span class="keyword">mutable</span> <span class="keywordtype">void</span>* fPixels;
<a name="l00462"></a>00462 <span class="keyword">mutable</span> <a class="code" href="class_sk_color_table.html">SkColorTable</a>* fColorTable; <span class="comment">// only meaningful for kIndex8</span>
<a name="l00463"></a>00463
<a name="l00464"></a>00464 <span class="keyword">enum</span> Flags {
<a name="l00465"></a>00465 kImageIsOpaque_Flag = 0x01
<a name="l00466"></a>00466 };
<a name="l00467"></a>00467
<a name="l00468"></a>00468 uint32_t fRowBytes;
<a name="l00469"></a>00469 uint32_t fWidth;
<a name="l00470"></a>00470 uint32_t fHeight;
<a name="l00471"></a>00471 uint8_t fConfig;
<a name="l00472"></a>00472 uint8_t fFlags;
<a name="l00473"></a>00473 uint8_t fBytesPerPixel; <span class="comment">// based on config</span>
<a name="l00474"></a>00474
<a name="l00475"></a>00475 <span class="comment">/* Unreference any pixelrefs or colortables</span>
<a name="l00476"></a>00476 <span class="comment"> */</span>
<a name="l00477"></a>00477 <span class="keywordtype">void</span> freePixels();
<a name="l00478"></a>00478 <span class="keywordtype">void</span> updatePixelsFromRef() <span class="keyword">const</span>;
<a name="l00479"></a>00479
<a name="l00480"></a>00480 <span class="keyword">static</span> <a class="code" href="_sk_fixed_8h.html#a2f208c049f1e9eb4d35b8c47615f5c47">SkFixed</a> ComputeMipLevel(<a class="code" href="_sk_fixed_8h.html#a2f208c049f1e9eb4d35b8c47615f5c47">SkFixed</a> sx, <a class="code" href="_sk_fixed_8h.html#a2f208c049f1e9eb4d35b8c47615f5c47">SkFixed</a> dy);
<a name="l00481"></a>00481 };
<a name="l00482"></a>00482
<a name="l00488"></a><a class="code" href="class_sk_color_table.html">00488</a> <span class="keyword">class </span><a class="code" href="class_sk_color_table.html">SkColorTable</a> : <span class="keyword">public</span> <a class="code" href="class_sk_ref_cnt.html">SkRefCnt</a> {
<a name="l00489"></a>00489 <span class="keyword">public</span>:
<a name="l00492"></a>00492 <a class="code" href="class_sk_color_table.html#a99616e28af2da8333c86b4f2c78fcda5">SkColorTable</a>(<span class="keyword">const</span> <a class="code" href="class_sk_color_table.html">SkColorTable</a>&amp; src);
<a name="l00496"></a>00496 <span class="keyword">explicit</span> <a class="code" href="class_sk_color_table.html#a99616e28af2da8333c86b4f2c78fcda5">SkColorTable</a>(<span class="keywordtype">int</span> <a class="code" href="class_sk_color_table.html#a65ed1cf75b4afe4afd995c23c7a09a7f">count</a>);
<a name="l00497"></a>00497 <span class="keyword">explicit</span> <a class="code" href="class_sk_color_table.html#a99616e28af2da8333c86b4f2c78fcda5">SkColorTable</a>(<a class="code" href="class_sk_flattenable_read_buffer.html">SkFlattenableReadBuffer</a>&amp;);
<a name="l00498"></a>00498 <a class="code" href="class_sk_color_table.html#a99616e28af2da8333c86b4f2c78fcda5">SkColorTable</a>(<span class="keyword">const</span> <a class="code" href="_sk_color_8h.html#a9ec12bd74c4b63b5da802b419106b8ea">SkPMColor</a> colors[], <span class="keywordtype">int</span> count);
<a name="l00499"></a>00499 <span class="keyword">virtual</span> <a class="code" href="class_sk_color_table.html#abcb3f75ee497eb12a64a3cda34204cdc">~SkColorTable</a>();
<a name="l00500"></a>00500
<a name="l00501"></a><a class="code" href="class_sk_color_table.html#aaacbf46624dfab99367a064c6395eac0">00501</a> <span class="keyword">enum</span> <a class="code" href="class_sk_color_table.html#aaacbf46624dfab99367a064c6395eac0">Flags</a> {
<a name="l00502"></a><a class="code" href="class_sk_color_table.html#aaacbf46624dfab99367a064c6395eac0ad731c6a629212d3be9013614519acb8c">00502</a> <a class="code" href="class_sk_color_table.html#aaacbf46624dfab99367a064c6395eac0ad731c6a629212d3be9013614519acb8c" title="if set, all of the colors in the table are opaque (alpha==0xFF)">kColorsAreOpaque_Flag</a> = 0x01
<a name="l00503"></a>00503 };
<a name="l00506"></a><a class="code" href="class_sk_color_table.html#a3a4d6395bc7deeec3b53eedf159819c1">00506</a> <span class="keywordtype">unsigned</span> <a class="code" href="class_sk_color_table.html#a3a4d6395bc7deeec3b53eedf159819c1">getFlags</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> fFlags; }
<a name="l00509"></a>00509 <span class="keywordtype">void</span> <a class="code" href="class_sk_color_table.html#a549f2adc70ecb3caac2ce018cfac64fc">setFlags</a>(<span class="keywordtype">unsigned</span> flags);
<a name="l00510"></a>00510
<a name="l00511"></a><a class="code" href="class_sk_color_table.html#af54c170e24211db62e0b24be80e86d4a">00511</a> <span class="keywordtype">bool</span> <a class="code" href="class_sk_color_table.html#af54c170e24211db62e0b24be80e86d4a">isOpaque</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (fFlags &amp; <a class="code" href="class_sk_color_table.html#aaacbf46624dfab99367a064c6395eac0ad731c6a629212d3be9013614519acb8c" title="if set, all of the colors in the table are opaque (alpha==0xFF)">kColorsAreOpaque_Flag</a>) != 0; }
<a name="l00512"></a>00512 <span class="keywordtype">void</span> <a class="code" href="class_sk_color_table.html#ab93a2e01d91b3c3cb2975743e5d831a7">setIsOpaque</a>(<span class="keywordtype">bool</span> <a class="code" href="class_sk_color_table.html#af54c170e24211db62e0b24be80e86d4a">isOpaque</a>);
<a name="l00513"></a>00513
<a name="l00516"></a><a class="code" href="class_sk_color_table.html#a65ed1cf75b4afe4afd995c23c7a09a7f">00516</a> <span class="keywordtype">int</span> <a class="code" href="class_sk_color_table.html#a65ed1cf75b4afe4afd995c23c7a09a7f">count</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> fCount; }
<a name="l00517"></a>00517
<a name="l00521"></a><a class="code" href="class_sk_color_table.html#a9ef987348b5daaf3f1b42be014dc2d9e">00521</a> <a class="code" href="_sk_color_8h.html#a9ec12bd74c4b63b5da802b419106b8ea">SkPMColor</a> <a class="code" href="class_sk_color_table.html#a9ef987348b5daaf3f1b42be014dc2d9e">operator[]</a>(<span class="keywordtype">int</span> index)<span class="keyword"> const </span>{
<a name="l00522"></a>00522 <a class="code" href="_sk_types_8h.html#acc82ca88a67ae7ce95a107a9a4b81123">SkASSERT</a>(fColors != NULL &amp;&amp; (<span class="keywordtype">unsigned</span>)index &lt; fCount);
<a name="l00523"></a>00523 <span class="keywordflow">return</span> fColors[index];
<a name="l00524"></a>00524 }
<a name="l00525"></a>00525
<a name="l00531"></a>00531 <span class="comment">// void setColors(int count) { this-&gt;setColors(NULL, count); }</span>
<a name="l00532"></a>00532 <span class="comment">// void setColors(const SkPMColor[], int count);</span>
<a name="l00533"></a>00533
<a name="l00538"></a><a class="code" href="class_sk_color_table.html#a5e59f36e0f81702aa3de49fc493aa50f">00538</a> <a class="code" href="_sk_color_8h.html#a9ec12bd74c4b63b5da802b419106b8ea">SkPMColor</a>* <a class="code" href="class_sk_color_table.html#a5e59f36e0f81702aa3de49fc493aa50f">lockColors</a>() {
<a name="l00539"></a>00539 SkDEBUGCODE(fColorLockCount += 1;)
<a name="l00540"></a>00540 <span class="keywordflow">return</span> fColors;
<a name="l00541"></a>00541 }
<a name="l00544"></a>00544 <span class="keywordtype">void</span> <a class="code" href="class_sk_color_table.html#a8d185755a1dd2bbaad1acba170e1509a">unlockColors</a>(<span class="keywordtype">bool</span> changed);
<a name="l00545"></a>00545
<a name="l00551"></a>00551 <span class="keyword">const</span> uint16_t* <a class="code" href="class_sk_color_table.html#af9dee472a4ffba69ed7b45838a3bba9f">lock16BitCache</a>();
<a name="l00554"></a><a class="code" href="class_sk_color_table.html#ae15209047daec1ce57848028faa8b4fc">00554</a> <span class="keywordtype">void</span> <a class="code" href="class_sk_color_table.html#ae15209047daec1ce57848028faa8b4fc">unlock16BitCache</a>() {
<a name="l00555"></a>00555 <a class="code" href="_sk_types_8h.html#acc82ca88a67ae7ce95a107a9a4b81123">SkASSERT</a>(f16BitCacheLockCount &gt; 0);
<a name="l00556"></a>00556 SkDEBUGCODE(f16BitCacheLockCount -= 1);
<a name="l00557"></a>00557 }
<a name="l00558"></a>00558
<a name="l00559"></a>00559 <span class="keywordtype">void</span> <a class="code" href="class_sk_color_table.html#ac8f1034dd024a90f591221ec25159b47">flatten</a>(<a class="code" href="class_sk_flattenable_write_buffer.html">SkFlattenableWriteBuffer</a>&amp;) <span class="keyword">const</span>;
<a name="l00560"></a>00560
<a name="l00561"></a>00561 <span class="keyword">private</span>:
<a name="l00562"></a>00562 <a class="code" href="_sk_color_8h.html#a9ec12bd74c4b63b5da802b419106b8ea">SkPMColor</a>* fColors;
<a name="l00563"></a>00563 uint16_t* f16BitCache;
<a name="l00564"></a>00564 uint16_t fCount;
<a name="l00565"></a>00565 uint8_t fFlags;
<a name="l00566"></a>00566 SkDEBUGCODE(<span class="keywordtype">int</span> fColorLockCount;)
<a name="l00567"></a>00567 SkDEBUGCODE(<span class="keywordtype">int</span> f16BitCacheLockCount;)
<a name="l00568"></a>00568
<a name="l00569"></a>00569 <span class="keywordtype">void</span> inval16BitCache();
<a name="l00570"></a>00570 };
<a name="l00571"></a>00571
<a name="l00572"></a><a class="code" href="class_sk_auto_lock_pixels.html">00572</a> <span class="keyword">class </span><a class="code" href="class_sk_auto_lock_pixels.html">SkAutoLockPixels</a> {
<a name="l00573"></a>00573 <span class="keyword">public</span>:
<a name="l00574"></a><a class="code" href="class_sk_auto_lock_pixels.html#a96476d24d965c3c6eef2f34714eb2e06">00574</a> <a class="code" href="class_sk_auto_lock_pixels.html#a96476d24d965c3c6eef2f34714eb2e06">SkAutoLockPixels</a>(<span class="keyword">const</span> <a class="code" href="class_sk_bitmap.html">SkBitmap</a>&amp; bitmap) : fBitmap(bitmap) {
<a name="l00575"></a>00575 bitmap.<a class="code" href="class_sk_bitmap.html#af5df9be961b3202705fedcd57a082b81">lockPixels</a>();
<a name="l00576"></a>00576 }
<a name="l00577"></a><a class="code" href="class_sk_auto_lock_pixels.html#a13ff646e8ae7f8150b1ec787e7af8632">00577</a> <a class="code" href="class_sk_auto_lock_pixels.html#a13ff646e8ae7f8150b1ec787e7af8632">~SkAutoLockPixels</a>() {
<a name="l00578"></a>00578 fBitmap.<a class="code" href="class_sk_bitmap.html#a1a84a138655973d5b071d2c9a0741cec">unlockPixels</a>();
<a name="l00579"></a>00579 }
<a name="l00580"></a>00580
<a name="l00581"></a>00581 <span class="keyword">private</span>:
<a name="l00582"></a>00582 <span class="keyword">const</span> <a class="code" href="class_sk_bitmap.html">SkBitmap</a>&amp; fBitmap;
<a name="l00583"></a>00583 };
<a name="l00584"></a>00584
<a name="l00588"></a><a class="code" href="class_sk_auto_lock_colors.html">00588</a> <span class="keyword">class </span><a class="code" href="class_sk_auto_lock_colors.html">SkAutoLockColors</a> : <span class="keyword">public</span> SkNoncopyable {
<a name="l00589"></a>00589 <span class="keyword">public</span>:
<a name="l00593"></a><a class="code" href="class_sk_auto_lock_colors.html#a50c6eec2dad5ce65c4fde87578e7feec">00593</a> <a class="code" href="class_sk_auto_lock_colors.html#a50c6eec2dad5ce65c4fde87578e7feec">SkAutoLockColors</a>() : fCTable(NULL), fColors(NULL) {}
<a name="l00596"></a><a class="code" href="class_sk_auto_lock_colors.html#ac0d3568fb792def4829c602dd2f9032d">00596</a> <span class="keyword">explicit</span> <a class="code" href="class_sk_auto_lock_colors.html#ac0d3568fb792def4829c602dd2f9032d">SkAutoLockColors</a>(<span class="keyword">const</span> <a class="code" href="class_sk_bitmap.html">SkBitmap</a>&amp; bm) {
<a name="l00597"></a>00597 fCTable = bm.<a class="code" href="class_sk_bitmap.html#a2f65539244022f14c2cba453a19fa241">getColorTable</a>();
<a name="l00598"></a>00598 fColors = fCTable ? fCTable-&gt;<a class="code" href="class_sk_color_table.html#a5e59f36e0f81702aa3de49fc493aa50f">lockColors</a>() : NULL;
<a name="l00599"></a>00599 }
<a name="l00602"></a><a class="code" href="class_sk_auto_lock_colors.html#a6d0c63a02b128afac11c686452e50f5a">00602</a> <span class="keyword">explicit</span> <a class="code" href="class_sk_auto_lock_colors.html#a6d0c63a02b128afac11c686452e50f5a">SkAutoLockColors</a>(<a class="code" href="class_sk_color_table.html">SkColorTable</a>* ctable) {
<a name="l00603"></a>00603 fCTable = ctable;
<a name="l00604"></a>00604 fColors = ctable ? ctable-&gt;<a class="code" href="class_sk_color_table.html#a5e59f36e0f81702aa3de49fc493aa50f">lockColors</a>() : NULL;
<a name="l00605"></a>00605 }
<a name="l00606"></a><a class="code" href="class_sk_auto_lock_colors.html#ab9f298b62520440c63b2d1260eafb32f">00606</a> <a class="code" href="class_sk_auto_lock_colors.html#ab9f298b62520440c63b2d1260eafb32f">~SkAutoLockColors</a>() {
<a name="l00607"></a>00607 <span class="keywordflow">if</span> (fCTable) {
<a name="l00608"></a>00608 fCTable-&gt;<a class="code" href="class_sk_color_table.html#a8d185755a1dd2bbaad1acba170e1509a">unlockColors</a>(<span class="keyword">false</span>);
<a name="l00609"></a>00609 }
<a name="l00610"></a>00610 }
<a name="l00611"></a>00611
<a name="l00615"></a><a class="code" href="class_sk_auto_lock_colors.html#aa8c15a7ad9c0bf445d60a5e8e6b7b39c">00615</a> <span class="keyword">const</span> <a class="code" href="_sk_color_8h.html#a9ec12bd74c4b63b5da802b419106b8ea">SkPMColor</a>* <a class="code" href="class_sk_auto_lock_colors.html#aa8c15a7ad9c0bf445d60a5e8e6b7b39c">colors</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> fColors; }
<a name="l00616"></a>00616
<a name="l00620"></a><a class="code" href="class_sk_auto_lock_colors.html#a95cb5da9299f73bec8e9fe9d30d40200">00620</a> <span class="keyword">const</span> <a class="code" href="_sk_color_8h.html#a9ec12bd74c4b63b5da802b419106b8ea">SkPMColor</a>* <a class="code" href="class_sk_auto_lock_colors.html#a95cb5da9299f73bec8e9fe9d30d40200">lockColors</a>(<a class="code" href="class_sk_color_table.html">SkColorTable</a>* ctable) {
<a name="l00621"></a>00621 <span class="keywordflow">if</span> (fCTable) {
<a name="l00622"></a>00622 fCTable-&gt;<a class="code" href="class_sk_color_table.html#a8d185755a1dd2bbaad1acba170e1509a">unlockColors</a>(<span class="keyword">false</span>);
<a name="l00623"></a>00623 }
<a name="l00624"></a>00624 fCTable = ctable;
<a name="l00625"></a>00625 fColors = ctable ? ctable-&gt;<a class="code" href="class_sk_color_table.html#a5e59f36e0f81702aa3de49fc493aa50f">lockColors</a>() : NULL;
<a name="l00626"></a>00626 <span class="keywordflow">return</span> fColors;
<a name="l00627"></a>00627 }
<a name="l00628"></a>00628
<a name="l00629"></a><a class="code" href="class_sk_auto_lock_colors.html#a244e417bc8a74315e90a5a8a33ffffe9">00629</a> <span class="keyword">const</span> <a class="code" href="_sk_color_8h.html#a9ec12bd74c4b63b5da802b419106b8ea">SkPMColor</a>* <a class="code" href="class_sk_auto_lock_colors.html#a244e417bc8a74315e90a5a8a33ffffe9">lockColors</a>(<span class="keyword">const</span> <a class="code" href="class_sk_bitmap.html">SkBitmap</a>&amp; bm) {
<a name="l00630"></a>00630 <span class="keywordflow">return</span> this-&gt;<a class="code" href="class_sk_auto_lock_colors.html#a95cb5da9299f73bec8e9fe9d30d40200">lockColors</a>(bm.<a class="code" href="class_sk_bitmap.html#a2f65539244022f14c2cba453a19fa241">getColorTable</a>());
<a name="l00631"></a>00631 }
<a name="l00632"></a>00632
<a name="l00633"></a>00633 <span class="keyword">private</span>:
<a name="l00634"></a>00634 <a class="code" href="class_sk_color_table.html">SkColorTable</a>* fCTable;
<a name="l00635"></a>00635 <span class="keyword">const</span> <a class="code" href="_sk_color_8h.html#a9ec12bd74c4b63b5da802b419106b8ea">SkPMColor</a>* fColors;
<a name="l00636"></a>00636 };
<a name="l00637"></a>00637
<a name="l00639"></a>00639
<a name="l00640"></a><a class="code" href="class_sk_bitmap.html#a766008e38a2b4deccc8567c89cd85381">00640</a> <span class="keyword">inline</span> uint32_t* <a class="code" href="class_sk_bitmap.html#a766008e38a2b4deccc8567c89cd85381">SkBitmap::getAddr32</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y)<span class="keyword"> const </span>{
<a name="l00641"></a>00641 <a class="code" href="_sk_types_8h.html#acc82ca88a67ae7ce95a107a9a4b81123">SkASSERT</a>(fPixels);
<a name="l00642"></a>00642 <a class="code" href="_sk_types_8h.html#acc82ca88a67ae7ce95a107a9a4b81123">SkASSERT</a>(fConfig == <a class="code" href="class_sk_bitmap.html#a62602e28fc755def34d7e261bfd0b74aab61714b71c59899924650e207280ce67" title="32-bits per pixel, (see SkColorPriv.h for packing)">kARGB_8888_Config</a>);
<a name="l00643"></a>00643 <a class="code" href="_sk_types_8h.html#acc82ca88a67ae7ce95a107a9a4b81123">SkASSERT</a>((<span class="keywordtype">unsigned</span>)x &lt; fWidth &amp;&amp; (<span class="keywordtype">unsigned</span>)y &lt; fHeight);
<a name="l00644"></a>00644 <span class="keywordflow">return</span> (uint32_t*)((<span class="keywordtype">char</span>*)fPixels + y * fRowBytes + (x &lt;&lt; 2));
<a name="l00645"></a>00645 }
<a name="l00646"></a>00646
<a name="l00647"></a><a class="code" href="class_sk_bitmap.html#af94b7f677cbb57a60e6bf1c78feeab44">00647</a> <span class="keyword">inline</span> uint16_t* <a class="code" href="class_sk_bitmap.html#af94b7f677cbb57a60e6bf1c78feeab44">SkBitmap::getAddr16</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y)<span class="keyword"> const </span>{
<a name="l00648"></a>00648 <a class="code" href="_sk_types_8h.html#acc82ca88a67ae7ce95a107a9a4b81123">SkASSERT</a>(fPixels);
<a name="l00649"></a>00649 <a class="code" href="_sk_types_8h.html#acc82ca88a67ae7ce95a107a9a4b81123">SkASSERT</a>(fConfig == <a class="code" href="class_sk_bitmap.html#a62602e28fc755def34d7e261bfd0b74aad6507349d4332b1a8f9e7830d52f11a3" title="16-bits per pixel, (see SkColorPriv.h for packing)">kRGB_565_Config</a> || fConfig == <a class="code" href="class_sk_bitmap.html#a62602e28fc755def34d7e261bfd0b74aa4e75dc2391a4ed0e32a90e03cb3e07cb" title="16-bits per pixel, (see SkColorPriv.h for packing)">kARGB_4444_Config</a>);
<a name="l00650"></a>00650 <a class="code" href="_sk_types_8h.html#acc82ca88a67ae7ce95a107a9a4b81123">SkASSERT</a>((<span class="keywordtype">unsigned</span>)x &lt; fWidth &amp;&amp; (<span class="keywordtype">unsigned</span>)y &lt; fHeight);
<a name="l00651"></a>00651 <span class="keywordflow">return</span> (uint16_t*)((<span class="keywordtype">char</span>*)fPixels + y * fRowBytes + (x &lt;&lt; 1));
<a name="l00652"></a>00652 }
<a name="l00653"></a>00653
<a name="l00654"></a><a class="code" href="class_sk_bitmap.html#a0b547a274c3341e5e94abd725a7b6815">00654</a> <span class="keyword">inline</span> uint8_t* <a class="code" href="class_sk_bitmap.html#a0b547a274c3341e5e94abd725a7b6815">SkBitmap::getAddr8</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y)<span class="keyword"> const </span>{
<a name="l00655"></a>00655 <a class="code" href="_sk_types_8h.html#acc82ca88a67ae7ce95a107a9a4b81123">SkASSERT</a>(fPixels);
<a name="l00656"></a>00656 <a class="code" href="_sk_types_8h.html#acc82ca88a67ae7ce95a107a9a4b81123">SkASSERT</a>(fConfig == <a class="code" href="class_sk_bitmap.html#a62602e28fc755def34d7e261bfd0b74aa4135562fb9aa82dbeed796867d38c8c1" title="8-bits per pixel, with only alpha specified (0 is transparent, 0xFF is opaque)">kA8_Config</a> || fConfig == <a class="code" href="class_sk_bitmap.html#a62602e28fc755def34d7e261bfd0b74aa3a24db43cf983e57d083e7fbec2d3502" title="8-bits per pixel, using SkColorTable to specify the colors">kIndex8_Config</a>);
<a name="l00657"></a>00657 <a class="code" href="_sk_types_8h.html#acc82ca88a67ae7ce95a107a9a4b81123">SkASSERT</a>((<span class="keywordtype">unsigned</span>)x &lt; fWidth &amp;&amp; (<span class="keywordtype">unsigned</span>)y &lt; fHeight);
<a name="l00658"></a>00658 <span class="keywordflow">return</span> (uint8_t*)fPixels + y * fRowBytes + x;
<a name="l00659"></a>00659 }
<a name="l00660"></a>00660
<a name="l00661"></a><a class="code" href="class_sk_bitmap.html#a4455a40ecf262362d266be97933da3f1">00661</a> <span class="keyword">inline</span> <a class="code" href="_sk_color_8h.html#a9ec12bd74c4b63b5da802b419106b8ea">SkPMColor</a> <a class="code" href="class_sk_bitmap.html#a4455a40ecf262362d266be97933da3f1">SkBitmap::getIndex8Color</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y)<span class="keyword"> const </span>{
<a name="l00662"></a>00662 <a class="code" href="_sk_types_8h.html#acc82ca88a67ae7ce95a107a9a4b81123">SkASSERT</a>(fPixels);
<a name="l00663"></a>00663 <a class="code" href="_sk_types_8h.html#acc82ca88a67ae7ce95a107a9a4b81123">SkASSERT</a>(fConfig == <a class="code" href="class_sk_bitmap.html#a62602e28fc755def34d7e261bfd0b74aa3a24db43cf983e57d083e7fbec2d3502" title="8-bits per pixel, using SkColorTable to specify the colors">kIndex8_Config</a>);
<a name="l00664"></a>00664 <a class="code" href="_sk_types_8h.html#acc82ca88a67ae7ce95a107a9a4b81123">SkASSERT</a>((<span class="keywordtype">unsigned</span>)x &lt; fWidth &amp;&amp; (<span class="keywordtype">unsigned</span>)y &lt; fHeight);
<a name="l00665"></a>00665 <a class="code" href="_sk_types_8h.html#acc82ca88a67ae7ce95a107a9a4b81123">SkASSERT</a>(fColorTable);
<a name="l00666"></a>00666 <span class="keywordflow">return</span> (*fColorTable)[*((<span class="keyword">const</span> uint8_t*)fPixels + y * fRowBytes + x)];
<a name="l00667"></a>00667 }
<a name="l00668"></a>00668
<a name="l00669"></a>00669 <span class="comment">// returns the address of the byte that contains the x coordinate</span>
<a name="l00670"></a><a class="code" href="class_sk_bitmap.html#a7a2204f4d4920ddc3719d9e01398ac21">00670</a> <span class="keyword">inline</span> uint8_t* <a class="code" href="class_sk_bitmap.html#a7a2204f4d4920ddc3719d9e01398ac21">SkBitmap::getAddr1</a>(<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y)<span class="keyword"> const </span>{
<a name="l00671"></a>00671 <a class="code" href="_sk_types_8h.html#acc82ca88a67ae7ce95a107a9a4b81123">SkASSERT</a>(fPixels);
<a name="l00672"></a>00672 <a class="code" href="_sk_types_8h.html#acc82ca88a67ae7ce95a107a9a4b81123">SkASSERT</a>(fConfig == <a class="code" href="class_sk_bitmap.html#a62602e28fc755def34d7e261bfd0b74aa7024f2de781fea6248620aa14d79ce75" title="1-bit per pixel, (0 is transparent, 1 is opaque)">kA1_Config</a>);
<a name="l00673"></a>00673 <a class="code" href="_sk_types_8h.html#acc82ca88a67ae7ce95a107a9a4b81123">SkASSERT</a>((<span class="keywordtype">unsigned</span>)x &lt; fWidth &amp;&amp; (<span class="keywordtype">unsigned</span>)y &lt; fHeight);
<a name="l00674"></a>00674 <span class="keywordflow">return</span> (uint8_t*)fPixels + y * fRowBytes + (x &gt;&gt; 3);
<a name="l00675"></a>00675 }
<a name="l00676"></a>00676
<a name="l00677"></a>00677 <span class="preprocessor">#endif</span>
<a name="l00678"></a>00678 <span class="preprocessor"></span>
</pre></div></div>
<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Oct 20 11:03:40 2009 for Skia by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
</body>
</html>