Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FastLED/FastLED.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Garcia <danielgarcia@gmail.com>2015-08-11 09:11:09 +0300
committerDaniel Garcia <danielgarcia@gmail.com>2015-08-11 09:11:09 +0300
commit6061e1b06eb99dcb927bbbc652ba2956652fa325 (patch)
tree672a6ea353bbf78dcf14cdfdbdcfc19b0a4416e0
parent34859239375e8a3955db0182eab18d464ca8bb4a (diff)
Adding doc notes to header files
-rw-r--r--docs/3.1/_fast_l_e_d_8h.html197
-rw-r--r--docs/3.1/_fast_l_e_d_8h_source.html68
-rw-r--r--docs/3.1/annotated.html2
-rw-r--r--docs/3.1/bitswap_8h.html2
-rw-r--r--docs/3.1/bitswap_8h_source.html4
-rw-r--r--docs/3.1/chipsets_8h.html178
-rw-r--r--docs/3.1/chipsets_8h_source.html1021
-rw-r--r--docs/3.1/class_a_p_a102_controller-members.html2
-rw-r--r--docs/3.1/class_a_p_a102_controller.html2
-rw-r--r--docs/3.1/class_a_p_a104.html2
-rw-r--r--docs/3.1/class_a_v_r_software_s_p_i_output-members.html2
-rw-r--r--docs/3.1/class_a_v_r_software_s_p_i_output.html2
-rw-r--r--docs/3.1/class_c_every_n_time_periods-members.html2
-rw-r--r--docs/3.1/class_c_every_n_time_periods.html2
-rw-r--r--docs/3.1/class_c_fast_l_e_d-members.html2
-rw-r--r--docs/3.1/class_c_fast_l_e_d.html2
-rw-r--r--docs/3.1/class_c_h_s_v_palette16-members.html2
-rw-r--r--docs/3.1/class_c_h_s_v_palette16.html2
-rw-r--r--docs/3.1/class_c_h_s_v_palette256-members.html2
-rw-r--r--docs/3.1/class_c_h_s_v_palette256.html2
-rw-r--r--docs/3.1/class_c_l_e_d_controller-members.html2
-rw-r--r--docs/3.1/class_c_l_e_d_controller.html2
-rw-r--r--docs/3.1/class_c_min_wait-members.html2
-rw-r--r--docs/3.1/class_c_min_wait.html2
-rw-r--r--docs/3.1/class_c_r_g_b_palette16-members.html2
-rw-r--r--docs/3.1/class_c_r_g_b_palette16.html2
-rw-r--r--docs/3.1/class_c_r_g_b_palette256-members.html2
-rw-r--r--docs/3.1/class_c_r_g_b_palette256.html2
-rw-r--r--docs/3.1/class_d_a_t_a___n_o_p-members.html2
-rw-r--r--docs/3.1/class_d_a_t_a___n_o_p.html2
-rw-r--r--docs/3.1/class_d_m_x_s_e_r_i_a_l-members.html2
-rw-r--r--docs/3.1/class_d_m_x_s_e_r_i_a_l.html2
-rw-r--r--docs/3.1/class_d_m_x_s_i_m_p_l_e-members.html2
-rw-r--r--docs/3.1/class_d_m_x_s_i_m_p_l_e.html2
-rw-r--r--docs/3.1/class_d_m_x_serial_controller-members.html2
-rw-r--r--docs/3.1/class_d_m_x_serial_controller.html2
-rw-r--r--docs/3.1/class_d_m_x_simple_controller-members.html2
-rw-r--r--docs/3.1/class_d_m_x_simple_controller.html2
-rw-r--r--docs/3.1/class_fast_pin-members.html2
-rw-r--r--docs/3.1/class_fast_pin.html2
-rw-r--r--docs/3.1/class_fast_pin_b_b-members.html2
-rw-r--r--docs/3.1/class_fast_pin_b_b.html2
-rw-r--r--docs/3.1/class_g_w6205.html2
-rw-r--r--docs/3.1/class_g_w6205__400.html2
-rw-r--r--docs/3.1/class_g_w6205_controller400_khz.html2
-rw-r--r--docs/3.1/class_g_w6205_controller800_khz.html2
-rw-r--r--docs/3.1/class_input_pin-members.html2
-rw-r--r--docs/3.1/class_input_pin.html2
-rw-r--r--docs/3.1/class_l_p_d1886.html2
-rw-r--r--docs/3.1/class_l_p_d1886_controller1250_khz.html2
-rw-r--r--docs/3.1/class_l_p_d8806_controller-members.html2
-rw-r--r--docs/3.1/class_l_p_d8806_controller.html2
-rw-r--r--docs/3.1/class_n_e_o_p_i_x_e_l.html2
-rw-r--r--docs/3.1/class_output_pin-members.html2
-rw-r--r--docs/3.1/class_output_pin.html2
-rw-r--r--docs/3.1/class_p9813_controller-members.html2
-rw-r--r--docs/3.1/class_p9813_controller.html2
-rw-r--r--docs/3.1/class_pin-members.html2
-rw-r--r--docs/3.1/class_pin.html2
-rw-r--r--docs/3.1/class_s_m16716_controller-members.html2
-rw-r--r--docs/3.1/class_s_m16716_controller.html2
-rw-r--r--docs/3.1/class_s_p_i_output-members.html2
-rw-r--r--docs/3.1/class_s_p_i_output.html2
-rw-r--r--docs/3.1/class_s_p_i_output_3_01_s_p_i2___d_a_t_a_00_01_s_p_i2___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html2
-rw-r--r--docs/3.1/class_s_p_i_output_3_01_s_p_i2___d_a_t_a_00_01_s_p_i___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html2
-rw-r--r--docs/3.1/class_s_p_i_output_3_01_s_p_i___d_a_t_a_00_01_s_p_i2___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html2
-rw-r--r--docs/3.1/class_s_p_i_output_3_01_s_p_i___d_a_t_a_00_01_s_p_i___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html2
-rw-r--r--docs/3.1/class_s_p_i_output_3_01_s_p_i___u_a_r_t0___d_a_t_a_00_01_s_p_i___u_a_r_t0___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html2
-rw-r--r--docs/3.1/class_s_p_i_output_3_01_s_p_i___u_a_r_t1___d_a_t_a_00_01_s_p_i___u_a_r_t1___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html2
-rw-r--r--docs/3.1/class_selectable-members.html2
-rw-r--r--docs/3.1/class_selectable.html2
-rw-r--r--docs/3.1/class_software_s_p_i_output-members.html2
-rw-r--r--docs/3.1/class_software_s_p_i_output.html2
-rw-r--r--docs/3.1/class_t_m1803.html2
-rw-r--r--docs/3.1/class_t_m1803_controller400_khz.html2
-rw-r--r--docs/3.1/class_t_m1804.html2
-rw-r--r--docs/3.1/class_t_m1809.html2
-rw-r--r--docs/3.1/class_t_m1809_controller800_khz.html2
-rw-r--r--docs/3.1/class_t_m1829.html2
-rw-r--r--docs/3.1/class_t_m1829_controller1600_khz.html2
-rw-r--r--docs/3.1/class_t_m1829_controller800_khz.html2
-rw-r--r--docs/3.1/class_u_c_s1903.html2
-rw-r--r--docs/3.1/class_u_c_s1903_b.html2
-rw-r--r--docs/3.1/class_u_c_s1903_b_controller800_khz.html2
-rw-r--r--docs/3.1/class_u_c_s1903_controller400_khz.html2
-rw-r--r--docs/3.1/class_u_c_s1904.html2
-rw-r--r--docs/3.1/class_u_c_s1904_controller800_khz.html2
-rw-r--r--docs/3.1/class_w_s2801_controller-members.html2
-rw-r--r--docs/3.1/class_w_s2801_controller.html2
-rw-r--r--docs/3.1/class_w_s2803_controller-members.html2
-rw-r--r--docs/3.1/class_w_s2803_controller.html2
-rw-r--r--docs/3.1/class_w_s2811.html2
-rw-r--r--docs/3.1/class_w_s2811__400.html2
-rw-r--r--docs/3.1/class_w_s2811_controller400_khz.html2
-rw-r--r--docs/3.1/class_w_s2811_controller800_khz.html2
-rw-r--r--docs/3.1/class_w_s2812.html2
-rw-r--r--docs/3.1/class_w_s2812_b.html2
-rw-r--r--docs/3.1/class_w_s2812_controller800_khz.html2
-rw-r--r--docs/3.1/classes.html2
-rw-r--r--docs/3.1/classq-members.html2
-rw-r--r--docs/3.1/classq.html2
-rw-r--r--docs/3.1/color_8h.html149
-rw-r--r--docs/3.1/color_8h_source.html112
-rw-r--r--docs/3.1/colorpalettes_8h.html121
-rw-r--r--docs/3.1/colorpalettes_8h_source.html54
-rw-r--r--docs/3.1/colorutils_8h.html324
-rw-r--r--docs/3.1/colorutils_8h_source.html2229
-rw-r--r--docs/3.1/controller_8h.html126
-rw-r--r--docs/3.1/controller_8h_source.html1094
-rw-r--r--docs/3.1/dir_fbb9e787cf27434374136273d35a9c17.html2
-rw-r--r--docs/3.1/dmx_8h_source.html4
-rw-r--r--docs/3.1/fastled__config_8h.html105
-rw-r--r--docs/3.1/fastled__config_8h_source.html37
-rw-r--r--docs/3.1/fastled__delay_8h.html136
-rw-r--r--docs/3.1/fastled__delay_8h_source.html225
-rw-r--r--docs/3.1/fastled__progmem_8h.html105
-rw-r--r--docs/3.1/fastled__progmem_8h_source.html117
-rw-r--r--docs/3.1/fastpin_8h.html140
-rw-r--r--docs/3.1/fastpin_8h_source.html353
-rw-r--r--docs/3.1/fastspi_8h_source.html5
-rw-r--r--docs/3.1/fastspi__bitbang_8h_source.html11
-rw-r--r--docs/3.1/fastspi__dma_8h_source.html2
-rw-r--r--docs/3.1/fastspi__nop_8h_source.html6
-rw-r--r--docs/3.1/fastspi__ref_8h_source.html6
-rw-r--r--docs/3.1/fastspi__types_8h_source.html2
-rw-r--r--docs/3.1/files.html22
-rw-r--r--docs/3.1/functions.html2
-rw-r--r--docs/3.1/functions_enum.html2
-rw-r--r--docs/3.1/functions_func.html2
-rw-r--r--docs/3.1/globals.html63
-rw-r--r--docs/3.1/globals_enum.html114
-rw-r--r--docs/3.1/globals_eval.html141
-rw-r--r--docs/3.1/globals_func.html15
-rw-r--r--docs/3.1/globals_vars.html108
-rw-r--r--docs/3.1/graph_legend.html2
-rw-r--r--docs/3.1/group___bitswap.html2
-rw-r--r--docs/3.1/group___color_enums.html2
-rw-r--r--docs/3.1/group___colorpalletes.html48
-rw-r--r--docs/3.1/group___colorutils.html2
-rw-r--r--docs/3.1/group___dimming.html2
-rw-r--r--docs/3.1/group___math.html2
-rw-r--r--docs/3.1/group___noise.html2
-rw-r--r--docs/3.1/group___pixeltypes.html2
-rw-r--r--docs/3.1/group___power.html2
-rw-r--r--docs/3.1/group___random.html2
-rw-r--r--docs/3.1/group___scaling.html2
-rw-r--r--docs/3.1/group___trig.html2
-rw-r--r--docs/3.1/group__chipsets.html2
-rw-r--r--docs/3.1/group__lib8tion.html2
-rw-r--r--docs/3.1/hierarchy.html2
-rw-r--r--docs/3.1/hsv2rgb_8h_source.html2
-rw-r--r--docs/3.1/index.html2
-rw-r--r--docs/3.1/inherits.html2
-rw-r--r--docs/3.1/led__sysdefs_8h_source.html5
-rw-r--r--docs/3.1/lib8tion_8h_source.html4
-rw-r--r--docs/3.1/math8_8h_source.html2
-rw-r--r--docs/3.1/md__p_o_r_t_i_n_g.html4
-rw-r--r--docs/3.1/md__r_e_a_d_m_e.html2
-rw-r--r--docs/3.1/md_release_notes.html2
-rw-r--r--docs/3.1/modules.html2
-rw-r--r--docs/3.1/noise_8h.html2
-rw-r--r--docs/3.1/noise_8h_source.html2
-rw-r--r--docs/3.1/pages.html2
-rw-r--r--docs/3.1/pixeltypes_8h_source.html11
-rw-r--r--docs/3.1/platforms_8h_source.html5
-rw-r--r--docs/3.1/power__mgt_8h_source.html2
-rw-r--r--docs/3.1/random8_8h_source.html2
-rw-r--r--docs/3.1/scale8_8h_source.html2
-rw-r--r--docs/3.1/search/all_3.js5
-rw-r--r--docs/3.1/search/all_5.js3
-rw-r--r--docs/3.1/search/all_6.js5
-rw-r--r--docs/3.1/search/enums_1.js3
-rw-r--r--docs/3.1/search/enums_2.js3
-rw-r--r--docs/3.1/search/enums_3.html26
-rw-r--r--docs/3.1/search/enums_3.js4
-rw-r--r--docs/3.1/search/files_1.js6
-rw-r--r--docs/3.1/search/files_2.html26
-rw-r--r--docs/3.1/search/files_2.js8
-rw-r--r--docs/3.1/search/files_3.html26
-rw-r--r--docs/3.1/search/files_3.js4
-rw-r--r--docs/3.1/search/searchdata.js4
-rw-r--r--docs/3.1/struct_c_h_s_v-members.html2
-rw-r--r--docs/3.1/struct_c_h_s_v.html2
-rw-r--r--docs/3.1/struct_c_r_g_b-members.html2
-rw-r--r--docs/3.1/struct_c_r_g_b.html2
-rw-r--r--docs/3.1/struct_multi_pixel_controller-members.html2
-rw-r--r--docs/3.1/struct_multi_pixel_controller.html2
-rw-r--r--docs/3.1/struct_pixel_controller-members.html2
-rw-r--r--docs/3.1/struct_pixel_controller.html2
-rw-r--r--docs/3.1/structsub4-members.html2
-rw-r--r--docs/3.1/structsub4.html2
-rw-r--r--docs/3.1/todo.html2
-rw-r--r--docs/3.1/trig8_8h_source.html2
-rw-r--r--docs/3.1/union_i_e_e_e754binary32__t-members.html2
-rw-r--r--docs/3.1/union_i_e_e_e754binary32__t.html2
-rw-r--r--docs/3.1/union_t_r_g_b_gradient_palette_entry_union-members.html2
-rw-r--r--docs/3.1/union_t_r_g_b_gradient_palette_entry_union.html2
-rw-r--r--docs/3.1/unionbitswap__type-members.html2
-rw-r--r--docs/3.1/unionbitswap__type.html2
-rw-r--r--docs/3.1/unionjust8bits-members.html2
-rw-r--r--docs/3.1/unionjust8bits.html2
-rw-r--r--docs/3.1/uniont_bytes_for_long-members.html2
-rw-r--r--docs/3.1/uniont_bytes_for_long.html2
203 files changed, 5021 insertions, 2873 deletions
diff --git a/docs/3.1/_fast_l_e_d_8h.html b/docs/3.1/_fast_l_e_d_8h.html
new file mode 100644
index 00000000..a8a7bafa
--- /dev/null
+++ b/docs/3.1/_fast_l_e_d_8h.html
@@ -0,0 +1,197 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.9.1"/>
+<title>FastLED: FastLED.h File Reference</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="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { init_search(); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">FastLED
+ &#160;<span id="projectnumber">3.1</span>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.9.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</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>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#enum-members">Enumerations</a> &#124;
+<a href="#var-members">Variables</a> </div>
+ <div class="headertitle">
+<div class="title">FastLED.h File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>central include file for FastLED, defines the <a class="el" href="class_c_fast_l_e_d.html" title="High level controller interface for FastLED. ">CFastLED</a> class/object
+<a href="#details">More...</a></p>
+
+<p><a href="_fast_l_e_d_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_n_e_o_p_i_x_e_l.html">NEOPIXEL&lt; DATA_PIN &gt;</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_m1829.html">TM1829&lt; DATA_PIN, RGB_ORDER &gt;</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_m1809.html">TM1809&lt; DATA_PIN, RGB_ORDER &gt;</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_m1804.html">TM1804&lt; DATA_PIN, RGB_ORDER &gt;</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_m1803.html">TM1803&lt; DATA_PIN, RGB_ORDER &gt;</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_u_c_s1903.html">UCS1903&lt; DATA_PIN, RGB_ORDER &gt;</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_u_c_s1903_b.html">UCS1903B&lt; DATA_PIN, RGB_ORDER &gt;</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_u_c_s1904.html">UCS1904&lt; DATA_PIN, RGB_ORDER &gt;</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_w_s2812.html">WS2812&lt; DATA_PIN, RGB_ORDER &gt;</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_w_s2812_b.html">WS2812B&lt; DATA_PIN, RGB_ORDER &gt;</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_w_s2811.html">WS2811&lt; DATA_PIN, RGB_ORDER &gt;</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_a_p_a104.html">APA104&lt; DATA_PIN, RGB_ORDER &gt;</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_w_s2811__400.html">WS2811_400&lt; DATA_PIN, RGB_ORDER &gt;</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_g_w6205.html">GW6205&lt; DATA_PIN, RGB_ORDER &gt;</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_g_w6205__400.html">GW6205_400&lt; DATA_PIN, RGB_ORDER &gt;</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_p_d1886.html">LPD1886&lt; DATA_PIN, RGB_ORDER &gt;</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_m_x_s_i_m_p_l_e.html">DMXSIMPLE&lt; DATA_PIN, RGB_ORDER &gt;</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_m_x_s_e_r_i_a_l.html">DMXSERIAL&lt; RGB_ORDER &gt;</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_fast_l_e_d.html">CFastLED</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">High level controller interface for FastLED. <a href="class_c_fast_l_e_d.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
+Enumerations</h2></td></tr>
+<tr class="memitem:ac06549dc4a351e2c8f1dda8ae81f7926"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac06549dc4a351e2c8f1dda8ae81f7926"></a>enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_fast_l_e_d_8h.html#ac06549dc4a351e2c8f1dda8ae81f7926">ESPIChipsets</a> { <br />
+&#160;&#160;<b>LPD8806</b>,
+<b>WS2801</b>,
+<b>WS2803</b>,
+<b>SM16716</b>,
+<br />
+&#160;&#160;<b>P9813</b>,
+<b>APA102</b>,
+<b>DOTSTAR</b>
+<br />
+ }</td></tr>
+<tr class="memdesc:ac06549dc4a351e2c8f1dda8ae81f7926"><td class="mdescLeft">&#160;</td><td class="mdescRight">definitions for the spi chipset constants <br /></td></tr>
+<tr class="separator:ac06549dc4a351e2c8f1dda8ae81f7926"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac8839f06bbcecd0dc5bde0a94510a657"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac8839f06bbcecd0dc5bde0a94510a657"></a>enum &#160;</td><td class="memItemRight" valign="bottom"><b>ESM</b> { <b>SMART_MATRIX</b>
+ }</td></tr>
+<tr class="separator:ac8839f06bbcecd0dc5bde0a94510a657"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a69ae16731cd4ff30f81793033758d59c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a69ae16731cd4ff30f81793033758d59c"></a>enum &#160;</td><td class="memItemRight" valign="bottom"><b>OWS2811</b> { <b>OCTOWS2811</b>,
+<b>OCTOWS2811_400</b>
+ }</td></tr>
+<tr class="separator:a69ae16731cd4ff30f81793033758d59c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:adcf22542128a12d8c3c304777422c7cc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adcf22542128a12d8c3c304777422c7cc"></a>enum &#160;</td><td class="memItemRight" valign="bottom"><b>EBlockChipsets</b> { <br />
+&#160;&#160;<b>WS2811_PORTA</b>,
+<b>WS2811_400_PORTA</b>,
+<b>WS2811_PORTB</b>,
+<b>WS2811_400_PORTB</b>,
+<br />
+&#160;&#160;<b>WS2811_PORTC</b>,
+<b>WS2811_400_PORTC</b>,
+<b>WS2811_PORTD</b>,
+<b>WS2811_400_PORTD</b>,
+<br />
+&#160;&#160;<b>WS2811_PORTDC</b>,
+<b>WS2811_400_PORTDC</b>
+<br />
+ }</td></tr>
+<tr class="separator:adcf22542128a12d8c3c304777422c7cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
+Variables</h2></td></tr>
+<tr class="memitem:a7077a6a69b1339a4c04f4bb9ecc0ad3f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7077a6a69b1339a4c04f4bb9ecc0ad3f"></a>
+<a class="el" href="class_c_fast_l_e_d.html">CFastLED</a>&#160;</td><td class="memItemRight" valign="bottom"><b>FastLED</b></td></tr>
+<tr class="separator:a7077a6a69b1339a4c04f4bb9ecc0ad3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>central include file for FastLED, defines the <a class="el" href="class_c_fast_l_e_d.html" title="High level controller interface for FastLED. ">CFastLED</a> class/object </p>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.9.1
+</small></address>
+</body>
+</html>
diff --git a/docs/3.1/_fast_l_e_d_8h_source.html b/docs/3.1/_fast_l_e_d_8h_source.html
index 01a3ee99..9a80adee 100644
--- a/docs/3.1/_fast_l_e_d_8h_source.html
+++ b/docs/3.1/_fast_l_e_d_8h_source.html
@@ -87,11 +87,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="title">FastLED.h</div> </div>
</div><!--header-->
<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#ifndef __INC_FASTSPI_LED2_H</span></div>
+<a href="_fast_l_e_d_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#ifndef __INC_FASTSPI_LED2_H</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="preprocessor">#define __INC_FASTSPI_LED2_H</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;</div>
-<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// #define NO_CORRECTION 1</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// #define NO_DITHERING 1</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;</div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="preprocessor">#define xstr(s) str(s)</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#define str(s) #s</span></div>
@@ -119,32 +117,32 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#include &lt;stdint.h&gt;</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div>
-<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;fastled_config.h&quot;</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="fastled__config_8h.html">fastled_config.h</a>&quot;</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &quot;led_sysdefs.h&quot;</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="bitswap_8h.html">bitswap.h</a>&quot;</span></div>
-<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#include &quot;controller.h&quot;</span></div>
-<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#include &quot;fastpin.h&quot;</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="controller_8h.html">controller.h</a>&quot;</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="fastpin_8h.html">fastpin.h</a>&quot;</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#include &quot;fastspi_types.h&quot;</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#include &quot;./dmx.h&quot;</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#include &quot;platforms.h&quot;</span></div>
-<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#include &quot;fastled_progmem.h&quot;</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="fastled__progmem_8h.html">fastled_progmem.h</a>&quot;</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor">#include &quot;lib8tion.h&quot;</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor">#include &quot;hsv2rgb.h&quot;</span></div>
-<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="preprocessor">#include &quot;colorutils.h&quot;</span></div>
-<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="preprocessor">#include &quot;colorpalettes.h&quot;</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="colorutils_8h.html">colorutils.h</a>&quot;</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="colorpalettes_8h.html">colorpalettes.h</a>&quot;</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="noise_8h.html">noise.h</a>&quot;</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="preprocessor">#include &quot;power_mgt.h&quot;</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="preprocessor">#include &quot;fastspi.h&quot;</span></div>
-<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="preprocessor">#include &quot;chipsets.h&quot;</span></div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="chipsets_8h.html">chipsets.h</a>&quot;</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;FASTLED_NAMESPACE_BEGIN</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div>
-<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="keyword">enum</span> ESPIChipsets {</div>
+<div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="_fast_l_e_d_8h.html#ac06549dc4a351e2c8f1dda8ae81f7926"> 59</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="_fast_l_e_d_8h.html#ac06549dc4a351e2c8f1dda8ae81f7926">ESPIChipsets</a> {</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; LPD8806,</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; WS2801,</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; WS2803,</div>
@@ -443,38 +441,42 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160;</div>
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="ttc" id="bitswap_8h_html"><div class="ttname"><a href="bitswap_8h.html">bitswap.h</a></div><div class="ttdoc">Functions for rotating bits/bytes. </div></div>
-<div class="ttc" id="class_u_c_s1903_controller400_khz_html"><div class="ttname"><a href="class_u_c_s1903_controller400_khz.html">UCS1903Controller400Khz</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:437</div></div>
+<div class="ttc" id="class_u_c_s1903_controller400_khz_html"><div class="ttname"><a href="class_u_c_s1903_controller400_khz.html">UCS1903Controller400Khz</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:440</div></div>
<div class="ttc" id="class_c_fast_l_e_d_html_ac4dff92f45048399edb0812a02ab9d96"><div class="ttname"><a href="class_c_fast_l_e_d.html#ac4dff92f45048399edb0812a02ab9d96">CFastLED::addLeds</a></div><div class="ttdeci">static CLEDController &amp; addLeds(struct CRGB *data, int nLedsOrOffset, int nLedsIfOffset=0)</div><div class="ttdoc">Add a 3rd party library based CLEDController instance to the world. </div><div class="ttdef"><b>Definition:</b> FastLED.h:292</div></div>
<div class="ttc" id="class_w_s2812_html"><div class="ttname"><a href="class_w_s2812.html">WS2812</a></div><div class="ttdef"><b>Definition:</b> FastLED.h:81</div></div>
<div class="ttc" id="struct_c_r_g_b_html"><div class="ttname"><a href="struct_c_r_g_b.html">CRGB</a></div><div class="ttdoc">Representation of an RGB pixel (Red, Green, Blue) </div><div class="ttdef"><b>Definition:</b> pixeltypes.h:88</div></div>
<div class="ttc" id="class_c_fast_l_e_d_html_a646128b7d8c14b5020b285dbc8bc713b"><div class="ttname"><a href="class_c_fast_l_e_d.html#a646128b7d8c14b5020b285dbc8bc713b">CFastLED::operator[]</a></div><div class="ttdeci">CLEDController &amp; operator[](int x)</div><div class="ttdoc">Get a reference to a registered controller. </div><div class="ttdef"><b>Definition:</b> FastLED.cpp:66</div></div>
<div class="ttc" id="class_l_p_d1886_html"><div class="ttname"><a href="class_l_p_d1886.html">LPD1886</a></div><div class="ttdef"><b>Definition:</b> FastLED.h:88</div></div>
-<div class="ttc" id="class_u_c_s1904_controller800_khz_html"><div class="ttname"><a href="class_u_c_s1904_controller800_khz.html">UCS1904Controller800Khz</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:443</div></div>
+<div class="ttc" id="class_u_c_s1904_controller800_khz_html"><div class="ttname"><a href="class_u_c_s1904_controller800_khz.html">UCS1904Controller800Khz</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:446</div></div>
<div class="ttc" id="class_g_w6205_html"><div class="ttname"><a href="class_g_w6205.html">GW6205</a></div><div class="ttdef"><b>Definition:</b> FastLED.h:86</div></div>
-<div class="ttc" id="class_c_l_e_d_controller_html"><div class="ttname"><a href="class_c_l_e_d_controller.html">CLEDController</a></div><div class="ttdoc">Base definition for an LED controller. </div><div class="ttdef"><b>Definition:</b> controller.h:34</div></div>
+<div class="ttc" id="class_c_l_e_d_controller_html"><div class="ttname"><a href="class_c_l_e_d_controller.html">CLEDController</a></div><div class="ttdoc">Base definition for an LED controller. </div><div class="ttdef"><b>Definition:</b> controller.h:37</div></div>
<div class="ttc" id="class_c_fast_l_e_d_html_a18fba22754d2a1a206fc5db8d24a92d0"><div class="ttname"><a href="class_c_fast_l_e_d.html#a18fba22754d2a1a206fc5db8d24a92d0">CFastLED::size</a></div><div class="ttdeci">int size()</div><div class="ttdoc">Get the number of leds in the first controller. </div><div class="ttdef"><b>Definition:</b> FastLED.h:466</div></div>
-<div class="ttc" id="class_w_s2811_controller800_khz_html"><div class="ttname"><a href="class_w_s2811_controller800_khz.html">WS2811Controller800Khz</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:431</div></div>
+<div class="ttc" id="fastled__config_8h_html"><div class="ttname"><a href="fastled__config_8h.html">fastled_config.h</a></div><div class="ttdoc">contains definitions that can be used to configure FastLED at compile time </div></div>
+<div class="ttc" id="class_w_s2811_controller800_khz_html"><div class="ttname"><a href="class_w_s2811_controller800_khz.html">WS2811Controller800Khz</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:434</div></div>
<div class="ttc" id="class_c_fast_l_e_d_html_ac2615781ec12e025fb17cc0e66281716"><div class="ttname"><a href="class_c_fast_l_e_d.html#ac2615781ec12e025fb17cc0e66281716">CFastLED::getBrightness</a></div><div class="ttdeci">uint8_t getBrightness()</div><div class="ttdoc">Get the current global brightness setting. </div><div class="ttdef"><b>Definition:</b> FastLED.h:392</div></div>
-<div class="ttc" id="class_l_p_d8806_controller_html"><div class="ttname"><a href="class_l_p_d8806_controller.html">LPD8806Controller</a></div><div class="ttdoc">LPD8806 controller class. </div><div class="ttdef"><b>Definition:</b> chipsets.h:26</div></div>
-<div class="ttc" id="class_u_c_s1903_b_controller800_khz_html"><div class="ttname"><a href="class_u_c_s1903_b_controller800_khz.html">UCS1903BController800Khz</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:440</div></div>
-<div class="ttc" id="class_g_w6205_controller800_khz_html"><div class="ttname"><a href="class_g_w6205_controller800_khz.html">GW6205Controller800Khz</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:458</div></div>
+<div class="ttc" id="colorpalettes_8h_html"><div class="ttname"><a href="colorpalettes_8h.html">colorpalettes.h</a></div><div class="ttdoc">contains definitions for the predefined color palettes supplied by FastLED. </div></div>
+<div class="ttc" id="class_l_p_d8806_controller_html"><div class="ttname"><a href="class_l_p_d8806_controller.html">LPD8806Controller</a></div><div class="ttdoc">LPD8806 controller class. </div><div class="ttdef"><b>Definition:</b> chipsets.h:29</div></div>
+<div class="ttc" id="fastpin_8h_html"><div class="ttname"><a href="fastpin_8h.html">fastpin.h</a></div><div class="ttdoc">Class base definitions for defining fast pin access. </div></div>
+<div class="ttc" id="class_u_c_s1903_b_controller800_khz_html"><div class="ttname"><a href="class_u_c_s1903_b_controller800_khz.html">UCS1903BController800Khz</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:443</div></div>
+<div class="ttc" id="class_g_w6205_controller800_khz_html"><div class="ttname"><a href="class_g_w6205_controller800_khz.html">GW6205Controller800Khz</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:461</div></div>
<div class="ttc" id="class_c_fast_l_e_d_html_ae5730545ea18b1f5228172f9d246beb6"><div class="ttname"><a href="class_c_fast_l_e_d.html#ae5730545ea18b1f5228172f9d246beb6">CFastLED::count</a></div><div class="ttdeci">int count()</div><div class="ttdoc">Get how many controllers have been registered. </div><div class="ttdef"><b>Definition:</b> FastLED.cpp:56</div></div>
<div class="ttc" id="class_c_fast_l_e_d_html"><div class="ttname"><a href="class_c_fast_l_e_d.html">CFastLED</a></div><div class="ttdoc">High level controller interface for FastLED. </div><div class="ttdef"><b>Definition:</b> FastLED.h:130</div></div>
<div class="ttc" id="class_d_m_x_simple_controller_html"><div class="ttname"><a href="class_d_m_x_simple_controller.html">DMXSimpleController</a></div><div class="ttdef"><b>Definition:</b> dmx.h:14</div></div>
<div class="ttc" id="class_c_fast_l_e_d_html_aa8ec7c8ab7c8aed4d85b9c3d6d5feaa9"><div class="ttname"><a href="class_c_fast_l_e_d.html#aa8ec7c8ab7c8aed4d85b9c3d6d5feaa9">CFastLED::addLeds</a></div><div class="ttdeci">static CLEDController &amp; addLeds(struct CRGB *data, int nLedsOrOffset, int nLedsIfOffset=0)</div><div class="ttdoc">Add a clockless (aka 3wire, also DMX) based CLEDController instance to the world. ...</div><div class="ttdef"><b>Definition:</b> FastLED.h:244</div></div>
-<div class="ttc" id="class_w_s2812_controller800_khz_html"><div class="ttname"><a href="class_w_s2812_controller800_khz.html">WS2812Controller800Khz</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:428</div></div>
-<div class="ttc" id="class_t_m1803_controller400_khz_html"><div class="ttname"><a href="class_t_m1803_controller400_khz.html">TM1803Controller400Khz</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:449</div></div>
+<div class="ttc" id="class_w_s2812_controller800_khz_html"><div class="ttname"><a href="class_w_s2812_controller800_khz.html">WS2812Controller800Khz</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:431</div></div>
+<div class="ttc" id="class_t_m1803_controller400_khz_html"><div class="ttname"><a href="class_t_m1803_controller400_khz.html">TM1803Controller400Khz</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:452</div></div>
<div class="ttc" id="class_u_c_s1903_html"><div class="ttname"><a href="class_u_c_s1903.html">UCS1903</a></div><div class="ttdef"><b>Definition:</b> FastLED.h:78</div></div>
-<div class="ttc" id="class_t_m1809_controller800_khz_html"><div class="ttname"><a href="class_t_m1809_controller800_khz.html">TM1809Controller800Khz</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:446</div></div>
+<div class="ttc" id="class_t_m1809_controller800_khz_html"><div class="ttname"><a href="class_t_m1809_controller800_khz.html">TM1809Controller800Khz</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:449</div></div>
<div class="ttc" id="class_t_m1809_html"><div class="ttname"><a href="class_t_m1809.html">TM1809</a></div><div class="ttdef"><b>Definition:</b> FastLED.h:75</div></div>
-<div class="ttc" id="class_w_s2801_controller_html"><div class="ttname"><a href="class_w_s2801_controller.html">WS2801Controller</a></div><div class="ttdoc">WS2801 controller class. </div><div class="ttdef"><b>Definition:</b> chipsets.h:100</div></div>
+<div class="ttc" id="class_w_s2801_controller_html"><div class="ttname"><a href="class_w_s2801_controller.html">WS2801Controller</a></div><div class="ttdoc">WS2801 controller class. </div><div class="ttdef"><b>Definition:</b> chipsets.h:103</div></div>
<div class="ttc" id="class_c_fast_l_e_d_html_a7ae5d3864df01101d82d242c123ffb36"><div class="ttname"><a href="class_c_fast_l_e_d.html#a7ae5d3864df01101d82d242c123ffb36">CFastLED::setDither</a></div><div class="ttdeci">void setDither(uint8_t ditherMode=BINARY_DITHER)</div><div class="ttdoc">Set the dithering mode. </div><div class="ttdef"><b>Definition:</b> FastLED.cpp:136</div></div>
<div class="ttc" id="class_c_fast_l_e_d_html_a28c2dfb0ec592db03f3063ade135f19f"><div class="ttname"><a href="class_c_fast_l_e_d.html#a28c2dfb0ec592db03f3063ade135f19f">CFastLED::setTemperature</a></div><div class="ttdeci">void setTemperature(const struct CRGB &amp;temp)</div><div class="ttdoc">Set a global color temperature. </div><div class="ttdef"><b>Definition:</b> FastLED.cpp:120</div></div>
<div class="ttc" id="class_c_fast_l_e_d_html_aa8c3ae3381e524ce30b181ffa23b83cd"><div class="ttname"><a href="class_c_fast_l_e_d.html#aa8c3ae3381e524ce30b181ffa23b83cd">CFastLED::getFPS</a></div><div class="ttdeci">uint16_t getFPS()</div><div class="ttdoc">Get the number of frames/second being written out. </div><div class="ttdef"><b>Definition:</b> FastLED.h:454</div></div>
<div class="ttc" id="class_d_m_x_s_i_m_p_l_e_html"><div class="ttname"><a href="class_d_m_x_s_i_m_p_l_e.html">DMXSIMPLE</a></div><div class="ttdef"><b>Definition:</b> FastLED.h:90</div></div>
-<div class="ttc" id="class_l_p_d1886_controller1250_khz_html"><div class="ttname"><a href="class_l_p_d1886_controller1250_khz.html">LPD1886Controller1250Khz</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:424</div></div>
+<div class="ttc" id="class_l_p_d1886_controller1250_khz_html"><div class="ttname"><a href="class_l_p_d1886_controller1250_khz.html">LPD1886Controller1250Khz</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:427</div></div>
<div class="ttc" id="class_c_fast_l_e_d_html_ae3c0a81b88fb64a65725cb2fed67f766"><div class="ttname"><a href="class_c_fast_l_e_d.html#ae3c0a81b88fb64a65725cb2fed67f766">CFastLED::leds</a></div><div class="ttdeci">CRGB * leds()</div><div class="ttdoc">Get a pointer to led data for the first controller. </div><div class="ttdef"><b>Definition:</b> FastLED.h:470</div></div>
-<div class="ttc" id="class_t_m1829_controller800_khz_html"><div class="ttname"><a href="class_t_m1829_controller800_khz.html">TM1829Controller800Khz</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:452</div></div>
+<div class="ttc" id="chipsets_8h_html"><div class="ttname"><a href="chipsets_8h.html">chipsets.h</a></div><div class="ttdoc">contains the bulk of the definitions for the various LED chipsets supported. </div></div>
+<div class="ttc" id="class_t_m1829_controller800_khz_html"><div class="ttname"><a href="class_t_m1829_controller800_khz.html">TM1829Controller800Khz</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:455</div></div>
<div class="ttc" id="class_t_m1829_html"><div class="ttname"><a href="class_t_m1829.html">TM1829</a></div><div class="ttdef"><b>Definition:</b> FastLED.h:74</div></div>
<div class="ttc" id="class_n_e_o_p_i_x_e_l_html"><div class="ttname"><a href="class_n_e_o_p_i_x_e_l.html">NEOPIXEL</a></div><div class="ttdef"><b>Definition:</b> FastLED.h:73</div></div>
<div class="ttc" id="class_c_fast_l_e_d_html_a3adb23ec5f919524928d576002cb45de"><div class="ttname"><a href="class_c_fast_l_e_d.html#a3adb23ec5f919524928d576002cb45de">CFastLED::show</a></div><div class="ttdeci">void show()</div><div class="ttdoc">Update all our controllers with the current led colors. </div><div class="ttdef"><b>Definition:</b> FastLED.h:399</div></div>
@@ -482,34 +484,38 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="ttc" id="class_c_fast_l_e_d_html_a7315b060d295bad5fbd32e50eaaf02b0"><div class="ttname"><a href="class_c_fast_l_e_d.html#a7315b060d295bad5fbd32e50eaaf02b0">CFastLED::showColor</a></div><div class="ttdeci">void showColor(const struct CRGB &amp;color, uint8_t scale)</div><div class="ttdoc">Set all leds on all controllers to the given color/scale. </div><div class="ttdef"><b>Definition:</b> FastLED.cpp:78</div></div>
<div class="ttc" id="class_w_s2812_b_html"><div class="ttname"><a href="class_w_s2812_b.html">WS2812B</a></div><div class="ttdef"><b>Definition:</b> FastLED.h:82</div></div>
<div class="ttc" id="class_u_c_s1904_html"><div class="ttname"><a href="class_u_c_s1904.html">UCS1904</a></div><div class="ttdef"><b>Definition:</b> FastLED.h:80</div></div>
-<div class="ttc" id="class_p9813_controller_html"><div class="ttname"><a href="class_p9813_controller.html">P9813Controller</a></div><div class="ttdoc">P9813 controller class. </div><div class="ttdef"><b>Definition:</b> chipsets.h:255</div></div>
+<div class="ttc" id="controller_8h_html"><div class="ttname"><a href="controller_8h.html">controller.h</a></div><div class="ttdoc">base definitions used by led controllers for writing out led data </div></div>
+<div class="ttc" id="class_p9813_controller_html"><div class="ttname"><a href="class_p9813_controller.html">P9813Controller</a></div><div class="ttdoc">P9813 controller class. </div><div class="ttdef"><b>Definition:</b> chipsets.h:258</div></div>
<div class="ttc" id="class_c_fast_l_e_d_html_afd7928d822589740af6e23b2d510cf3f"><div class="ttname"><a href="class_c_fast_l_e_d.html#afd7928d822589740af6e23b2d510cf3f">CFastLED::addLeds</a></div><div class="ttdeci">static CLEDController &amp; addLeds(CLEDController *pLed, struct CRGB *data, int nLedsOrOffset, int nLedsIfOffset=0)</div><div class="ttdoc">Add a CLEDController instance to the world. </div><div class="ttdef"><b>Definition:</b> FastLED.cpp:28</div></div>
<div class="ttc" id="class_d_m_x_s_e_r_i_a_l_html"><div class="ttname"><a href="class_d_m_x_s_e_r_i_a_l.html">DMXSERIAL</a></div><div class="ttdef"><b>Definition:</b> FastLED.h:93</div></div>
<div class="ttc" id="class_d_m_x_serial_controller_html"><div class="ttname"><a href="class_d_m_x_serial_controller.html">DMXSerialController</a></div><div class="ttdef"><b>Definition:</b> dmx.h:65</div></div>
<div class="ttc" id="class_c_fast_l_e_d_html_a730ba7d967e882b4b893689cf333b2eb"><div class="ttname"><a href="class_c_fast_l_e_d.html#a730ba7d967e882b4b893689cf333b2eb">CFastLED::setBrightness</a></div><div class="ttdeci">void setBrightness(uint8_t scale)</div><div class="ttdoc">Set the global brightness scaling. </div><div class="ttdef"><b>Definition:</b> FastLED.h:388</div></div>
-<div class="ttc" id="class_g_w6205_controller400_khz_html"><div class="ttname"><a href="class_g_w6205_controller400_khz.html">GW6205Controller400Khz</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:455</div></div>
+<div class="ttc" id="class_g_w6205_controller400_khz_html"><div class="ttname"><a href="class_g_w6205_controller400_khz.html">GW6205Controller400Khz</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:458</div></div>
<div class="ttc" id="noise_8h_html"><div class="ttname"><a href="noise_8h.html">noise.h</a></div><div class="ttdoc">Noise functions provided by the library. </div></div>
-<div class="ttc" id="class_w_s2811_controller400_khz_html"><div class="ttname"><a href="class_w_s2811_controller400_khz.html">WS2811Controller400Khz</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:434</div></div>
+<div class="ttc" id="colorutils_8h_html"><div class="ttname"><a href="colorutils_8h.html">colorutils.h</a></div><div class="ttdoc">functions for color fill, paletters, blending, and more </div></div>
+<div class="ttc" id="class_w_s2811_controller400_khz_html"><div class="ttname"><a href="class_w_s2811_controller400_khz.html">WS2811Controller400Khz</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:437</div></div>
<div class="ttc" id="class_c_fast_l_e_d_html_a570df74cf09e6215c3647333d2b479a9"><div class="ttname"><a href="class_c_fast_l_e_d.html#a570df74cf09e6215c3647333d2b479a9">CFastLED::showColor</a></div><div class="ttdeci">void showColor(const struct CRGB &amp;color)</div><div class="ttdoc">Set all leds on all controllers to the given color. </div><div class="ttdef"><b>Definition:</b> FastLED.h:415</div></div>
<div class="ttc" id="class_t_m1804_html"><div class="ttname"><a href="class_t_m1804.html">TM1804</a></div><div class="ttdef"><b>Definition:</b> FastLED.h:76</div></div>
<div class="ttc" id="class_u_c_s1903_b_html"><div class="ttname"><a href="class_u_c_s1903_b.html">UCS1903B</a></div><div class="ttdef"><b>Definition:</b> FastLED.h:79</div></div>
-<div class="ttc" id="class_a_p_a102_controller_html"><div class="ttname"><a href="class_a_p_a102_controller.html">APA102Controller</a></div><div class="ttdoc">APA102 controller class. </div><div class="ttdef"><b>Definition:</b> chipsets.h:156</div></div>
+<div class="ttc" id="class_a_p_a102_controller_html"><div class="ttname"><a href="class_a_p_a102_controller.html">APA102Controller</a></div><div class="ttdoc">APA102 controller class. </div><div class="ttdef"><b>Definition:</b> chipsets.h:159</div></div>
<div class="ttc" id="class_c_fast_l_e_d_html_a61d27e179c9b68bde89d220aebc0de32"><div class="ttname"><a href="class_c_fast_l_e_d.html#a61d27e179c9b68bde89d220aebc0de32">CFastLED::countFPS</a></div><div class="ttdeci">void countFPS(int nFrames=25)</div><div class="ttdoc">for debugging, will keep track of time between calls to countFPS, and every nFrames calls...</div><div class="ttdef"><b>Definition:</b> FastLED.cpp:189</div></div>
-<div class="ttc" id="class_w_s2803_controller_html"><div class="ttname"><a href="class_w_s2803_controller.html">WS2803Controller</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:142</div></div>
+<div class="ttc" id="class_w_s2803_controller_html"><div class="ttname"><a href="class_w_s2803_controller.html">WS2803Controller</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:145</div></div>
+<div class="ttc" id="_fast_l_e_d_8h_html_ac06549dc4a351e2c8f1dda8ae81f7926"><div class="ttname"><a href="_fast_l_e_d_8h.html#ac06549dc4a351e2c8f1dda8ae81f7926">ESPIChipsets</a></div><div class="ttdeci">ESPIChipsets</div><div class="ttdoc">definitions for the spi chipset constants </div><div class="ttdef"><b>Definition:</b> FastLED.h:59</div></div>
<div class="ttc" id="class_c_fast_l_e_d_html_a042989511cbc42390620bedc196ea956"><div class="ttname"><a href="class_c_fast_l_e_d.html#a042989511cbc42390620bedc196ea956">CFastLED::clear</a></div><div class="ttdeci">void clear(boolean writeData=false)</div><div class="ttdoc">clear the leds, optionally wiping the local array of data as well </div><div class="ttdef"><b>Definition:</b> FastLED.cpp:93</div></div>
<div class="ttc" id="class_w_s2811_html"><div class="ttname"><a href="class_w_s2811.html">WS2811</a></div><div class="ttdef"><b>Definition:</b> FastLED.h:83</div></div>
<div class="ttc" id="class_w_s2811__400_html"><div class="ttname"><a href="class_w_s2811__400.html">WS2811_400</a></div><div class="ttdef"><b>Definition:</b> FastLED.h:85</div></div>
<div class="ttc" id="class_a_p_a104_html"><div class="ttname"><a href="class_a_p_a104.html">APA104</a></div><div class="ttdef"><b>Definition:</b> FastLED.h:84</div></div>
<div class="ttc" id="class_c_fast_l_e_d_html_ac4f613f1b3e618528dca3189df88ce80"><div class="ttname"><a href="class_c_fast_l_e_d.html#ac4f613f1b3e618528dca3189df88ce80">CFastLED::clearData</a></div><div class="ttdeci">void clearData()</div><div class="ttdoc">clear out the local data array </div><div class="ttdef"><b>Definition:</b> FastLED.cpp:100</div></div>
+<div class="ttc" id="fastled__progmem_8h_html"><div class="ttname"><a href="fastled__progmem_8h.html">fastled_progmem.h</a></div><div class="ttdoc">wrapper definitions to allow seamless use of PROGMEM in environmens that have it </div></div>
<div class="ttc" id="class_c_fast_l_e_d_html_a1f39e8404db214bbd6a776f52a77d8b1"><div class="ttname"><a href="class_c_fast_l_e_d.html#a1f39e8404db214bbd6a776f52a77d8b1">CFastLED::setMaxRefreshRate</a></div><div class="ttdeci">void setMaxRefreshRate(uint16_t refresh, bool constrain=false)</div><div class="ttdoc">Set the maximum refresh rate. </div><div class="ttdef"><b>Definition:</b> FastLED.cpp:202</div></div>
<div class="ttc" id="class_c_fast_l_e_d_html_a6819ff831058a710d4582dfc09817202"><div class="ttname"><a href="class_c_fast_l_e_d.html#a6819ff831058a710d4582dfc09817202">CFastLED::delay</a></div><div class="ttdeci">void delay(unsigned long ms)</div><div class="ttdoc">Delay for the given number of milliseconds. </div><div class="ttdef"><b>Definition:</b> FastLED.cpp:108</div></div>
-<div class="ttc" id="class_s_m16716_controller_html"><div class="ttname"><a href="class_s_m16716_controller.html">SM16716Controller</a></div><div class="ttdoc">SM16716 controller class. </div><div class="ttdef"><b>Definition:</b> chipsets.h:345</div></div>
+<div class="ttc" id="class_s_m16716_controller_html"><div class="ttname"><a href="class_s_m16716_controller.html">SM16716Controller</a></div><div class="ttdoc">SM16716 controller class. </div><div class="ttdef"><b>Definition:</b> chipsets.h:348</div></div>
<div class="ttc" id="class_t_m1803_html"><div class="ttname"><a href="class_t_m1803.html">TM1803</a></div><div class="ttdef"><b>Definition:</b> FastLED.h:77</div></div>
<div class="ttc" id="class_g_w6205__400_html"><div class="ttname"><a href="class_g_w6205__400.html">GW6205_400</a></div><div class="ttdef"><b>Definition:</b> FastLED.h:87</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/annotated.html b/docs/3.1/annotated.html
index b0f21cfc..2ec50015 100644
--- a/docs/3.1/annotated.html
+++ b/docs/3.1/annotated.html
@@ -170,7 +170,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/bitswap_8h.html b/docs/3.1/bitswap_8h.html
index b29cd601..e5fc573c 100644
--- a/docs/3.1/bitswap_8h.html
+++ b/docs/3.1/bitswap_8h.html
@@ -120,7 +120,7 @@ Functions</h2></td></tr>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/bitswap_8h_source.html b/docs/3.1/bitswap_8h_source.html
index 5c24b428..f216bd49 100644
--- a/docs/3.1/bitswap_8h_source.html
+++ b/docs/3.1/bitswap_8h_source.html
@@ -346,12 +346,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="ttc" id="unionjust8bits_html"><div class="ttname"><a href="unionjust8bits.html">just8bits</a></div><div class="ttdoc">structure representing 8 bits of access </div><div class="ttdef"><b>Definition:</b> bitswap.h:14</div></div>
<div class="ttc" id="structsub4_html"><div class="ttname"><a href="structsub4.html">sub4</a></div><div class="ttdoc">structure representing 32 bits of access </div><div class="ttdef"><b>Definition:</b> bitswap.h:29</div></div>
-<div class="ttc" id="group___bitswap_html_ga01396a2e40133293c3badab349ac99f0"><div class="ttname"><a href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a></div><div class="ttdeci">__attribute__((always_inline)) inline void swapbits8(bitswap_type in</div><div class="ttdoc">Do an 8byte by 8bit rotation. </div><div class="ttdef"><b>Definition:</b> fastled_delay.h:82</div></div>
+<div class="ttc" id="group___bitswap_html_ga01396a2e40133293c3badab349ac99f0"><div class="ttname"><a href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a></div><div class="ttdeci">__attribute__((always_inline)) inline void swapbits8(bitswap_type in</div><div class="ttdoc">Do an 8byte by 8bit rotation. </div><div class="ttdef"><b>Definition:</b> fastled_delay.h:85</div></div>
<div class="ttc" id="unionbitswap__type_html"><div class="ttname"><a href="unionbitswap__type.html">bitswap_type</a></div><div class="ttdoc">union containing a full 8 bytes to swap the bit orientation on </div><div class="ttdef"><b>Definition:</b> bitswap.h:65</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:46 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/chipsets_8h.html b/docs/3.1/chipsets_8h.html
new file mode 100644
index 00000000..3c4fcc47
--- /dev/null
+++ b/docs/3.1/chipsets_8h.html
@@ -0,0 +1,178 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.9.1"/>
+<title>FastLED: chipsets.h File Reference</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="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { init_search(); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">FastLED
+ &#160;<span id="projectnumber">3.1</span>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.9.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</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>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Classes</a> </div>
+ <div class="headertitle">
+<div class="title">chipsets.h File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>contains the bulk of the definitions for the various LED chipsets supported.
+<a href="#details">More...</a></p>
+
+<p><a href="chipsets_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_p_d8806_controller.html">LPD8806Controller&lt; DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED &gt;</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">LPD8806 controller class. <a href="class_l_p_d8806_controller.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_w_s2801_controller.html">WS2801Controller&lt; DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED &gt;</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">WS2801 controller class. <a href="class_w_s2801_controller.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_w_s2803_controller.html">WS2803Controller&lt; DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED &gt;</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_a_p_a102_controller.html">APA102Controller&lt; DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED &gt;</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">APA102 controller class. <a href="class_a_p_a102_controller.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p9813_controller.html">P9813Controller&lt; DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED &gt;</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">P9813 controller class. <a href="class_p9813_controller.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_m16716_controller.html">SM16716Controller&lt; DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED &gt;</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">SM16716 controller class. <a href="class_s_m16716_controller.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_p_d1886_controller1250_khz.html">LPD1886Controller1250Khz&lt; DATA_PIN, RGB_ORDER &gt;</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_w_s2812_controller800_khz.html">WS2812Controller800Khz&lt; DATA_PIN, RGB_ORDER &gt;</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_w_s2811_controller800_khz.html">WS2811Controller800Khz&lt; DATA_PIN, RGB_ORDER &gt;</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_w_s2811_controller400_khz.html">WS2811Controller400Khz&lt; DATA_PIN, RGB_ORDER &gt;</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_u_c_s1903_controller400_khz.html">UCS1903Controller400Khz&lt; DATA_PIN, RGB_ORDER &gt;</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_u_c_s1903_b_controller800_khz.html">UCS1903BController800Khz&lt; DATA_PIN, RGB_ORDER &gt;</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_u_c_s1904_controller800_khz.html">UCS1904Controller800Khz&lt; DATA_PIN, RGB_ORDER &gt;</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_m1809_controller800_khz.html">TM1809Controller800Khz&lt; DATA_PIN, RGB_ORDER &gt;</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_m1803_controller400_khz.html">TM1803Controller400Khz&lt; DATA_PIN, RGB_ORDER &gt;</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_m1829_controller800_khz.html">TM1829Controller800Khz&lt; DATA_PIN, RGB_ORDER &gt;</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_g_w6205_controller400_khz.html">GW6205Controller400Khz&lt; DATA_PIN, RGB_ORDER &gt;</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_g_w6205_controller800_khz.html">GW6205Controller800Khz&lt; DATA_PIN, RGB_ORDER &gt;</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_g_w6205_controller400_khz.html">GW6205Controller400Khz&lt; DATA_PIN, RGB_ORDER &gt;</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_g_w6205_controller800_khz.html">GW6205Controller800Khz&lt; DATA_PIN, RGB_ORDER &gt;</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_u_c_s1903_controller400_khz.html">UCS1903Controller400Khz&lt; DATA_PIN, RGB_ORDER &gt;</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_u_c_s1903_b_controller800_khz.html">UCS1903BController800Khz&lt; DATA_PIN, RGB_ORDER &gt;</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_u_c_s1904_controller800_khz.html">UCS1904Controller800Khz&lt; DATA_PIN, RGB_ORDER &gt;</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_m1809_controller800_khz.html">TM1809Controller800Khz&lt; DATA_PIN, RGB_ORDER &gt;</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_w_s2811_controller800_khz.html">WS2811Controller800Khz&lt; DATA_PIN, RGB_ORDER &gt;</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_w_s2812_controller800_khz.html">WS2812Controller800Khz&lt; DATA_PIN, RGB_ORDER &gt;</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_w_s2811_controller400_khz.html">WS2811Controller400Khz&lt; DATA_PIN, RGB_ORDER &gt;</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_m1803_controller400_khz.html">TM1803Controller400Khz&lt; DATA_PIN, RGB_ORDER &gt;</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_m1829_controller800_khz.html">TM1829Controller800Khz&lt; DATA_PIN, RGB_ORDER &gt;</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_m1829_controller1600_khz.html">TM1829Controller1600Khz&lt; DATA_PIN, RGB_ORDER &gt;</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_p_d1886_controller1250_khz.html">LPD1886Controller1250Khz&lt; DATA_PIN, RGB_ORDER &gt;</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>contains the bulk of the definitions for the various LED chipsets supported. </p>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.9.1
+</small></address>
+</body>
+</html>
diff --git a/docs/3.1/chipsets_8h_source.html b/docs/3.1/chipsets_8h_source.html
index cb77b85e..760db1a2 100644
--- a/docs/3.1/chipsets_8h_source.html
+++ b/docs/3.1/chipsets_8h_source.html
@@ -87,560 +87,561 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="title">chipsets.h</div> </div>
</div><!--header-->
<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#ifndef __INC_CHIPSETS_H</span></div>
+<a href="chipsets_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#ifndef __INC_CHIPSETS_H</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="preprocessor">#define __INC_CHIPSETS_H</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;</div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#include &quot;pixeltypes.h&quot;</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;</div>
-<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;FASTLED_NAMESPACE_BEGIN</div>
-<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;</div>
-<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// LPD8806 controller class - takes data/clock/select pin values (N.B. should take an SPI definition?)</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, u<span class="keywordtype">int</span>8_t CLOCK_PIN, EOrder RGB_ORDER = RGB, u<span class="keywordtype">int</span>8_t SPI_SPEED = DATA_RATE_MHZ(12) &gt;</div>
-<div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="class_l_p_d8806_controller.html"> 26</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_l_p_d8806_controller.html">LPD8806Controller</a> : <span class="keyword">public</span> <a class="code" href="class_c_l_e_d_controller.html">CLEDController</a> {</div>
-<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keyword">typedef</span> <a class="code" href="class_s_p_i_output.html">SPIOutput&lt;DATA_PIN, CLOCK_PIN, SPI_SPEED&gt;</a> <a class="code" href="class_s_p_i_output.html">SPI</a>;</div>
-<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div>
-<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keyword">class </span>LPD8806_ADJUST {</div>
-<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="comment">// LPD8806 spec wants the high bit of every rgb data byte sent out to be set.</span></div>
-<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a>((always_inline)) <span class="keyword">inline</span> <span class="keyword">static</span> uint8_t adjust(<span class="keyword">register</span> uint8_t data) { <span class="keywordflow">return</span> ((data&gt;&gt;1) | 0x80) + ((data &amp;&amp; (data&lt;254)) &amp; 0x01); }</div>
-<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a>((always_inline)) <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> postBlock(<span class="keywordtype">int</span> len) {</div>
-<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; SPI::writeBytesValueRaw(0, ((len*3+63)&gt;&gt;6));</div>
-<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; }</div>
-<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div>
-<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; };</div>
-<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div>
-<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; SPI mSPI;</div>
-<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordtype">int</span> mClearedLeds;</div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;</div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;FASTLED_NAMESPACE_BEGIN</div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// LPD8806 controller class - takes data/clock/select pin values (N.B. should take an SPI definition?)</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, u<span class="keywordtype">int</span>8_t CLOCK_PIN, EOrder RGB_ORDER = RGB, u<span class="keywordtype">int</span>8_t SPI_SPEED = DATA_RATE_MHZ(12) &gt;</div>
+<div class="line"><a name="l00029"></a><span class="lineno"><a class="line" href="class_l_p_d8806_controller.html"> 29</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_l_p_d8806_controller.html">LPD8806Controller</a> : <span class="keyword">public</span> <a class="code" href="class_c_l_e_d_controller.html">CLEDController</a> {</div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">typedef</span> <a class="code" href="class_s_p_i_output.html">SPIOutput&lt;DATA_PIN, CLOCK_PIN, SPI_SPEED&gt;</a> <a class="code" href="class_s_p_i_output.html">SPI</a>;</div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keyword">class </span>LPD8806_ADJUST {</div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="comment">// LPD8806 spec wants the high bit of every rgb data byte sent out to be set.</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a>((always_inline)) <span class="keyword">inline</span> <span class="keyword">static</span> uint8_t adjust(<span class="keyword">register</span> uint8_t data) { <span class="keywordflow">return</span> ((data&gt;&gt;1) | 0x80) + ((data &amp;&amp; (data&lt;254)) &amp; 0x01); }</div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a>((always_inline)) <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> postBlock(<span class="keywordtype">int</span> len) {</div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; SPI::writeBytesValueRaw(0, ((len*3+63)&gt;&gt;6));</div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; }</div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; };</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div>
-<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordtype">void</span> checkClear(<span class="keywordtype">int</span> nLeds) {</div>
-<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">if</span>(nLeds &gt; mClearedLeds) {</div>
-<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; clearLine(nLeds);</div>
-<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; mClearedLeds = nLeds;</div>
-<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; }</div>
-<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; }</div>
-<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div>
-<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordtype">void</span> clearLine(<span class="keywordtype">int</span> nLeds) {</div>
-<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordtype">int</span> n = ((nLeds*3 + 63) &gt;&gt; 6);</div>
-<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; mSPI.writeBytesValue(0, n);</div>
-<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; }</div>
-<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <a class="code" href="class_l_p_d8806_controller.html">LPD8806Controller</a>() {}</div>
-<div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="class_l_p_d8806_controller.html#abe5be69b938d0709cfc77fcf57c75608"> 55</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_l_p_d8806_controller.html#abe5be69b938d0709cfc77fcf57c75608">init</a>() {</div>
-<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; mSPI.init();</div>
-<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; mClearedLeds = 0;</div>
-<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; }</div>
-<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div>
-<div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="class_l_p_d8806_controller.html#a7da0ecf67004256c83131406b2f4889e"> 60</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_l_p_d8806_controller.html#a7da0ecf67004256c83131406b2f4889e">clearLeds</a>(<span class="keywordtype">int</span> nLeds) {</div>
-<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; mSPI.select();</div>
-<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; mSPI.writeBytesValueRaw(0x80, nLeds * 3);</div>
-<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; mSPI.writeBytesValueRaw(0, ((nLeds*3+63)&gt;&gt;6));</div>
-<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; mSPI.waitFully();</div>
-<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; mSPI.release();</div>
-<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</div>
-<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div>
-<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="keyword">protected</span>:</div>
-<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div>
-<div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="class_l_p_d8806_controller.html#a4f6471eddcfe5445502b02f1f3179259"> 70</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_l_p_d8806_controller.html#a4f6471eddcfe5445502b02f1f3179259">showColor</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a> &amp; data, <span class="keywordtype">int</span> nLeds, <a class="code" href="struct_c_r_g_b.html">CRGB</a> scale) {</div>
-<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; mSPI.template writePixels&lt;0, LPD8806_ADJUST, RGB_ORDER&gt;(<a class="code" href="struct_pixel_controller.html">PixelController&lt;RGB_ORDER&gt;</a>(data, nLeds, scale, <a class="code" href="class_c_l_e_d_controller.html#a676f705adf93898739a405b85150a3e7">getDither</a>()));</div>
-<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; }</div>
-<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div>
-<div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="class_l_p_d8806_controller.html#a31d4e01a823682556e26748193f722e5"> 74</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_l_p_d8806_controller.html#a31d4e01a823682556e26748193f722e5">show</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a> *data, <span class="keywordtype">int</span> nLeds, <a class="code" href="struct_c_r_g_b.html">CRGB</a> scale) {</div>
-<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="comment">// TODO rgb-ize scale</span></div>
-<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; mSPI.template writePixels&lt;0, LPD8806_ADJUST, RGB_ORDER&gt;(<a class="code" href="struct_pixel_controller.html">PixelController&lt;RGB_ORDER&gt;</a>(data, nLeds, scale, <a class="code" href="class_c_l_e_d_controller.html#a676f705adf93898739a405b85150a3e7">getDither</a>()));</div>
-<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; }</div>
-<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;</div>
-<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="preprocessor">#ifdef SUPPORT_ARGB</span></div>
-<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_l_p_d8806_controller.html#a31d4e01a823682556e26748193f722e5">show</a>(<span class="keyword">const</span> <span class="keyword">struct</span> CARGB *data, <span class="keywordtype">int</span> nLeds, uint8_t scale) {</div>
-<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; checkClear(nLeds);</div>
-<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; mSPI.template writePixels&lt;0, LPD8806_ADJUST, RGB_ORDER&gt;(<a class="code" href="struct_pixel_controller.html">PixelController&lt;RGB_ORDER&gt;</a>(data, nLeds, scale, <a class="code" href="class_c_l_e_d_controller.html#a676f705adf93898739a405b85150a3e7">getDither</a>()));</div>
-<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; }</div>
-<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;};</div>
-<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div>
-<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;</div>
-<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="comment">// WS2801 definition - takes data/clock/select pin values (N.B. should take an SPI definition?)</span></div>
-<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, u<span class="keywordtype">int</span>8_t CLOCK_PIN, EOrder RGB_ORDER = RGB, u<span class="keywordtype">int</span>8_t SPI_SPEED = DATA_RATE_MHZ(1)&gt;</div>
-<div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="class_w_s2801_controller.html"> 100</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_w_s2801_controller.html">WS2801Controller</a> : <span class="keyword">public</span> <a class="code" href="class_c_l_e_d_controller.html">CLEDController</a> {</div>
-<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keyword">typedef</span> <a class="code" href="class_s_p_i_output.html">SPIOutput&lt;DATA_PIN, CLOCK_PIN, SPI_SPEED&gt;</a> <a class="code" href="class_s_p_i_output.html">SPI</a>;</div>
-<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; SPI mSPI;</div>
-<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <a class="code" href="class_c_min_wait.html">CMinWait&lt;1000&gt;</a> mWaitDelay;</div>
-<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <a class="code" href="class_w_s2801_controller.html">WS2801Controller</a>() {}</div>
-<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;</div>
-<div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="class_w_s2801_controller.html#ad6187b68bccb831cd5cab3cffbd6bdb4"> 107</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_w_s2801_controller.html#ad6187b68bccb831cd5cab3cffbd6bdb4">init</a>() {</div>
-<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; mSPI.init();</div>
-<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; mWaitDelay.mark();</div>
-<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; }</div>
-<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;</div>
-<div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="class_w_s2801_controller.html#a867d4249b5921e0d717c6c21038bb11c"> 112</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_w_s2801_controller.html#a867d4249b5921e0d717c6c21038bb11c">clearLeds</a>(<span class="keywordtype">int</span> nLeds) {</div>
-<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; mWaitDelay.wait();</div>
-<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; mSPI.writeBytesValue(0, nLeds*3);</div>
-<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; mWaitDelay.mark();</div>
-<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; }</div>
-<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;</div>
-<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="keyword">protected</span>:</div>
-<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;</div>
-<div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="class_w_s2801_controller.html#a615609bf16dd4c8fcc9ccf286ca52501"> 120</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_w_s2801_controller.html#a615609bf16dd4c8fcc9ccf286ca52501">showColor</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a> &amp; data, <span class="keywordtype">int</span> nLeds, <a class="code" href="struct_c_r_g_b.html">CRGB</a> scale) {</div>
-<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; mWaitDelay.wait();</div>
-<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; mSPI.template writePixels&lt;0, DATA_NOP, RGB_ORDER&gt;(<a class="code" href="struct_pixel_controller.html">PixelController&lt;RGB_ORDER&gt;</a>(data, nLeds, scale, <a class="code" href="class_c_l_e_d_controller.html#a676f705adf93898739a405b85150a3e7">getDither</a>()));</div>
-<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; mWaitDelay.mark();</div>
-<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; }</div>
-<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;</div>
-<div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="class_w_s2801_controller.html#a69fca4db95f5f60f27d7d1a8c7fa16a0"> 126</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_w_s2801_controller.html#a69fca4db95f5f60f27d7d1a8c7fa16a0">show</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a> *data, <span class="keywordtype">int</span> nLeds, <a class="code" href="struct_c_r_g_b.html">CRGB</a> scale) {</div>
-<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; mWaitDelay.wait();</div>
-<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; mSPI.template writePixels&lt;0, DATA_NOP, RGB_ORDER&gt;(<a class="code" href="struct_pixel_controller.html">PixelController&lt;RGB_ORDER&gt;</a>(data, nLeds, scale, <a class="code" href="class_c_l_e_d_controller.html#a676f705adf93898739a405b85150a3e7">getDither</a>()));</div>
-<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; mWaitDelay.mark();</div>
-<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; }</div>
-<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;</div>
-<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="preprocessor">#ifdef SUPPORT_ARGB</span></div>
-<div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="class_w_s2801_controller.html#a69fca4db95f5f60f27d7d1a8c7fa16a0"> 133</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_w_s2801_controller.html#a69fca4db95f5f60f27d7d1a8c7fa16a0">show</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a> *data, <span class="keywordtype">int</span> nLeds, <a class="code" href="struct_c_r_g_b.html">CRGB</a> scale) {</div>
-<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; mWaitDelay.wait();</div>
-<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; mSPI.template writePixels&lt;0, DATA_NOP, RGB_ORDER&gt;(<a class="code" href="struct_pixel_controller.html">PixelController&lt;RGB_ORDER&gt;</a>(data, nLeds, scale, <a class="code" href="class_c_l_e_d_controller.html#a676f705adf93898739a405b85150a3e7">getDither</a>()));</div>
-<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; mWaitDelay.mark();</div>
-<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; }</div>
-<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;};</div>
-<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;</div>
-<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, u<span class="keywordtype">int</span>8_t CLOCK_PIN, EOrder RGB_ORDER = RGB, u<span class="keywordtype">int</span>8_t SPI_SPEED = DATA_RATE_MHZ(25)&gt;</div>
-<div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="class_w_s2803_controller.html"> 142</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_w_s2803_controller.html">WS2803Controller</a> : <span class="keyword">public</span> <a class="code" href="class_w_s2801_controller.html">WS2801Controller</a>&lt;DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED&gt; {};</div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; SPI mSPI;</div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordtype">int</span> mClearedLeds;</div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordtype">void</span> checkClear(<span class="keywordtype">int</span> nLeds) {</div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">if</span>(nLeds &gt; mClearedLeds) {</div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; clearLine(nLeds);</div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; mClearedLeds = nLeds;</div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; }</div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; }</div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordtype">void</span> clearLine(<span class="keywordtype">int</span> nLeds) {</div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordtype">int</span> n = ((nLeds*3 + 63) &gt;&gt; 6);</div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; mSPI.writeBytesValue(0, n);</div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; }</div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <a class="code" href="class_l_p_d8806_controller.html">LPD8806Controller</a>() {}</div>
+<div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="class_l_p_d8806_controller.html#abe5be69b938d0709cfc77fcf57c75608"> 58</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_l_p_d8806_controller.html#abe5be69b938d0709cfc77fcf57c75608">init</a>() {</div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; mSPI.init();</div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; mClearedLeds = 0;</div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; }</div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div>
+<div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="class_l_p_d8806_controller.html#a7da0ecf67004256c83131406b2f4889e"> 63</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_l_p_d8806_controller.html#a7da0ecf67004256c83131406b2f4889e">clearLeds</a>(<span class="keywordtype">int</span> nLeds) {</div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; mSPI.select();</div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; mSPI.writeBytesValueRaw(0x80, nLeds * 3);</div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; mSPI.writeBytesValueRaw(0, ((nLeds*3+63)&gt;&gt;6));</div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; mSPI.waitFully();</div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; mSPI.release();</div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; }</div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;</div>
+<div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="class_l_p_d8806_controller.html#a4f6471eddcfe5445502b02f1f3179259"> 73</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_l_p_d8806_controller.html#a4f6471eddcfe5445502b02f1f3179259">showColor</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a> &amp; data, <span class="keywordtype">int</span> nLeds, <a class="code" href="struct_c_r_g_b.html">CRGB</a> scale) {</div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; mSPI.template writePixels&lt;0, LPD8806_ADJUST, RGB_ORDER&gt;(<a class="code" href="struct_pixel_controller.html">PixelController&lt;RGB_ORDER&gt;</a>(data, nLeds, scale, <a class="code" href="class_c_l_e_d_controller.html#a676f705adf93898739a405b85150a3e7">getDither</a>()));</div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; }</div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div>
+<div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="class_l_p_d8806_controller.html#a31d4e01a823682556e26748193f722e5"> 77</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_l_p_d8806_controller.html#a31d4e01a823682556e26748193f722e5">show</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a> *data, <span class="keywordtype">int</span> nLeds, <a class="code" href="struct_c_r_g_b.html">CRGB</a> scale) {</div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="comment">// TODO rgb-ize scale</span></div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; mSPI.template writePixels&lt;0, LPD8806_ADJUST, RGB_ORDER&gt;(<a class="code" href="struct_pixel_controller.html">PixelController&lt;RGB_ORDER&gt;</a>(data, nLeds, scale, <a class="code" href="class_c_l_e_d_controller.html#a676f705adf93898739a405b85150a3e7">getDither</a>()));</div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; }</div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;</div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="preprocessor">#ifdef SUPPORT_ARGB</span></div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_l_p_d8806_controller.html#a31d4e01a823682556e26748193f722e5">show</a>(<span class="keyword">const</span> <span class="keyword">struct</span> CARGB *data, <span class="keywordtype">int</span> nLeds, uint8_t scale) {</div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; checkClear(nLeds);</div>
+<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; mSPI.template writePixels&lt;0, LPD8806_ADJUST, RGB_ORDER&gt;(<a class="code" href="struct_pixel_controller.html">PixelController&lt;RGB_ORDER&gt;</a>(data, nLeds, scale, <a class="code" href="class_c_l_e_d_controller.html#a676f705adf93898739a405b85150a3e7">getDither</a>()));</div>
+<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; }</div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;};</div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;</div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;</div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="comment">// WS2801 definition - takes data/clock/select pin values (N.B. should take an SPI definition?)</span></div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, u<span class="keywordtype">int</span>8_t CLOCK_PIN, EOrder RGB_ORDER = RGB, u<span class="keywordtype">int</span>8_t SPI_SPEED = DATA_RATE_MHZ(1)&gt;</div>
+<div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="class_w_s2801_controller.html"> 103</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_w_s2801_controller.html">WS2801Controller</a> : <span class="keyword">public</span> <a class="code" href="class_c_l_e_d_controller.html">CLEDController</a> {</div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keyword">typedef</span> <a class="code" href="class_s_p_i_output.html">SPIOutput&lt;DATA_PIN, CLOCK_PIN, SPI_SPEED&gt;</a> <a class="code" href="class_s_p_i_output.html">SPI</a>;</div>
+<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; SPI mSPI;</div>
+<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <a class="code" href="class_c_min_wait.html">CMinWait&lt;1000&gt;</a> mWaitDelay;</div>
+<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <a class="code" href="class_w_s2801_controller.html">WS2801Controller</a>() {}</div>
+<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;</div>
+<div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="class_w_s2801_controller.html#ad6187b68bccb831cd5cab3cffbd6bdb4"> 110</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_w_s2801_controller.html#ad6187b68bccb831cd5cab3cffbd6bdb4">init</a>() {</div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; mSPI.init();</div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; mWaitDelay.mark();</div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; }</div>
+<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;</div>
+<div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="class_w_s2801_controller.html#a867d4249b5921e0d717c6c21038bb11c"> 115</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_w_s2801_controller.html#a867d4249b5921e0d717c6c21038bb11c">clearLeds</a>(<span class="keywordtype">int</span> nLeds) {</div>
+<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; mWaitDelay.wait();</div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; mSPI.writeBytesValue(0, nLeds*3);</div>
+<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; mWaitDelay.mark();</div>
+<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; }</div>
+<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;</div>
+<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;</div>
+<div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="class_w_s2801_controller.html#a615609bf16dd4c8fcc9ccf286ca52501"> 123</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_w_s2801_controller.html#a615609bf16dd4c8fcc9ccf286ca52501">showColor</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a> &amp; data, <span class="keywordtype">int</span> nLeds, <a class="code" href="struct_c_r_g_b.html">CRGB</a> scale) {</div>
+<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; mWaitDelay.wait();</div>
+<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; mSPI.template writePixels&lt;0, DATA_NOP, RGB_ORDER&gt;(<a class="code" href="struct_pixel_controller.html">PixelController&lt;RGB_ORDER&gt;</a>(data, nLeds, scale, <a class="code" href="class_c_l_e_d_controller.html#a676f705adf93898739a405b85150a3e7">getDither</a>()));</div>
+<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; mWaitDelay.mark();</div>
+<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; }</div>
+<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;</div>
+<div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="class_w_s2801_controller.html#a69fca4db95f5f60f27d7d1a8c7fa16a0"> 129</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_w_s2801_controller.html#a69fca4db95f5f60f27d7d1a8c7fa16a0">show</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a> *data, <span class="keywordtype">int</span> nLeds, <a class="code" href="struct_c_r_g_b.html">CRGB</a> scale) {</div>
+<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; mWaitDelay.wait();</div>
+<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; mSPI.template writePixels&lt;0, DATA_NOP, RGB_ORDER&gt;(<a class="code" href="struct_pixel_controller.html">PixelController&lt;RGB_ORDER&gt;</a>(data, nLeds, scale, <a class="code" href="class_c_l_e_d_controller.html#a676f705adf93898739a405b85150a3e7">getDither</a>()));</div>
+<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; mWaitDelay.mark();</div>
+<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; }</div>
+<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;</div>
+<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="preprocessor">#ifdef SUPPORT_ARGB</span></div>
+<div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="class_w_s2801_controller.html#a69fca4db95f5f60f27d7d1a8c7fa16a0"> 136</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_w_s2801_controller.html#a69fca4db95f5f60f27d7d1a8c7fa16a0">show</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a> *data, <span class="keywordtype">int</span> nLeds, <a class="code" href="struct_c_r_g_b.html">CRGB</a> scale) {</div>
+<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; mWaitDelay.wait();</div>
+<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; mSPI.template writePixels&lt;0, DATA_NOP, RGB_ORDER&gt;(<a class="code" href="struct_pixel_controller.html">PixelController&lt;RGB_ORDER&gt;</a>(data, nLeds, scale, <a class="code" href="class_c_l_e_d_controller.html#a676f705adf93898739a405b85150a3e7">getDither</a>()));</div>
+<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; mWaitDelay.mark();</div>
+<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; }</div>
+<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;};</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;</div>
-<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;<span class="comment">// APA102 definition - takes data/clock/select pin values (N.B. should take an SPI definition?)</span></div>
-<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, u<span class="keywordtype">int</span>8_t CLOCK_PIN, EOrder RGB_ORDER = BGR, u<span class="keywordtype">int</span>8_t SPI_SPEED = DATA_RATE_MHZ(24)&gt;</div>
-<div class="line"><a name="l00156"></a><span class="lineno"><a class="line" href="class_a_p_a102_controller.html"> 156</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_a_p_a102_controller.html">APA102Controller</a> : <span class="keyword">public</span> <a class="code" href="class_c_l_e_d_controller.html">CLEDController</a> {</div>
-<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keyword">typedef</span> <a class="code" href="class_s_p_i_output.html">SPIOutput&lt;DATA_PIN, CLOCK_PIN, SPI_SPEED&gt;</a> <a class="code" href="class_s_p_i_output.html">SPI</a>;</div>
-<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; SPI mSPI;</div>
-<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;</div>
-<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordtype">void</span> startBoundary() { mSPI.writeWord(0); mSPI.writeWord(0); }</div>
-<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordtype">void</span> endBoundary(<span class="keywordtype">int</span> nLeds) { <span class="keywordtype">int</span> nBytes = (nLeds/32); <span class="keywordflow">do</span> { mSPI.writeByte(0xFF); mSPI.writeByte(0x00); mSPI.writeByte(0x00); mSPI.writeByte(0x00); } <span class="keywordflow">while</span>(nBytes--); }</div>
+<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, u<span class="keywordtype">int</span>8_t CLOCK_PIN, EOrder RGB_ORDER = RGB, u<span class="keywordtype">int</span>8_t SPI_SPEED = DATA_RATE_MHZ(25)&gt;</div>
+<div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="class_w_s2803_controller.html"> 145</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_w_s2803_controller.html">WS2803Controller</a> : <span class="keyword">public</span> <a class="code" href="class_w_s2801_controller.html">WS2801Controller</a>&lt;DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED&gt; {};</div>
+<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;</div>
+<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="comment">// APA102 definition - takes data/clock/select pin values (N.B. should take an SPI definition?)</span></div>
+<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, u<span class="keywordtype">int</span>8_t CLOCK_PIN, EOrder RGB_ORDER = BGR, u<span class="keywordtype">int</span>8_t SPI_SPEED = DATA_RATE_MHZ(24)&gt;</div>
+<div class="line"><a name="l00159"></a><span class="lineno"><a class="line" href="class_a_p_a102_controller.html"> 159</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_a_p_a102_controller.html">APA102Controller</a> : <span class="keyword">public</span> <a class="code" href="class_c_l_e_d_controller.html">CLEDController</a> {</div>
+<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keyword">typedef</span> <a class="code" href="class_s_p_i_output.html">SPIOutput&lt;DATA_PIN, CLOCK_PIN, SPI_SPEED&gt;</a> <a class="code" href="class_s_p_i_output.html">SPI</a>;</div>
+<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; SPI mSPI;</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;</div>
-<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> writeLed(uint8_t b0, uint8_t b1, uint8_t b2) <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a>((always_inline)) {</div>
-<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; mSPI.writeByte(0xFF); mSPI.writeByte(b0); mSPI.writeByte(b1); mSPI.writeByte(b2);</div>
-<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; }</div>
-<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;</div>
-<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <a class="code" href="class_a_p_a102_controller.html">APA102Controller</a>() {}</div>
+<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordtype">void</span> startBoundary() { mSPI.writeWord(0); mSPI.writeWord(0); }</div>
+<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordtype">void</span> endBoundary(<span class="keywordtype">int</span> nLeds) { <span class="keywordtype">int</span> nBytes = (nLeds/32); <span class="keywordflow">do</span> { mSPI.writeByte(0xFF); mSPI.writeByte(0x00); mSPI.writeByte(0x00); mSPI.writeByte(0x00); } <span class="keywordflow">while</span>(nBytes--); }</div>
+<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;</div>
+<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> writeLed(uint8_t b0, uint8_t b1, uint8_t b2) <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a>((always_inline)) {</div>
+<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; mSPI.writeByte(0xFF); mSPI.writeByte(b0); mSPI.writeByte(b1); mSPI.writeByte(b2);</div>
+<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; }</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;</div>
-<div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="class_a_p_a102_controller.html#a0e875981e076baf9cd1c5e7599b83cd0"> 170</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_a_p_a102_controller.html#a0e875981e076baf9cd1c5e7599b83cd0">init</a>() {</div>
-<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; mSPI.init();</div>
-<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; }</div>
-<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;</div>
-<div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="class_a_p_a102_controller.html#aadcdde1b8fc6c680504fe9455ceff0fb"> 174</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_a_p_a102_controller.html#aadcdde1b8fc6c680504fe9455ceff0fb">clearLeds</a>(<span class="keywordtype">int</span> nLeds) {</div>
-<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <a class="code" href="class_a_p_a102_controller.html#a0aa9f2896fe8b23554623fd3de0d5428">showColor</a>(<a class="code" href="struct_c_r_g_b.html">CRGB</a>(0,0,0), nLeds, <a class="code" href="struct_c_r_g_b.html">CRGB</a>(0,0,0));</div>
-<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; }</div>
-<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;</div>
-<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="keyword">protected</span>:</div>
-<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;</div>
-<div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="class_a_p_a102_controller.html#a0aa9f2896fe8b23554623fd3de0d5428"> 180</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_a_p_a102_controller.html#a0aa9f2896fe8b23554623fd3de0d5428">showColor</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a> &amp; data, <span class="keywordtype">int</span> nLeds, <a class="code" href="struct_c_r_g_b.html">CRGB</a> scale) {</div>
-<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <a class="code" href="struct_pixel_controller.html">PixelController&lt;RGB_ORDER&gt;</a> pixels(data, nLeds, scale, <a class="code" href="class_c_l_e_d_controller.html#a676f705adf93898739a405b85150a3e7">getDither</a>());</div>
+<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <a class="code" href="class_a_p_a102_controller.html">APA102Controller</a>() {}</div>
+<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;</div>
+<div class="line"><a name="l00173"></a><span class="lineno"><a class="line" href="class_a_p_a102_controller.html#a0e875981e076baf9cd1c5e7599b83cd0"> 173</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_a_p_a102_controller.html#a0e875981e076baf9cd1c5e7599b83cd0">init</a>() {</div>
+<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; mSPI.init();</div>
+<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; }</div>
+<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;</div>
+<div class="line"><a name="l00177"></a><span class="lineno"><a class="line" href="class_a_p_a102_controller.html#aadcdde1b8fc6c680504fe9455ceff0fb"> 177</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_a_p_a102_controller.html#aadcdde1b8fc6c680504fe9455ceff0fb">clearLeds</a>(<span class="keywordtype">int</span> nLeds) {</div>
+<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <a class="code" href="class_a_p_a102_controller.html#a0aa9f2896fe8b23554623fd3de0d5428">showColor</a>(<a class="code" href="struct_c_r_g_b.html">CRGB</a>(0,0,0), nLeds, <a class="code" href="struct_c_r_g_b.html">CRGB</a>(0,0,0));</div>
+<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; }</div>
+<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;</div>
+<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;<span class="keyword">protected</span>:</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;</div>
-<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; mSPI.select();</div>
-<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;</div>
-<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; startBoundary();</div>
-<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; nLeds; i++) {</div>
-<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; uint8_t b = pixels.loadAndScale0();</div>
-<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; mSPI.writeWord(0xFF00 | b);</div>
-<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; uint16_t w = pixels.loadAndScale1() &lt;&lt; 8;</div>
-<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; w |= pixels.loadAndScale2();</div>
-<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; mSPI.writeWord(w);</div>
-<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; pixels.stepDithering();</div>
-<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; }</div>
-<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; endBoundary(nLeds);</div>
-<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;</div>
-<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; mSPI.waitFully();</div>
-<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; mSPI.release();</div>
-<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; }</div>
-<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;</div>
-<div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="class_a_p_a102_controller.html#a245148d2621eb73999ab673852c49332"> 200</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_a_p_a102_controller.html#a245148d2621eb73999ab673852c49332">show</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a> *data, <span class="keywordtype">int</span> nLeds, <a class="code" href="struct_c_r_g_b.html">CRGB</a> scale) {</div>
-<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <a class="code" href="struct_pixel_controller.html">PixelController&lt;RGB_ORDER&gt;</a> pixels(data, nLeds, scale, <a class="code" href="class_c_l_e_d_controller.html#a676f705adf93898739a405b85150a3e7">getDither</a>());</div>
+<div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="class_a_p_a102_controller.html#a0aa9f2896fe8b23554623fd3de0d5428"> 183</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_a_p_a102_controller.html#a0aa9f2896fe8b23554623fd3de0d5428">showColor</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a> &amp; data, <span class="keywordtype">int</span> nLeds, <a class="code" href="struct_c_r_g_b.html">CRGB</a> scale) {</div>
+<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <a class="code" href="struct_pixel_controller.html">PixelController&lt;RGB_ORDER&gt;</a> pixels(data, nLeds, scale, <a class="code" href="class_c_l_e_d_controller.html#a676f705adf93898739a405b85150a3e7">getDither</a>());</div>
+<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;</div>
+<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; mSPI.select();</div>
+<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;</div>
+<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; startBoundary();</div>
+<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; nLeds; i++) {</div>
+<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; uint8_t b = pixels.loadAndScale0();</div>
+<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; mSPI.writeWord(0xFF00 | b);</div>
+<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; uint16_t w = pixels.loadAndScale1() &lt;&lt; 8;</div>
+<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; w |= pixels.loadAndScale2();</div>
+<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; mSPI.writeWord(w);</div>
+<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; pixels.stepDithering();</div>
+<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; }</div>
+<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; endBoundary(nLeds);</div>
+<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;</div>
+<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; mSPI.waitFully();</div>
+<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; mSPI.release();</div>
+<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; }</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;</div>
-<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; mSPI.select();</div>
-<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;</div>
-<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; startBoundary();</div>
-<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; nLeds; i++) {</div>
-<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; uint16_t b = 0xFF00 | (uint16_t)pixels.loadAndScale0();</div>
-<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; mSPI.writeWord(b);</div>
-<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; uint16_t w = pixels.loadAndScale1() &lt;&lt; 8;</div>
-<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; w |= pixels.loadAndScale2();</div>
-<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; mSPI.writeWord(w);</div>
-<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; pixels.advanceData();</div>
-<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; pixels.stepDithering();</div>
-<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; }</div>
-<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; endBoundary(nLeds);</div>
-<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; mSPI.waitFully();</div>
-<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; mSPI.release();</div>
-<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; }</div>
-<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;</div>
-<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;<span class="preprocessor">#ifdef SUPPORT_ARGB</span></div>
-<div class="line"><a name="l00221"></a><span class="lineno"><a class="line" href="class_a_p_a102_controller.html#a245148d2621eb73999ab673852c49332"> 221</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_a_p_a102_controller.html#a245148d2621eb73999ab673852c49332">show</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a> *data, <span class="keywordtype">int</span> nLeds, <a class="code" href="struct_c_r_g_b.html">CRGB</a> scale) {</div>
-<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <a class="code" href="struct_pixel_controller.html">PixelController&lt;RGB_ORDER&gt;</a> pixels(data, nLeds,, scale, <a class="code" href="class_c_l_e_d_controller.html#a676f705adf93898739a405b85150a3e7">getDither</a>());</div>
-<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;</div>
-<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; mSPI.select();</div>
-<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;</div>
-<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; startBoundary();</div>
-<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; nLeds; i++) {</div>
-<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; mSPI.writeByte(0xFF);</div>
-<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; uint8_t b = pixels.loadAndScale0(); mSPI.writeByte(b);</div>
-<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; b = pixels.loadAndScale1(); mSPI.writeByte(b);</div>
-<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; b = pixels.loadAndScale2(); mSPI.writeByte(b);</div>
-<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; pixels.advanceData();</div>
-<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; pixels.stepDithering();</div>
-<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; }</div>
-<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; endBoundary(nLeds);</div>
-<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; mSPI.waitFully();</div>
-<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; mSPI.release();</div>
-<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; }</div>
-<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;};</div>
-<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;</div>
-<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;</div>
-<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;<span class="comment">// P9813 definition - takes data/clock/select pin values (N.B. should take an SPI definition?)</span></div>
-<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, u<span class="keywordtype">int</span>8_t CLOCK_PIN, EOrder RGB_ORDER = RGB, u<span class="keywordtype">int</span>8_t SPI_SPEED = DATA_RATE_MHZ(10)&gt;</div>
-<div class="line"><a name="l00255"></a><span class="lineno"><a class="line" href="class_p9813_controller.html"> 255</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_p9813_controller.html">P9813Controller</a> : <span class="keyword">public</span> <a class="code" href="class_c_l_e_d_controller.html">CLEDController</a> {</div>
-<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keyword">typedef</span> <a class="code" href="class_s_p_i_output.html">SPIOutput&lt;DATA_PIN, CLOCK_PIN, SPI_SPEED&gt;</a> <a class="code" href="class_s_p_i_output.html">SPI</a>;</div>
-<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; SPI mSPI;</div>
-<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;</div>
-<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keywordtype">void</span> writeBoundary() { mSPI.writeWord(0); mSPI.writeWord(0); }</div>
-<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;</div>
-<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> writeLed(uint8_t r, uint8_t g, uint8_t b) <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a>((always_inline)) {</div>
-<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keyword">register</span> uint8_t top = 0xC0 | ((~b &amp; 0xC0) &gt;&gt; 2) | ((~g &amp; 0xC0) &gt;&gt; 4) | ((~r &amp; 0xC0) &gt;&gt; 6);</div>
-<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; mSPI.writeByte(top); mSPI.writeByte(b); mSPI.writeByte(g); mSPI.writeByte(r);</div>
-<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; }</div>
-<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;</div>
-<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <a class="code" href="class_p9813_controller.html">P9813Controller</a>() {}</div>
+<div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="class_a_p_a102_controller.html#a245148d2621eb73999ab673852c49332"> 203</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_a_p_a102_controller.html#a245148d2621eb73999ab673852c49332">show</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a> *data, <span class="keywordtype">int</span> nLeds, <a class="code" href="struct_c_r_g_b.html">CRGB</a> scale) {</div>
+<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <a class="code" href="struct_pixel_controller.html">PixelController&lt;RGB_ORDER&gt;</a> pixels(data, nLeds, scale, <a class="code" href="class_c_l_e_d_controller.html#a676f705adf93898739a405b85150a3e7">getDither</a>());</div>
+<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;</div>
+<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; mSPI.select();</div>
+<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;</div>
+<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; startBoundary();</div>
+<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; nLeds; i++) {</div>
+<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; uint16_t b = 0xFF00 | (uint16_t)pixels.loadAndScale0();</div>
+<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; mSPI.writeWord(b);</div>
+<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; uint16_t w = pixels.loadAndScale1() &lt;&lt; 8;</div>
+<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; w |= pixels.loadAndScale2();</div>
+<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; mSPI.writeWord(w);</div>
+<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; pixels.advanceData();</div>
+<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; pixels.stepDithering();</div>
+<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; }</div>
+<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; endBoundary(nLeds);</div>
+<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; mSPI.waitFully();</div>
+<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; mSPI.release();</div>
+<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; }</div>
+<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;</div>
+<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;<span class="preprocessor">#ifdef SUPPORT_ARGB</span></div>
+<div class="line"><a name="l00224"></a><span class="lineno"><a class="line" href="class_a_p_a102_controller.html#a245148d2621eb73999ab673852c49332"> 224</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_a_p_a102_controller.html#a245148d2621eb73999ab673852c49332">show</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a> *data, <span class="keywordtype">int</span> nLeds, <a class="code" href="struct_c_r_g_b.html">CRGB</a> scale) {</div>
+<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <a class="code" href="struct_pixel_controller.html">PixelController&lt;RGB_ORDER&gt;</a> pixels(data, nLeds,, scale, <a class="code" href="class_c_l_e_d_controller.html#a676f705adf93898739a405b85150a3e7">getDither</a>());</div>
+<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;</div>
+<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; mSPI.select();</div>
+<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;</div>
+<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; startBoundary();</div>
+<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; nLeds; i++) {</div>
+<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; mSPI.writeByte(0xFF);</div>
+<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; uint8_t b = pixels.loadAndScale0(); mSPI.writeByte(b);</div>
+<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; b = pixels.loadAndScale1(); mSPI.writeByte(b);</div>
+<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; b = pixels.loadAndScale2(); mSPI.writeByte(b);</div>
+<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; pixels.advanceData();</div>
+<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; pixels.stepDithering();</div>
+<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; }</div>
+<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; endBoundary(nLeds);</div>
+<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; mSPI.waitFully();</div>
+<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; mSPI.release();</div>
+<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; }</div>
+<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;};</div>
+<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;</div>
+<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;</div>
+<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;<span class="comment">// P9813 definition - takes data/clock/select pin values (N.B. should take an SPI definition?)</span></div>
+<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, u<span class="keywordtype">int</span>8_t CLOCK_PIN, EOrder RGB_ORDER = RGB, u<span class="keywordtype">int</span>8_t SPI_SPEED = DATA_RATE_MHZ(10)&gt;</div>
+<div class="line"><a name="l00258"></a><span class="lineno"><a class="line" href="class_p9813_controller.html"> 258</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_p9813_controller.html">P9813Controller</a> : <span class="keyword">public</span> <a class="code" href="class_c_l_e_d_controller.html">CLEDController</a> {</div>
+<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keyword">typedef</span> <a class="code" href="class_s_p_i_output.html">SPIOutput&lt;DATA_PIN, CLOCK_PIN, SPI_SPEED&gt;</a> <a class="code" href="class_s_p_i_output.html">SPI</a>;</div>
+<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; SPI mSPI;</div>
+<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;</div>
+<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordtype">void</span> writeBoundary() { mSPI.writeWord(0); mSPI.writeWord(0); }</div>
+<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;</div>
+<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> writeLed(uint8_t r, uint8_t g, uint8_t b) <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a>((always_inline)) {</div>
+<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keyword">register</span> uint8_t top = 0xC0 | ((~b &amp; 0xC0) &gt;&gt; 2) | ((~g &amp; 0xC0) &gt;&gt; 4) | ((~r &amp; 0xC0) &gt;&gt; 6);</div>
+<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; mSPI.writeByte(top); mSPI.writeByte(b); mSPI.writeByte(g); mSPI.writeByte(r);</div>
+<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; }</div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;</div>
-<div class="line"><a name="l00269"></a><span class="lineno"><a class="line" href="class_p9813_controller.html#ad6fcb36b9378df660721ae24ed857b8a"> 269</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_p9813_controller.html#ad6fcb36b9378df660721ae24ed857b8a">init</a>() {</div>
-<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; mSPI.init();</div>
-<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; }</div>
-<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;</div>
-<div class="line"><a name="l00273"></a><span class="lineno"><a class="line" href="class_p9813_controller.html#ac2fddaa8ac8860649da9865b58dca13c"> 273</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_p9813_controller.html#ac2fddaa8ac8860649da9865b58dca13c">clearLeds</a>(<span class="keywordtype">int</span> nLeds) {</div>
-<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <a class="code" href="class_p9813_controller.html#ae60dbfc4d27c62448032c61e7730ec8a">showColor</a>(<a class="code" href="struct_c_r_g_b.html">CRGB</a>(0,0,0), nLeds, <a class="code" href="struct_c_r_g_b.html">CRGB</a>(0,0,0));</div>
-<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; }</div>
-<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;</div>
-<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;<span class="keyword">protected</span>:</div>
-<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;</div>
-<div class="line"><a name="l00279"></a><span class="lineno"><a class="line" href="class_p9813_controller.html#ae60dbfc4d27c62448032c61e7730ec8a"> 279</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_p9813_controller.html#ae60dbfc4d27c62448032c61e7730ec8a">showColor</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a> &amp; data, <span class="keywordtype">int</span> nLeds, <a class="code" href="struct_c_r_g_b.html">CRGB</a> scale) {</div>
-<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <a class="code" href="struct_pixel_controller.html">PixelController&lt;RGB_ORDER&gt;</a> pixels(data, nLeds, scale, <a class="code" href="class_c_l_e_d_controller.html#a676f705adf93898739a405b85150a3e7">getDither</a>());</div>
+<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <a class="code" href="class_p9813_controller.html">P9813Controller</a>() {}</div>
+<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;</div>
+<div class="line"><a name="l00272"></a><span class="lineno"><a class="line" href="class_p9813_controller.html#ad6fcb36b9378df660721ae24ed857b8a"> 272</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_p9813_controller.html#ad6fcb36b9378df660721ae24ed857b8a">init</a>() {</div>
+<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; mSPI.init();</div>
+<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; }</div>
+<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;</div>
+<div class="line"><a name="l00276"></a><span class="lineno"><a class="line" href="class_p9813_controller.html#ac2fddaa8ac8860649da9865b58dca13c"> 276</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_p9813_controller.html#ac2fddaa8ac8860649da9865b58dca13c">clearLeds</a>(<span class="keywordtype">int</span> nLeds) {</div>
+<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <a class="code" href="class_p9813_controller.html#ae60dbfc4d27c62448032c61e7730ec8a">showColor</a>(<a class="code" href="struct_c_r_g_b.html">CRGB</a>(0,0,0), nLeds, <a class="code" href="struct_c_r_g_b.html">CRGB</a>(0,0,0));</div>
+<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; }</div>
+<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;</div>
+<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;<span class="keyword">protected</span>:</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;</div>
-<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; mSPI.select();</div>
-<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;</div>
-<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; writeBoundary();</div>
-<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordflow">while</span>(nLeds--) {</div>
-<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; writeLed(pixels.loadAndScale0(), pixels.loadAndScale1(), pixels.loadAndScale2());</div>
-<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; pixels.stepDithering();</div>
-<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; }</div>
-<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; writeBoundary();</div>
-<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;</div>
-<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; mSPI.waitFully();</div>
-<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; mSPI.release();</div>
-<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; }</div>
-<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;</div>
-<div class="line"><a name="l00295"></a><span class="lineno"><a class="line" href="class_p9813_controller.html#aac4f48b0da93055c0da7285839c4ce81"> 295</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_p9813_controller.html#aac4f48b0da93055c0da7285839c4ce81">show</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a> *data, <span class="keywordtype">int</span> nLeds, <a class="code" href="struct_c_r_g_b.html">CRGB</a> scale) {</div>
-<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <a class="code" href="struct_pixel_controller.html">PixelController&lt;RGB_ORDER&gt;</a> pixels(data, nLeds, scale, <a class="code" href="class_c_l_e_d_controller.html#a676f705adf93898739a405b85150a3e7">getDither</a>());</div>
+<div class="line"><a name="l00282"></a><span class="lineno"><a class="line" href="class_p9813_controller.html#ae60dbfc4d27c62448032c61e7730ec8a"> 282</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_p9813_controller.html#ae60dbfc4d27c62448032c61e7730ec8a">showColor</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a> &amp; data, <span class="keywordtype">int</span> nLeds, <a class="code" href="struct_c_r_g_b.html">CRGB</a> scale) {</div>
+<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <a class="code" href="struct_pixel_controller.html">PixelController&lt;RGB_ORDER&gt;</a> pixels(data, nLeds, scale, <a class="code" href="class_c_l_e_d_controller.html#a676f705adf93898739a405b85150a3e7">getDither</a>());</div>
+<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;</div>
+<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; mSPI.select();</div>
+<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;</div>
+<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; writeBoundary();</div>
+<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keywordflow">while</span>(nLeds--) {</div>
+<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; writeLed(pixels.loadAndScale0(), pixels.loadAndScale1(), pixels.loadAndScale2());</div>
+<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; pixels.stepDithering();</div>
+<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; }</div>
+<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; writeBoundary();</div>
+<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;</div>
+<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; mSPI.waitFully();</div>
+<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; mSPI.release();</div>
+<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; }</div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;</div>
-<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; mSPI.select();</div>
-<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;</div>
-<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; writeBoundary();</div>
-<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; nLeds; i++) {</div>
-<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; writeLed(pixels.loadAndScale0(), pixels.loadAndScale1(), pixels.loadAndScale2());</div>
-<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; pixels.advanceData();</div>
-<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; pixels.stepDithering();</div>
-<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; }</div>
-<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; writeBoundary();</div>
-<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; mSPI.waitFully();</div>
-<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;</div>
-<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; mSPI.release();</div>
-<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; }</div>
+<div class="line"><a name="l00298"></a><span class="lineno"><a class="line" href="class_p9813_controller.html#aac4f48b0da93055c0da7285839c4ce81"> 298</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_p9813_controller.html#aac4f48b0da93055c0da7285839c4ce81">show</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a> *data, <span class="keywordtype">int</span> nLeds, <a class="code" href="struct_c_r_g_b.html">CRGB</a> scale) {</div>
+<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <a class="code" href="struct_pixel_controller.html">PixelController&lt;RGB_ORDER&gt;</a> pixels(data, nLeds, scale, <a class="code" href="class_c_l_e_d_controller.html#a676f705adf93898739a405b85150a3e7">getDither</a>());</div>
+<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;</div>
+<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; mSPI.select();</div>
+<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;</div>
+<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; writeBoundary();</div>
+<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; nLeds; i++) {</div>
+<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; writeLed(pixels.loadAndScale0(), pixels.loadAndScale1(), pixels.loadAndScale2());</div>
+<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; pixels.advanceData();</div>
+<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; pixels.stepDithering();</div>
+<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; }</div>
+<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; writeBoundary();</div>
+<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; mSPI.waitFully();</div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;</div>
-<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;<span class="preprocessor">#ifdef SUPPORT_ARGB</span></div>
-<div class="line"><a name="l00313"></a><span class="lineno"><a class="line" href="class_p9813_controller.html#aac4f48b0da93055c0da7285839c4ce81"> 313</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_p9813_controller.html#aac4f48b0da93055c0da7285839c4ce81">show</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a> *data, <span class="keywordtype">int</span> nLeds, <a class="code" href="struct_c_r_g_b.html">CRGB</a> scale) {</div>
-<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <a class="code" href="struct_pixel_controller.html">PixelController&lt;RGB_ORDER&gt;</a> pixels(data, nLeds,, scale, <a class="code" href="class_c_l_e_d_controller.html#a676f705adf93898739a405b85150a3e7">getDither</a>());</div>
-<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160;</div>
-<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; mSPI.select();</div>
-<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;</div>
-<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; writeBoundary();</div>
-<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; nLeds; i++) {</div>
-<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; writeLed(pixels.loadAndScale0(), pixels.loadAndScale1(), pixels.loadAndScale2());</div>
-<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; pixels.advanceData();</div>
-<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; pixels.stepDithering();</div>
-<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; }</div>
-<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; writeBoundary();</div>
-<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; mSPI.waitFully();</div>
-<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;</div>
-<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; mSPI.release();</div>
-<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; }</div>
-<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;};</div>
-<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;</div>
-<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;</div>
-<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;<span class="comment">// SM16716 definition - takes data/clock/select pin values (N.B. should take an SPI definition?)</span></div>
-<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, u<span class="keywordtype">int</span>8_t CLOCK_PIN, EOrder RGB_ORDER = RGB, u<span class="keywordtype">int</span>8_t SPI_SPEED = DATA_RATE_MHZ(16)&gt;</div>
-<div class="line"><a name="l00345"></a><span class="lineno"><a class="line" href="class_s_m16716_controller.html"> 345</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_s_m16716_controller.html">SM16716Controller</a> : <span class="keyword">public</span> <a class="code" href="class_c_l_e_d_controller.html">CLEDController</a> {</div>
-<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keyword">typedef</span> <a class="code" href="class_s_p_i_output.html">SPIOutput&lt;DATA_PIN, CLOCK_PIN, SPI_SPEED&gt;</a> <a class="code" href="class_s_p_i_output.html">SPI</a>;</div>
-<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; SPI mSPI;</div>
-<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;</div>
-<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="keywordtype">void</span> writeHeader() {</div>
-<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="comment">// Write out 50 zeros to the spi line (6 blocks of 8 followed by two single bit writes)</span></div>
-<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; mSPI.select();</div>
-<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; mSPI.writeBytesValueRaw(0, 6);</div>
-<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; mSPI.waitFully();</div>
-<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; mSPI.template writeBit&lt;0&gt;(0);</div>
-<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; mSPI.template writeBit&lt;0&gt;(0);</div>
-<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; mSPI.release();</div>
-<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; }</div>
-<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;</div>
-<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <a class="code" href="class_s_m16716_controller.html">SM16716Controller</a>() {}</div>
+<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; mSPI.release();</div>
+<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; }</div>
+<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;</div>
+<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160;<span class="preprocessor">#ifdef SUPPORT_ARGB</span></div>
+<div class="line"><a name="l00316"></a><span class="lineno"><a class="line" href="class_p9813_controller.html#aac4f48b0da93055c0da7285839c4ce81"> 316</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_p9813_controller.html#aac4f48b0da93055c0da7285839c4ce81">show</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a> *data, <span class="keywordtype">int</span> nLeds, <a class="code" href="struct_c_r_g_b.html">CRGB</a> scale) {</div>
+<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <a class="code" href="struct_pixel_controller.html">PixelController&lt;RGB_ORDER&gt;</a> pixels(data, nLeds,, scale, <a class="code" href="class_c_l_e_d_controller.html#a676f705adf93898739a405b85150a3e7">getDither</a>());</div>
+<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;</div>
+<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; mSPI.select();</div>
+<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;</div>
+<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; writeBoundary();</div>
+<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; nLeds; i++) {</div>
+<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; writeLed(pixels.loadAndScale0(), pixels.loadAndScale1(), pixels.loadAndScale2());</div>
+<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; pixels.advanceData();</div>
+<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; pixels.stepDithering();</div>
+<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; }</div>
+<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; writeBoundary();</div>
+<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; mSPI.waitFully();</div>
+<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;</div>
+<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; mSPI.release();</div>
+<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; }</div>
+<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;};</div>
+<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;</div>
+<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;</div>
+<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;<span class="comment">// SM16716 definition - takes data/clock/select pin values (N.B. should take an SPI definition?)</span></div>
+<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, u<span class="keywordtype">int</span>8_t CLOCK_PIN, EOrder RGB_ORDER = RGB, u<span class="keywordtype">int</span>8_t SPI_SPEED = DATA_RATE_MHZ(16)&gt;</div>
+<div class="line"><a name="l00348"></a><span class="lineno"><a class="line" href="class_s_m16716_controller.html"> 348</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_s_m16716_controller.html">SM16716Controller</a> : <span class="keyword">public</span> <a class="code" href="class_c_l_e_d_controller.html">CLEDController</a> {</div>
+<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="keyword">typedef</span> <a class="code" href="class_s_p_i_output.html">SPIOutput&lt;DATA_PIN, CLOCK_PIN, SPI_SPEED&gt;</a> <a class="code" href="class_s_p_i_output.html">SPI</a>;</div>
+<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; SPI mSPI;</div>
+<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;</div>
+<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordtype">void</span> writeHeader() {</div>
+<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="comment">// Write out 50 zeros to the spi line (6 blocks of 8 followed by two single bit writes)</span></div>
+<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; mSPI.select();</div>
+<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; mSPI.writeBytesValueRaw(0, 6);</div>
+<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; mSPI.waitFully();</div>
+<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; mSPI.template writeBit&lt;0&gt;(0);</div>
+<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; mSPI.template writeBit&lt;0&gt;(0);</div>
+<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; mSPI.release();</div>
+<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; }</div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;</div>
-<div class="line"><a name="l00362"></a><span class="lineno"><a class="line" href="class_s_m16716_controller.html#a1ba5a4e3f00b2235f278b9fb9aeb1591"> 362</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_s_m16716_controller.html#a1ba5a4e3f00b2235f278b9fb9aeb1591">init</a>() {</div>
-<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; mSPI.init();</div>
-<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; }</div>
-<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;</div>
-<div class="line"><a name="l00366"></a><span class="lineno"><a class="line" href="class_s_m16716_controller.html#a89d3d5ef2239a9d452bc2478b0549ad8"> 366</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_s_m16716_controller.html#a89d3d5ef2239a9d452bc2478b0549ad8">clearLeds</a>(<span class="keywordtype">int</span> nLeds) {</div>
-<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; mSPI.select();</div>
-<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keywordflow">while</span>(nLeds--) {</div>
-<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; mSPI.template writeBit&lt;0&gt;(1);</div>
-<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; mSPI.writeByte(0);</div>
-<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; mSPI.writeByte(0);</div>
-<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; mSPI.writeByte(0);</div>
-<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; }</div>
-<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; mSPI.waitFully();</div>
-<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; mSPI.release();</div>
-<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; writeHeader();</div>
-<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; }</div>
-<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160;</div>
-<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160;<span class="keyword">protected</span>:</div>
-<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160;</div>
-<div class="line"><a name="l00381"></a><span class="lineno"><a class="line" href="class_s_m16716_controller.html#a7df8b8a34e0dc067c69aa056deca9677"> 381</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_s_m16716_controller.html#a7df8b8a34e0dc067c69aa056deca9677">showColor</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a> &amp; data, <span class="keywordtype">int</span> nLeds, <a class="code" href="struct_c_r_g_b.html">CRGB</a> scale) {</div>
-<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; mSPI.template writePixels&lt;FLAG_START_BIT, DATA_NOP, RGB_ORDER&gt;(<a class="code" href="struct_pixel_controller.html">PixelController&lt;RGB_ORDER&gt;</a>(data, nLeds, scale, <a class="code" href="class_c_l_e_d_controller.html#a676f705adf93898739a405b85150a3e7">getDither</a>()));</div>
-<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; writeHeader();</div>
-<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; }</div>
-<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160;</div>
-<div class="line"><a name="l00386"></a><span class="lineno"><a class="line" href="class_s_m16716_controller.html#a3d720053186fd61d6ad90d48cac3d57d"> 386</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_s_m16716_controller.html#a3d720053186fd61d6ad90d48cac3d57d">show</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a> *data, <span class="keywordtype">int</span> nLeds, <a class="code" href="struct_c_r_g_b.html">CRGB</a> scale) {</div>
-<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="comment">// Make sure the FLAG_START_BIT flag is set to ensure that an extra 1 bit is sent at the start</span></div>
-<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="comment">// of each triplet of bytes for rgb data</span></div>
-<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="comment">// writeHeader();</span></div>
-<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; mSPI.template writePixels&lt;FLAG_START_BIT, DATA_NOP, RGB_ORDER&gt;( <a class="code" href="struct_pixel_controller.html">PixelController&lt;RGB_ORDER&gt;</a>(data, nLeds, scale, <a class="code" href="class_c_l_e_d_controller.html#a676f705adf93898739a405b85150a3e7">getDither</a>()));</div>
-<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; writeHeader();</div>
-<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; }</div>
-<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;</div>
-<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;<span class="preprocessor">#ifdef SUPPORT_ARGB</span></div>
-<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_s_m16716_controller.html#a3d720053186fd61d6ad90d48cac3d57d">show</a>(<span class="keyword">const</span> <span class="keyword">struct</span> CARGB *data, <span class="keywordtype">int</span> nLeds, <a class="code" href="struct_c_r_g_b.html">CRGB</a> scale) {</div>
-<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; mSPI.writeBytesValue(0, 6);</div>
-<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; mSPI.template writeBit&lt;0&gt;(0);</div>
-<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; mSPI.template writeBit&lt;0&gt;(0);</div>
-<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160;</div>
-<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="comment">// Make sure the FLAG_START_BIT flag is set to ensure that an extra 1 bit is sent at the start</span></div>
-<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="comment">// of each triplet of bytes for rgb data</span></div>
-<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; mSPI.template writePixels&lt;FLAG_START_BIT, DATA_NOP, RGB_ORDER&gt;(<a class="code" href="struct_pixel_controller.html">PixelController&lt;RGB_ORDER&gt;</a>(data, nLeds, scale, <a class="code" href="class_c_l_e_d_controller.html#a676f705adf93898739a405b85150a3e7">getDither</a>()));</div>
-<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; }</div>
-<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;};</div>
-<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;<span class="comment">// Clockless template instantiations - see clockless.h for how the timing values are used</span></div>
-<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160;<span class="preprocessor">#ifdef FASTLED_HAS_CLOCKLESS</span></div>
-<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;</div>
-<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160;<span class="comment">// We want to force all avr&#39;s to use the Trinket controller when running at 8Mhz, because even the 328&#39;s at 8Mhz</span></div>
-<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;<span class="comment">// need the more tightly defined timeframes.</span></div>
-<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160;<span class="preprocessor">#if (F_CPU == 8000000 || F_CPU == 16000000 || F_CPU == 24000000) // || F_CPU == 48000000 || F_CPU == 96000000) // 125ns/clock</span></div>
-<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160;<span class="preprocessor">#define FMUL (F_CPU/8000000)</span></div>
-<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;<span class="comment">// LPD1886</span></div>
-<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, EOrder RGB_ORDER = RGB&gt;</div>
-<div class="line"><a name="l00424"></a><span class="lineno"><a class="line" href="class_l_p_d1886_controller1250_khz.html"> 424</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_l_p_d1886_controller1250_khz.html">LPD1886Controller1250Khz</a> : <span class="keyword">public</span> ClocklessController&lt;DATA_PIN, 2 * FMUL, 3 * FMUL, 2 * FMUL, RGB_ORDER, 4&gt; {};</div>
-<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160;</div>
-<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160;<span class="comment">// WS2811@800khz 2 clocks, 5 clocks, 3 clocks</span></div>
-<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, EOrder RGB_ORDER = RGB&gt;</div>
-<div class="line"><a name="l00428"></a><span class="lineno"><a class="line" href="class_w_s2812_controller800_khz.html"> 428</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_w_s2812_controller800_khz.html">WS2812Controller800Khz</a> : <span class="keyword">public</span> ClocklessController&lt;DATA_PIN, 2 * FMUL, 5 * FMUL, 3 * FMUL, RGB_ORDER&gt; {};</div>
-<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160;</div>
+<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <a class="code" href="class_s_m16716_controller.html">SM16716Controller</a>() {}</div>
+<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;</div>
+<div class="line"><a name="l00365"></a><span class="lineno"><a class="line" href="class_s_m16716_controller.html#a1ba5a4e3f00b2235f278b9fb9aeb1591"> 365</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_s_m16716_controller.html#a1ba5a4e3f00b2235f278b9fb9aeb1591">init</a>() {</div>
+<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; mSPI.init();</div>
+<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; }</div>
+<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160;</div>
+<div class="line"><a name="l00369"></a><span class="lineno"><a class="line" href="class_s_m16716_controller.html#a89d3d5ef2239a9d452bc2478b0549ad8"> 369</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_s_m16716_controller.html#a89d3d5ef2239a9d452bc2478b0549ad8">clearLeds</a>(<span class="keywordtype">int</span> nLeds) {</div>
+<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; mSPI.select();</div>
+<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keywordflow">while</span>(nLeds--) {</div>
+<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; mSPI.template writeBit&lt;0&gt;(1);</div>
+<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; mSPI.writeByte(0);</div>
+<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; mSPI.writeByte(0);</div>
+<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; mSPI.writeByte(0);</div>
+<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; }</div>
+<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; mSPI.waitFully();</div>
+<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; mSPI.release();</div>
+<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; writeHeader();</div>
+<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; }</div>
+<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160;</div>
+<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160;<span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;</div>
+<div class="line"><a name="l00384"></a><span class="lineno"><a class="line" href="class_s_m16716_controller.html#a7df8b8a34e0dc067c69aa056deca9677"> 384</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_s_m16716_controller.html#a7df8b8a34e0dc067c69aa056deca9677">showColor</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a> &amp; data, <span class="keywordtype">int</span> nLeds, <a class="code" href="struct_c_r_g_b.html">CRGB</a> scale) {</div>
+<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; mSPI.template writePixels&lt;FLAG_START_BIT, DATA_NOP, RGB_ORDER&gt;(<a class="code" href="struct_pixel_controller.html">PixelController&lt;RGB_ORDER&gt;</a>(data, nLeds, scale, <a class="code" href="class_c_l_e_d_controller.html#a676f705adf93898739a405b85150a3e7">getDither</a>()));</div>
+<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; writeHeader();</div>
+<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; }</div>
+<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;</div>
+<div class="line"><a name="l00389"></a><span class="lineno"><a class="line" href="class_s_m16716_controller.html#a3d720053186fd61d6ad90d48cac3d57d"> 389</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_s_m16716_controller.html#a3d720053186fd61d6ad90d48cac3d57d">show</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a> *data, <span class="keywordtype">int</span> nLeds, <a class="code" href="struct_c_r_g_b.html">CRGB</a> scale) {</div>
+<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="comment">// Make sure the FLAG_START_BIT flag is set to ensure that an extra 1 bit is sent at the start</span></div>
+<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="comment">// of each triplet of bytes for rgb data</span></div>
+<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="comment">// writeHeader();</span></div>
+<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; mSPI.template writePixels&lt;FLAG_START_BIT, DATA_NOP, RGB_ORDER&gt;( <a class="code" href="struct_pixel_controller.html">PixelController&lt;RGB_ORDER&gt;</a>(data, nLeds, scale, <a class="code" href="class_c_l_e_d_controller.html#a676f705adf93898739a405b85150a3e7">getDither</a>()));</div>
+<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; writeHeader();</div>
+<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; }</div>
+<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;</div>
+<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160;<span class="preprocessor">#ifdef SUPPORT_ARGB</span></div>
+<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_s_m16716_controller.html#a3d720053186fd61d6ad90d48cac3d57d">show</a>(<span class="keyword">const</span> <span class="keyword">struct</span> CARGB *data, <span class="keywordtype">int</span> nLeds, <a class="code" href="struct_c_r_g_b.html">CRGB</a> scale) {</div>
+<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; mSPI.writeBytesValue(0, 6);</div>
+<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; mSPI.template writeBit&lt;0&gt;(0);</div>
+<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; mSPI.template writeBit&lt;0&gt;(0);</div>
+<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160;</div>
+<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="comment">// Make sure the FLAG_START_BIT flag is set to ensure that an extra 1 bit is sent at the start</span></div>
+<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="comment">// of each triplet of bytes for rgb data</span></div>
+<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; mSPI.template writePixels&lt;FLAG_START_BIT, DATA_NOP, RGB_ORDER&gt;(<a class="code" href="struct_pixel_controller.html">PixelController&lt;RGB_ORDER&gt;</a>(data, nLeds, scale, <a class="code" href="class_c_l_e_d_controller.html#a676f705adf93898739a405b85150a3e7">getDither</a>()));</div>
+<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; }</div>
+<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160;};</div>
+<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;<span class="comment">// Clockless template instantiations - see clockless.h for how the timing values are used</span></div>
+<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160;<span class="preprocessor">#ifdef FASTLED_HAS_CLOCKLESS</span></div>
+<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;</div>
+<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160;<span class="comment">// We want to force all avr&#39;s to use the Trinket controller when running at 8Mhz, because even the 328&#39;s at 8Mhz</span></div>
+<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;<span class="comment">// need the more tightly defined timeframes.</span></div>
+<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160;<span class="preprocessor">#if (F_CPU == 8000000 || F_CPU == 16000000 || F_CPU == 24000000) // || F_CPU == 48000000 || F_CPU == 96000000) // 125ns/clock</span></div>
+<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160;<span class="preprocessor">#define FMUL (F_CPU/8000000)</span></div>
+<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160;<span class="comment">// LPD1886</span></div>
+<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, EOrder RGB_ORDER = RGB&gt;</div>
+<div class="line"><a name="l00427"></a><span class="lineno"><a class="line" href="class_l_p_d1886_controller1250_khz.html"> 427</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_l_p_d1886_controller1250_khz.html">LPD1886Controller1250Khz</a> : <span class="keyword">public</span> ClocklessController&lt;DATA_PIN, 2 * FMUL, 3 * FMUL, 2 * FMUL, RGB_ORDER, 4&gt; {};</div>
+<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;</div>
+<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160;<span class="comment">// WS2811@800khz 2 clocks, 5 clocks, 3 clocks</span></div>
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, EOrder RGB_ORDER = RGB&gt;</div>
-<div class="line"><a name="l00431"></a><span class="lineno"><a class="line" href="class_w_s2811_controller800_khz.html"> 431</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_w_s2811_controller800_khz.html">WS2811Controller800Khz</a> : <span class="keyword">public</span> ClocklessController&lt;DATA_PIN, 3 * FMUL, 4 * FMUL, 3 * FMUL, RGB_ORDER&gt; {};</div>
+<div class="line"><a name="l00431"></a><span class="lineno"><a class="line" href="class_w_s2812_controller800_khz.html"> 431</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_w_s2812_controller800_khz.html">WS2812Controller800Khz</a> : <span class="keyword">public</span> ClocklessController&lt;DATA_PIN, 2 * FMUL, 5 * FMUL, 3 * FMUL, RGB_ORDER&gt; {};</div>
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160;</div>
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, EOrder RGB_ORDER = RGB&gt;</div>
-<div class="line"><a name="l00434"></a><span class="lineno"><a class="line" href="class_w_s2811_controller400_khz.html"> 434</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_w_s2811_controller400_khz.html">WS2811Controller400Khz</a> : <span class="keyword">public</span> ClocklessController&lt;DATA_PIN, 4 * FMUL, 10 * FMUL, 6 * FMUL, RGB_ORDER&gt; {};</div>
+<div class="line"><a name="l00434"></a><span class="lineno"><a class="line" href="class_w_s2811_controller800_khz.html"> 434</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_w_s2811_controller800_khz.html">WS2811Controller800Khz</a> : <span class="keyword">public</span> ClocklessController&lt;DATA_PIN, 3 * FMUL, 4 * FMUL, 3 * FMUL, RGB_ORDER&gt; {};</div>
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160;</div>
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, EOrder RGB_ORDER = RGB&gt;</div>
-<div class="line"><a name="l00437"></a><span class="lineno"><a class="line" href="class_u_c_s1903_controller400_khz.html"> 437</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_u_c_s1903_controller400_khz.html">UCS1903Controller400Khz</a> : <span class="keyword">public</span> ClocklessController&lt;DATA_PIN, 4 * FMUL, 12 * FMUL, 4 * FMUL, RGB_ORDER&gt; {};</div>
+<div class="line"><a name="l00437"></a><span class="lineno"><a class="line" href="class_w_s2811_controller400_khz.html"> 437</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_w_s2811_controller400_khz.html">WS2811Controller400Khz</a> : <span class="keyword">public</span> ClocklessController&lt;DATA_PIN, 4 * FMUL, 10 * FMUL, 6 * FMUL, RGB_ORDER&gt; {};</div>
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160;</div>
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, EOrder RGB_ORDER = RGB&gt;</div>
-<div class="line"><a name="l00440"></a><span class="lineno"><a class="line" href="class_u_c_s1903_b_controller800_khz.html"> 440</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_u_c_s1903_b_controller800_khz.html">UCS1903BController800Khz</a> : <span class="keyword">public</span> ClocklessController&lt;DATA_PIN, 2 * FMUL, 4 * FMUL, 4 * FMUL, RGB_ORDER&gt; {};</div>
+<div class="line"><a name="l00440"></a><span class="lineno"><a class="line" href="class_u_c_s1903_controller400_khz.html"> 440</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_u_c_s1903_controller400_khz.html">UCS1903Controller400Khz</a> : <span class="keyword">public</span> ClocklessController&lt;DATA_PIN, 4 * FMUL, 12 * FMUL, 4 * FMUL, RGB_ORDER&gt; {};</div>
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160;</div>
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, EOrder RGB_ORDER = RGB&gt;</div>
-<div class="line"><a name="l00443"></a><span class="lineno"><a class="line" href="class_u_c_s1904_controller800_khz.html"> 443</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_u_c_s1904_controller800_khz.html">UCS1904Controller800Khz</a> : <span class="keyword">public</span> ClocklessController&lt;DATA_PIN, 3 * FMUL, 3 * FMUL, 4 * FMUL, RGB_ORDER&gt; {};</div>
+<div class="line"><a name="l00443"></a><span class="lineno"><a class="line" href="class_u_c_s1903_b_controller800_khz.html"> 443</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_u_c_s1903_b_controller800_khz.html">UCS1903BController800Khz</a> : <span class="keyword">public</span> ClocklessController&lt;DATA_PIN, 2 * FMUL, 4 * FMUL, 4 * FMUL, RGB_ORDER&gt; {};</div>
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160;</div>
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, EOrder RGB_ORDER = RGB&gt;</div>
-<div class="line"><a name="l00446"></a><span class="lineno"><a class="line" href="class_t_m1809_controller800_khz.html"> 446</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_t_m1809_controller800_khz.html">TM1809Controller800Khz</a> : <span class="keyword">public</span> ClocklessController&lt;DATA_PIN, 2 * FMUL, 5 * FMUL, 3 * FMUL, RGB_ORDER&gt; {};</div>
+<div class="line"><a name="l00446"></a><span class="lineno"><a class="line" href="class_u_c_s1904_controller800_khz.html"> 446</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_u_c_s1904_controller800_khz.html">UCS1904Controller800Khz</a> : <span class="keyword">public</span> ClocklessController&lt;DATA_PIN, 3 * FMUL, 3 * FMUL, 4 * FMUL, RGB_ORDER&gt; {};</div>
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160;</div>
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, EOrder RGB_ORDER = RGB&gt;</div>
-<div class="line"><a name="l00449"></a><span class="lineno"><a class="line" href="class_t_m1803_controller400_khz.html"> 449</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_t_m1803_controller400_khz.html">TM1803Controller400Khz</a> : <span class="keyword">public</span> ClocklessController&lt;DATA_PIN, 6 * FMUL, 9 * FMUL, 6 * FMUL, RGB_ORDER&gt; {};</div>
+<div class="line"><a name="l00449"></a><span class="lineno"><a class="line" href="class_t_m1809_controller800_khz.html"> 449</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_t_m1809_controller800_khz.html">TM1809Controller800Khz</a> : <span class="keyword">public</span> ClocklessController&lt;DATA_PIN, 2 * FMUL, 5 * FMUL, 3 * FMUL, RGB_ORDER&gt; {};</div>
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160;</div>
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, EOrder RGB_ORDER = RGB&gt;</div>
-<div class="line"><a name="l00452"></a><span class="lineno"><a class="line" href="class_t_m1829_controller800_khz.html"> 452</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_t_m1829_controller800_khz.html">TM1829Controller800Khz</a> : <span class="keyword">public</span> ClocklessController&lt;DATA_PIN, 2 * FMUL, 5 * FMUL, 3 * FMUL, RGB_ORDER&gt; {};</div>
+<div class="line"><a name="l00452"></a><span class="lineno"><a class="line" href="class_t_m1803_controller400_khz.html"> 452</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_t_m1803_controller400_khz.html">TM1803Controller400Khz</a> : <span class="keyword">public</span> ClocklessController&lt;DATA_PIN, 6 * FMUL, 9 * FMUL, 6 * FMUL, RGB_ORDER&gt; {};</div>
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160;</div>
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, EOrder RGB_ORDER = RGB&gt;</div>
-<div class="line"><a name="l00455"></a><span class="lineno"><a class="line" href="class_g_w6205_controller400_khz.html"> 455</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_g_w6205_controller400_khz.html">GW6205Controller400Khz</a> : <span class="keyword">public</span> ClocklessController&lt;DATA_PIN, 6 * FMUL, 7 * FMUL, 6 * FMUL, RGB_ORDER, 4&gt; {};</div>
+<div class="line"><a name="l00455"></a><span class="lineno"><a class="line" href="class_t_m1829_controller800_khz.html"> 455</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_t_m1829_controller800_khz.html">TM1829Controller800Khz</a> : <span class="keyword">public</span> ClocklessController&lt;DATA_PIN, 2 * FMUL, 5 * FMUL, 3 * FMUL, RGB_ORDER&gt; {};</div>
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;</div>
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, EOrder RGB_ORDER = RGB&gt;</div>
-<div class="line"><a name="l00458"></a><span class="lineno"><a class="line" href="class_g_w6205_controller800_khz.html"> 458</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_g_w6205_controller800_khz.html">GW6205Controller800Khz</a> : <span class="keyword">public</span> ClocklessController&lt;DATA_PIN, 2 * FMUL, 4 * FMUL, 4 * FMUL, RGB_ORDER, 4&gt; {};</div>
+<div class="line"><a name="l00458"></a><span class="lineno"><a class="line" href="class_g_w6205_controller400_khz.html"> 458</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_g_w6205_controller400_khz.html">GW6205Controller400Khz</a> : <span class="keyword">public</span> ClocklessController&lt;DATA_PIN, 6 * FMUL, 7 * FMUL, 6 * FMUL, RGB_ORDER, 4&gt; {};</div>
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;</div>
-<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160;<span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160;<span class="comment">// GW6205@400khz - 800ns, 800ns, 800ns</span></div>
-<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, EOrder RGB_ORDER = RGB&gt;</div>
-<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;<span class="keyword">class </span><a class="code" href="class_g_w6205_controller400_khz.html">GW6205Controller400Khz</a> : <span class="keyword">public</span> ClocklessController&lt;DATA_PIN, NS(800), NS(800), NS(800), RGB_ORDER, 4&gt; {};</div>
-<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160;<span class="preprocessor">#if NO_TIME(800, 800, 800)</span></div>
-<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;<span class="preprocessor">#warning &quot;Not enough clock cycles available for the GW6205@400khz&quot;</span></div>
-<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160;</div>
-<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;<span class="comment">// GW6205@400khz - 400ns, 400ns, 400ns</span></div>
-<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, EOrder RGB_ORDER = RGB&gt;</div>
-<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160;<span class="keyword">class </span><a class="code" href="class_g_w6205_controller800_khz.html">GW6205Controller800Khz</a> : <span class="keyword">public</span> ClocklessController&lt;DATA_PIN, NS(400), NS(400), NS(400), RGB_ORDER, 4&gt; {};</div>
-<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160;<span class="preprocessor">#if NO_TIME(400, 400, 400)</span></div>
-<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;<span class="preprocessor">#warning &quot;Not enough clock cycles available for the GW6205@400khz&quot;</span></div>
-<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160;</div>
-<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;<span class="comment">// UCS1903 - 500ns, 1500ns, 500ns</span></div>
-<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, EOrder RGB_ORDER = RGB&gt;</div>
-<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160;<span class="keyword">class </span><a class="code" href="class_u_c_s1903_controller400_khz.html">UCS1903Controller400Khz</a> : <span class="keyword">public</span> ClocklessController&lt;DATA_PIN, NS(500), NS(1500), NS(500), RGB_ORDER&gt; {};</div>
-<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160;<span class="preprocessor">#if NO_TIME(500, 1500, 500)</span></div>
-<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;<span class="preprocessor">#warning &quot;Not enough clock cycles available for the UCS1903@400khz&quot;</span></div>
-<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160;</div>
-<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160;<span class="comment">// UCS1903B - 400ns, 450ns, 450ns</span></div>
-<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, EOrder RGB_ORDER = RGB&gt;</div>
-<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160;<span class="keyword">class </span><a class="code" href="class_u_c_s1903_b_controller800_khz.html">UCS1903BController800Khz</a> : <span class="keyword">public</span> ClocklessController&lt;DATA_PIN, NS(400), NS(450), NS(450), RGB_ORDER&gt; {};</div>
-<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160;<span class="preprocessor">#if NO_TIME(400, 450, 450)</span></div>
-<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160;<span class="preprocessor">#warning &quot;Not enough clock cycles available for the UCS1903B@800khz&quot;</span></div>
-<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160;</div>
-<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160;<span class="comment">// UCS1904 - 400ns, 400ns, 450ns</span></div>
-<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, EOrder RGB_ORDER = RGB&gt;</div>
-<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160;<span class="keyword">class </span><a class="code" href="class_u_c_s1904_controller800_khz.html">UCS1904Controller800Khz</a> : <span class="keyword">public</span> ClocklessController&lt;DATA_PIN, NS(400), NS(400), NS(450), RGB_ORDER&gt; {};</div>
-<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;<span class="preprocessor">#if NO_TIME(400, 400, 450)</span></div>
-<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160;<span class="preprocessor">#warning &quot;Not enough clock cycles available for the UCS1904@800khz&quot;</span></div>
-<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160;</div>
-<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160;<span class="comment">// TM1809 - 350ns, 350ns, 550ns</span></div>
-<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, EOrder RGB_ORDER = RGB&gt;</div>
-<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160;<span class="keyword">class </span><a class="code" href="class_t_m1809_controller800_khz.html">TM1809Controller800Khz</a> : <span class="keyword">public</span> ClocklessController&lt;DATA_PIN, NS(350), NS(350), NS(450), RGB_ORDER&gt; {};</div>
-<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160;<span class="preprocessor">#if NO_TIME(350, 350, 550)</span></div>
-<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;<span class="preprocessor">#warning &quot;Not enough clock cycles available for the TM1809&quot;</span></div>
-<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160;</div>
-<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160;<span class="comment">// WS2811 - 320ns, 320ns, 640ns</span></div>
-<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, EOrder RGB_ORDER = RGB&gt;</div>
-<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160;<span class="keyword">class </span><a class="code" href="class_w_s2811_controller800_khz.html">WS2811Controller800Khz</a> : <span class="keyword">public</span> ClocklessController&lt;DATA_PIN, NS(320), NS(320), NS(640), RGB_ORDER&gt; {};</div>
-<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160;<span class="preprocessor">#if NO_TIME(320, 320, 640)</span></div>
-<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160;<span class="preprocessor">#warning &quot;Not enough clock cycles available for the WS2811 (800khz)&quot;</span></div>
-<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;</div>
-<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160;<span class="comment">// WS2812 - 250ns, 625ns, 375ns</span></div>
-<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, EOrder RGB_ORDER = RGB&gt;</div>
-<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160;<span class="keyword">class </span><a class="code" href="class_w_s2812_controller800_khz.html">WS2812Controller800Khz</a> : <span class="keyword">public</span> ClocklessController&lt;DATA_PIN, NS(250), NS(625), NS(375), RGB_ORDER&gt; {};</div>
-<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160;<span class="preprocessor">#if NO_TIME(250, 625, 375)</span></div>
-<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160;<span class="preprocessor">#warning &quot;Not enough clock cycles available for the WS2812 (800khz)&quot;</span></div>
-<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160;</div>
-<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160;<span class="comment">// WS2811@400khz - 800ns, 800ns, 900ns</span></div>
-<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, EOrder RGB_ORDER = RGB&gt;</div>
-<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160;<span class="keyword">class </span><a class="code" href="class_w_s2811_controller400_khz.html">WS2811Controller400Khz</a> : <span class="keyword">public</span> ClocklessController&lt;DATA_PIN, NS(800), NS(800), NS(900), RGB_ORDER&gt; {};</div>
-<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160;<span class="preprocessor">#if NO_TIME(800, 800, 900)</span></div>
-<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160;<span class="preprocessor">#warning &quot;Not enough clock cycles available for the WS2811 (400Khz)&quot;</span></div>
-<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160;</div>
-<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160;<span class="comment">// 750NS, 750NS, 750NS</span></div>
-<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, EOrder RGB_ORDER = RGB&gt;</div>
-<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160;<span class="keyword">class </span><a class="code" href="class_t_m1803_controller400_khz.html">TM1803Controller400Khz</a> : <span class="keyword">public</span> ClocklessController&lt;DATA_PIN, NS(700), NS(1100), NS(700), RGB_ORDER&gt; {};</div>
-<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160;<span class="preprocessor">#if NO_TIME(750, 750, 750)</span></div>
-<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160;<span class="preprocessor">#warning &quot;Not enough clock cycles available for the TM1803&quot;</span></div>
-<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160;</div>
-<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, EOrder RGB_ORDER = RGB&gt;</div>
-<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160;<span class="keyword">class </span><a class="code" href="class_t_m1829_controller800_khz.html">TM1829Controller800Khz</a> : <span class="keyword">public</span> ClocklessController&lt;DATA_PIN, NS(340), NS(340), NS(550), RGB_ORDER, 0, true, 500&gt; {};</div>
+<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, EOrder RGB_ORDER = RGB&gt;</div>
+<div class="line"><a name="l00461"></a><span class="lineno"><a class="line" href="class_g_w6205_controller800_khz.html"> 461</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_g_w6205_controller800_khz.html">GW6205Controller800Khz</a> : <span class="keyword">public</span> ClocklessController&lt;DATA_PIN, 2 * FMUL, 4 * FMUL, 4 * FMUL, RGB_ORDER, 4&gt; {};</div>
+<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;</div>
+<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;<span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160;<span class="comment">// GW6205@400khz - 800ns, 800ns, 800ns</span></div>
+<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, EOrder RGB_ORDER = RGB&gt;</div>
+<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;<span class="keyword">class </span><a class="code" href="class_g_w6205_controller400_khz.html">GW6205Controller400Khz</a> : <span class="keyword">public</span> ClocklessController&lt;DATA_PIN, NS(800), NS(800), NS(800), RGB_ORDER, 4&gt; {};</div>
+<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160;<span class="preprocessor">#if NO_TIME(800, 800, 800)</span></div>
+<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;<span class="preprocessor">#warning &quot;Not enough clock cycles available for the GW6205@400khz&quot;</span></div>
+<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160;</div>
+<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160;<span class="comment">// GW6205@400khz - 400ns, 400ns, 400ns</span></div>
+<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, EOrder RGB_ORDER = RGB&gt;</div>
+<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160;<span class="keyword">class </span><a class="code" href="class_g_w6205_controller800_khz.html">GW6205Controller800Khz</a> : <span class="keyword">public</span> ClocklessController&lt;DATA_PIN, NS(400), NS(400), NS(400), RGB_ORDER, 4&gt; {};</div>
+<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160;<span class="preprocessor">#if NO_TIME(400, 400, 400)</span></div>
+<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;<span class="preprocessor">#warning &quot;Not enough clock cycles available for the GW6205@400khz&quot;</span></div>
+<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160;</div>
+<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160;<span class="comment">// UCS1903 - 500ns, 1500ns, 500ns</span></div>
+<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, EOrder RGB_ORDER = RGB&gt;</div>
+<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160;<span class="keyword">class </span><a class="code" href="class_u_c_s1903_controller400_khz.html">UCS1903Controller400Khz</a> : <span class="keyword">public</span> ClocklessController&lt;DATA_PIN, NS(500), NS(1500), NS(500), RGB_ORDER&gt; {};</div>
+<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160;<span class="preprocessor">#if NO_TIME(500, 1500, 500)</span></div>
+<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160;<span class="preprocessor">#warning &quot;Not enough clock cycles available for the UCS1903@400khz&quot;</span></div>
+<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160;</div>
+<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160;<span class="comment">// UCS1903B - 400ns, 450ns, 450ns</span></div>
+<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, EOrder RGB_ORDER = RGB&gt;</div>
+<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160;<span class="keyword">class </span><a class="code" href="class_u_c_s1903_b_controller800_khz.html">UCS1903BController800Khz</a> : <span class="keyword">public</span> ClocklessController&lt;DATA_PIN, NS(400), NS(450), NS(450), RGB_ORDER&gt; {};</div>
+<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160;<span class="preprocessor">#if NO_TIME(400, 450, 450)</span></div>
+<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160;<span class="preprocessor">#warning &quot;Not enough clock cycles available for the UCS1903B@800khz&quot;</span></div>
+<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160;</div>
+<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;<span class="comment">// UCS1904 - 400ns, 400ns, 450ns</span></div>
+<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, EOrder RGB_ORDER = RGB&gt;</div>
+<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160;<span class="keyword">class </span><a class="code" href="class_u_c_s1904_controller800_khz.html">UCS1904Controller800Khz</a> : <span class="keyword">public</span> ClocklessController&lt;DATA_PIN, NS(400), NS(400), NS(450), RGB_ORDER&gt; {};</div>
+<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160;<span class="preprocessor">#if NO_TIME(400, 400, 450)</span></div>
+<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160;<span class="preprocessor">#warning &quot;Not enough clock cycles available for the UCS1904@800khz&quot;</span></div>
+<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160;</div>
+<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160;<span class="comment">// TM1809 - 350ns, 350ns, 550ns</span></div>
+<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, EOrder RGB_ORDER = RGB&gt;</div>
+<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160;<span class="keyword">class </span><a class="code" href="class_t_m1809_controller800_khz.html">TM1809Controller800Khz</a> : <span class="keyword">public</span> ClocklessController&lt;DATA_PIN, NS(350), NS(350), NS(450), RGB_ORDER&gt; {};</div>
+<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160;<span class="preprocessor">#if NO_TIME(350, 350, 550)</span></div>
+<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160;<span class="preprocessor">#warning &quot;Not enough clock cycles available for the TM1809&quot;</span></div>
+<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160;</div>
+<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160;<span class="comment">// WS2811 - 320ns, 320ns, 640ns</span></div>
+<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, EOrder RGB_ORDER = RGB&gt;</div>
+<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160;<span class="keyword">class </span><a class="code" href="class_w_s2811_controller800_khz.html">WS2811Controller800Khz</a> : <span class="keyword">public</span> ClocklessController&lt;DATA_PIN, NS(320), NS(320), NS(640), RGB_ORDER&gt; {};</div>
+<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;<span class="preprocessor">#if NO_TIME(320, 320, 640)</span></div>
+<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160;<span class="preprocessor">#warning &quot;Not enough clock cycles available for the WS2811 (800khz)&quot;</span></div>
+<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160;</div>
+<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160;<span class="comment">// WS2812 - 250ns, 625ns, 375ns</span></div>
+<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, EOrder RGB_ORDER = RGB&gt;</div>
+<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160;<span class="keyword">class </span><a class="code" href="class_w_s2812_controller800_khz.html">WS2812Controller800Khz</a> : <span class="keyword">public</span> ClocklessController&lt;DATA_PIN, NS(250), NS(625), NS(375), RGB_ORDER&gt; {};</div>
+<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160;<span class="preprocessor">#if NO_TIME(250, 625, 375)</span></div>
+<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160;<span class="preprocessor">#warning &quot;Not enough clock cycles available for the WS2812 (800khz)&quot;</span></div>
+<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160;</div>
+<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160;<span class="comment">// WS2811@400khz - 800ns, 800ns, 900ns</span></div>
+<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, EOrder RGB_ORDER = RGB&gt;</div>
+<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160;<span class="keyword">class </span><a class="code" href="class_w_s2811_controller400_khz.html">WS2811Controller400Khz</a> : <span class="keyword">public</span> ClocklessController&lt;DATA_PIN, NS(800), NS(800), NS(900), RGB_ORDER&gt; {};</div>
+<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160;<span class="preprocessor">#if NO_TIME(800, 800, 900)</span></div>
+<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160;<span class="preprocessor">#warning &quot;Not enough clock cycles available for the WS2811 (400Khz)&quot;</span></div>
+<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160;</div>
+<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160;<span class="comment">// 750NS, 750NS, 750NS</span></div>
+<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, EOrder RGB_ORDER = RGB&gt;</div>
+<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160;<span class="keyword">class </span><a class="code" href="class_t_m1803_controller400_khz.html">TM1803Controller400Khz</a> : <span class="keyword">public</span> ClocklessController&lt;DATA_PIN, NS(700), NS(1100), NS(700), RGB_ORDER&gt; {};</div>
+<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160;<span class="preprocessor">#if NO_TIME(750, 750, 750)</span></div>
+<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160;<span class="preprocessor">#warning &quot;Not enough clock cycles available for the TM1803&quot;</span></div>
+<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160;</div>
<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, EOrder RGB_ORDER = RGB&gt;</div>
-<div class="line"><a name="l00535"></a><span class="lineno"><a class="line" href="class_t_m1829_controller1600_khz.html"> 535</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_t_m1829_controller1600_khz.html">TM1829Controller1600Khz</a> : <span class="keyword">public</span> ClocklessController&lt;DATA_PIN, NS(100), NS(300), NS(200), RGB_ORDER, 0, true, 500&gt; {};</div>
-<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160;<span class="preprocessor">#if NO_TIME(100, 300, 200)</span></div>
-<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160;<span class="preprocessor">#warning &quot;Not enough clock cycles available for TM1829@1.6Mhz&quot;</span></div>
-<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160;</div>
-<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, EOrder RGB_ORDER = RGB&gt;</div>
-<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160;<span class="keyword">class </span><a class="code" href="class_l_p_d1886_controller1250_khz.html">LPD1886Controller1250Khz</a> : <span class="keyword">public</span> ClocklessController&lt;DATA_PIN, NS(200), NS(400), NS(200), RGB_ORDER, 4&gt; {};</div>
-<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160;<span class="preprocessor">#if NO_TIME(200,400,200)</span></div>
-<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160;<span class="preprocessor">#warning &quot;Not enough clock cycles for LPD1886&quot;</span></div>
-<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160;</div>
-<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160;</div>
+<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160;<span class="keyword">class </span><a class="code" href="class_t_m1829_controller800_khz.html">TM1829Controller800Khz</a> : <span class="keyword">public</span> ClocklessController&lt;DATA_PIN, NS(340), NS(340), NS(550), RGB_ORDER, 0, true, 500&gt; {};</div>
+<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160;</div>
+<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, EOrder RGB_ORDER = RGB&gt;</div>
+<div class="line"><a name="l00538"></a><span class="lineno"><a class="line" href="class_t_m1829_controller1600_khz.html"> 538</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_t_m1829_controller1600_khz.html">TM1829Controller1600Khz</a> : <span class="keyword">public</span> ClocklessController&lt;DATA_PIN, NS(100), NS(300), NS(200), RGB_ORDER, 0, true, 500&gt; {};</div>
+<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160;<span class="preprocessor">#if NO_TIME(100, 300, 200)</span></div>
+<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160;<span class="preprocessor">#warning &quot;Not enough clock cycles available for TM1829@1.6Mhz&quot;</span></div>
+<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160;</div>
+<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160;<span class="keyword">template</span> &lt;u<span class="keywordtype">int</span>8_t DATA_PIN, EOrder RGB_ORDER = RGB&gt;</div>
+<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160;<span class="keyword">class </span><a class="code" href="class_l_p_d1886_controller1250_khz.html">LPD1886Controller1250Khz</a> : <span class="keyword">public</span> ClocklessController&lt;DATA_PIN, NS(200), NS(400), NS(200), RGB_ORDER, 4&gt; {};</div>
+<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160;<span class="preprocessor">#if NO_TIME(200,400,200)</span></div>
+<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160;<span class="preprocessor">#warning &quot;Not enough clock cycles for LPD1886&quot;</span></div>
+<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160;</div>
<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160;FASTLED_NAMESPACE_END</div>
-<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160;</div>
-<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160;</div>
+<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160;FASTLED_NAMESPACE_END</div>
+<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160;</div>
+<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="ttc" id="class_s_p_i_output_html"><div class="ttname"><a href="class_s_p_i_output.html">SPIOutput&lt; DATA_PIN, CLOCK_PIN, SPI_SPEED &gt;</a></div></div>
-<div class="ttc" id="class_u_c_s1903_controller400_khz_html"><div class="ttname"><a href="class_u_c_s1903_controller400_khz.html">UCS1903Controller400Khz</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:437</div></div>
+<div class="ttc" id="class_u_c_s1903_controller400_khz_html"><div class="ttname"><a href="class_u_c_s1903_controller400_khz.html">UCS1903Controller400Khz</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:440</div></div>
<div class="ttc" id="struct_c_r_g_b_html"><div class="ttname"><a href="struct_c_r_g_b.html">CRGB</a></div><div class="ttdoc">Representation of an RGB pixel (Red, Green, Blue) </div><div class="ttdef"><b>Definition:</b> pixeltypes.h:88</div></div>
-<div class="ttc" id="class_u_c_s1904_controller800_khz_html"><div class="ttname"><a href="class_u_c_s1904_controller800_khz.html">UCS1904Controller800Khz</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:443</div></div>
-<div class="ttc" id="class_c_l_e_d_controller_html"><div class="ttname"><a href="class_c_l_e_d_controller.html">CLEDController</a></div><div class="ttdoc">Base definition for an LED controller. </div><div class="ttdef"><b>Definition:</b> controller.h:34</div></div>
-<div class="ttc" id="class_w_s2801_controller_html_ad6187b68bccb831cd5cab3cffbd6bdb4"><div class="ttname"><a href="class_w_s2801_controller.html#ad6187b68bccb831cd5cab3cffbd6bdb4">WS2801Controller::init</a></div><div class="ttdeci">virtual void init()</div><div class="ttdoc">initialize the LED controller </div><div class="ttdef"><b>Definition:</b> chipsets.h:107</div></div>
-<div class="ttc" id="class_l_p_d8806_controller_html_a4f6471eddcfe5445502b02f1f3179259"><div class="ttname"><a href="class_l_p_d8806_controller.html#a4f6471eddcfe5445502b02f1f3179259">LPD8806Controller::showColor</a></div><div class="ttdeci">virtual void showColor(const struct CRGB &amp;data, int nLeds, CRGB scale)</div><div class="ttdoc">set all the leds on the controller to a given color </div><div class="ttdef"><b>Definition:</b> chipsets.h:70</div></div>
-<div class="ttc" id="class_w_s2811_controller800_khz_html"><div class="ttname"><a href="class_w_s2811_controller800_khz.html">WS2811Controller800Khz</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:431</div></div>
-<div class="ttc" id="class_t_m1829_controller1600_khz_html"><div class="ttname"><a href="class_t_m1829_controller1600_khz.html">TM1829Controller1600Khz</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:535</div></div>
-<div class="ttc" id="class_l_p_d8806_controller_html_a7da0ecf67004256c83131406b2f4889e"><div class="ttname"><a href="class_l_p_d8806_controller.html#a7da0ecf67004256c83131406b2f4889e">LPD8806Controller::clearLeds</a></div><div class="ttdeci">virtual void clearLeds(int nLeds)</div><div class="ttdoc">clear out/zero out the given number of leds. </div><div class="ttdef"><b>Definition:</b> chipsets.h:60</div></div>
-<div class="ttc" id="class_l_p_d8806_controller_html"><div class="ttname"><a href="class_l_p_d8806_controller.html">LPD8806Controller</a></div><div class="ttdoc">LPD8806 controller class. </div><div class="ttdef"><b>Definition:</b> chipsets.h:26</div></div>
-<div class="ttc" id="class_a_p_a102_controller_html_a245148d2621eb73999ab673852c49332"><div class="ttname"><a href="class_a_p_a102_controller.html#a245148d2621eb73999ab673852c49332">APA102Controller::show</a></div><div class="ttdeci">virtual void show(const struct CRGB *data, int nLeds, CRGB scale)</div><div class="ttdoc">write the passed in rgb data out to the leds managed by this controller </div><div class="ttdef"><b>Definition:</b> chipsets.h:200</div></div>
-<div class="ttc" id="class_u_c_s1903_b_controller800_khz_html"><div class="ttname"><a href="class_u_c_s1903_b_controller800_khz.html">UCS1903BController800Khz</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:440</div></div>
-<div class="ttc" id="class_p9813_controller_html_ad6fcb36b9378df660721ae24ed857b8a"><div class="ttname"><a href="class_p9813_controller.html#ad6fcb36b9378df660721ae24ed857b8a">P9813Controller::init</a></div><div class="ttdeci">virtual void init()</div><div class="ttdoc">initialize the LED controller </div><div class="ttdef"><b>Definition:</b> chipsets.h:269</div></div>
-<div class="ttc" id="class_s_m16716_controller_html_a1ba5a4e3f00b2235f278b9fb9aeb1591"><div class="ttname"><a href="class_s_m16716_controller.html#a1ba5a4e3f00b2235f278b9fb9aeb1591">SM16716Controller::init</a></div><div class="ttdeci">virtual void init()</div><div class="ttdoc">initialize the LED controller </div><div class="ttdef"><b>Definition:</b> chipsets.h:362</div></div>
-<div class="ttc" id="class_g_w6205_controller800_khz_html"><div class="ttname"><a href="class_g_w6205_controller800_khz.html">GW6205Controller800Khz</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:458</div></div>
-<div class="ttc" id="class_a_p_a102_controller_html_a0e875981e076baf9cd1c5e7599b83cd0"><div class="ttname"><a href="class_a_p_a102_controller.html#a0e875981e076baf9cd1c5e7599b83cd0">APA102Controller::init</a></div><div class="ttdeci">virtual void init()</div><div class="ttdoc">initialize the LED controller </div><div class="ttdef"><b>Definition:</b> chipsets.h:170</div></div>
-<div class="ttc" id="class_l_p_d8806_controller_html_abe5be69b938d0709cfc77fcf57c75608"><div class="ttname"><a href="class_l_p_d8806_controller.html#abe5be69b938d0709cfc77fcf57c75608">LPD8806Controller::init</a></div><div class="ttdeci">virtual void init()</div><div class="ttdoc">initialize the LED controller </div><div class="ttdef"><b>Definition:</b> chipsets.h:55</div></div>
-<div class="ttc" id="class_p9813_controller_html_ae60dbfc4d27c62448032c61e7730ec8a"><div class="ttname"><a href="class_p9813_controller.html#ae60dbfc4d27c62448032c61e7730ec8a">P9813Controller::showColor</a></div><div class="ttdeci">virtual void showColor(const struct CRGB &amp;data, int nLeds, CRGB scale)</div><div class="ttdoc">set all the leds on the controller to a given color </div><div class="ttdef"><b>Definition:</b> chipsets.h:279</div></div>
-<div class="ttc" id="class_s_m16716_controller_html_a89d3d5ef2239a9d452bc2478b0549ad8"><div class="ttname"><a href="class_s_m16716_controller.html#a89d3d5ef2239a9d452bc2478b0549ad8">SM16716Controller::clearLeds</a></div><div class="ttdeci">virtual void clearLeds(int nLeds)</div><div class="ttdoc">clear out/zero out the given number of leds. </div><div class="ttdef"><b>Definition:</b> chipsets.h:366</div></div>
-<div class="ttc" id="struct_pixel_controller_html"><div class="ttname"><a href="struct_pixel_controller.html">PixelController</a></div><div class="ttdoc">Pixel controller class. </div><div class="ttdef"><b>Definition:</b> controller.h:181</div></div>
-<div class="ttc" id="class_w_s2812_controller800_khz_html"><div class="ttname"><a href="class_w_s2812_controller800_khz.html">WS2812Controller800Khz</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:428</div></div>
-<div class="ttc" id="class_t_m1803_controller400_khz_html"><div class="ttname"><a href="class_t_m1803_controller400_khz.html">TM1803Controller400Khz</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:449</div></div>
-<div class="ttc" id="class_p9813_controller_html_aac4f48b0da93055c0da7285839c4ce81"><div class="ttname"><a href="class_p9813_controller.html#aac4f48b0da93055c0da7285839c4ce81">P9813Controller::show</a></div><div class="ttdeci">virtual void show(const struct CRGB *data, int nLeds, CRGB scale)</div><div class="ttdoc">write the passed in rgb data out to the leds managed by this controller </div><div class="ttdef"><b>Definition:</b> chipsets.h:295</div></div>
-<div class="ttc" id="class_t_m1809_controller800_khz_html"><div class="ttname"><a href="class_t_m1809_controller800_khz.html">TM1809Controller800Khz</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:446</div></div>
-<div class="ttc" id="class_a_p_a102_controller_html_aadcdde1b8fc6c680504fe9455ceff0fb"><div class="ttname"><a href="class_a_p_a102_controller.html#aadcdde1b8fc6c680504fe9455ceff0fb">APA102Controller::clearLeds</a></div><div class="ttdeci">virtual void clearLeds(int nLeds)</div><div class="ttdoc">clear out/zero out the given number of leds. </div><div class="ttdef"><b>Definition:</b> chipsets.h:174</div></div>
-<div class="ttc" id="class_w_s2801_controller_html"><div class="ttname"><a href="class_w_s2801_controller.html">WS2801Controller</a></div><div class="ttdoc">WS2801 controller class. </div><div class="ttdef"><b>Definition:</b> chipsets.h:100</div></div>
-<div class="ttc" id="class_l_p_d1886_controller1250_khz_html"><div class="ttname"><a href="class_l_p_d1886_controller1250_khz.html">LPD1886Controller1250Khz</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:424</div></div>
-<div class="ttc" id="class_w_s2801_controller_html_a867d4249b5921e0d717c6c21038bb11c"><div class="ttname"><a href="class_w_s2801_controller.html#a867d4249b5921e0d717c6c21038bb11c">WS2801Controller::clearLeds</a></div><div class="ttdeci">virtual void clearLeds(int nLeds)</div><div class="ttdoc">clear out/zero out the given number of leds. </div><div class="ttdef"><b>Definition:</b> chipsets.h:112</div></div>
-<div class="ttc" id="class_t_m1829_controller800_khz_html"><div class="ttname"><a href="class_t_m1829_controller800_khz.html">TM1829Controller800Khz</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:452</div></div>
+<div class="ttc" id="class_u_c_s1904_controller800_khz_html"><div class="ttname"><a href="class_u_c_s1904_controller800_khz.html">UCS1904Controller800Khz</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:446</div></div>
+<div class="ttc" id="class_c_l_e_d_controller_html"><div class="ttname"><a href="class_c_l_e_d_controller.html">CLEDController</a></div><div class="ttdoc">Base definition for an LED controller. </div><div class="ttdef"><b>Definition:</b> controller.h:37</div></div>
+<div class="ttc" id="class_w_s2801_controller_html_ad6187b68bccb831cd5cab3cffbd6bdb4"><div class="ttname"><a href="class_w_s2801_controller.html#ad6187b68bccb831cd5cab3cffbd6bdb4">WS2801Controller::init</a></div><div class="ttdeci">virtual void init()</div><div class="ttdoc">initialize the LED controller </div><div class="ttdef"><b>Definition:</b> chipsets.h:110</div></div>
+<div class="ttc" id="class_l_p_d8806_controller_html_a4f6471eddcfe5445502b02f1f3179259"><div class="ttname"><a href="class_l_p_d8806_controller.html#a4f6471eddcfe5445502b02f1f3179259">LPD8806Controller::showColor</a></div><div class="ttdeci">virtual void showColor(const struct CRGB &amp;data, int nLeds, CRGB scale)</div><div class="ttdoc">set all the leds on the controller to a given color </div><div class="ttdef"><b>Definition:</b> chipsets.h:73</div></div>
+<div class="ttc" id="class_w_s2811_controller800_khz_html"><div class="ttname"><a href="class_w_s2811_controller800_khz.html">WS2811Controller800Khz</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:434</div></div>
+<div class="ttc" id="class_t_m1829_controller1600_khz_html"><div class="ttname"><a href="class_t_m1829_controller1600_khz.html">TM1829Controller1600Khz</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:538</div></div>
+<div class="ttc" id="class_l_p_d8806_controller_html_a7da0ecf67004256c83131406b2f4889e"><div class="ttname"><a href="class_l_p_d8806_controller.html#a7da0ecf67004256c83131406b2f4889e">LPD8806Controller::clearLeds</a></div><div class="ttdeci">virtual void clearLeds(int nLeds)</div><div class="ttdoc">clear out/zero out the given number of leds. </div><div class="ttdef"><b>Definition:</b> chipsets.h:63</div></div>
+<div class="ttc" id="class_l_p_d8806_controller_html"><div class="ttname"><a href="class_l_p_d8806_controller.html">LPD8806Controller</a></div><div class="ttdoc">LPD8806 controller class. </div><div class="ttdef"><b>Definition:</b> chipsets.h:29</div></div>
+<div class="ttc" id="class_a_p_a102_controller_html_a245148d2621eb73999ab673852c49332"><div class="ttname"><a href="class_a_p_a102_controller.html#a245148d2621eb73999ab673852c49332">APA102Controller::show</a></div><div class="ttdeci">virtual void show(const struct CRGB *data, int nLeds, CRGB scale)</div><div class="ttdoc">write the passed in rgb data out to the leds managed by this controller </div><div class="ttdef"><b>Definition:</b> chipsets.h:203</div></div>
+<div class="ttc" id="class_u_c_s1903_b_controller800_khz_html"><div class="ttname"><a href="class_u_c_s1903_b_controller800_khz.html">UCS1903BController800Khz</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:443</div></div>
+<div class="ttc" id="class_p9813_controller_html_ad6fcb36b9378df660721ae24ed857b8a"><div class="ttname"><a href="class_p9813_controller.html#ad6fcb36b9378df660721ae24ed857b8a">P9813Controller::init</a></div><div class="ttdeci">virtual void init()</div><div class="ttdoc">initialize the LED controller </div><div class="ttdef"><b>Definition:</b> chipsets.h:272</div></div>
+<div class="ttc" id="class_s_m16716_controller_html_a1ba5a4e3f00b2235f278b9fb9aeb1591"><div class="ttname"><a href="class_s_m16716_controller.html#a1ba5a4e3f00b2235f278b9fb9aeb1591">SM16716Controller::init</a></div><div class="ttdeci">virtual void init()</div><div class="ttdoc">initialize the LED controller </div><div class="ttdef"><b>Definition:</b> chipsets.h:365</div></div>
+<div class="ttc" id="class_g_w6205_controller800_khz_html"><div class="ttname"><a href="class_g_w6205_controller800_khz.html">GW6205Controller800Khz</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:461</div></div>
+<div class="ttc" id="class_a_p_a102_controller_html_a0e875981e076baf9cd1c5e7599b83cd0"><div class="ttname"><a href="class_a_p_a102_controller.html#a0e875981e076baf9cd1c5e7599b83cd0">APA102Controller::init</a></div><div class="ttdeci">virtual void init()</div><div class="ttdoc">initialize the LED controller </div><div class="ttdef"><b>Definition:</b> chipsets.h:173</div></div>
+<div class="ttc" id="class_l_p_d8806_controller_html_abe5be69b938d0709cfc77fcf57c75608"><div class="ttname"><a href="class_l_p_d8806_controller.html#abe5be69b938d0709cfc77fcf57c75608">LPD8806Controller::init</a></div><div class="ttdeci">virtual void init()</div><div class="ttdoc">initialize the LED controller </div><div class="ttdef"><b>Definition:</b> chipsets.h:58</div></div>
+<div class="ttc" id="class_p9813_controller_html_ae60dbfc4d27c62448032c61e7730ec8a"><div class="ttname"><a href="class_p9813_controller.html#ae60dbfc4d27c62448032c61e7730ec8a">P9813Controller::showColor</a></div><div class="ttdeci">virtual void showColor(const struct CRGB &amp;data, int nLeds, CRGB scale)</div><div class="ttdoc">set all the leds on the controller to a given color </div><div class="ttdef"><b>Definition:</b> chipsets.h:282</div></div>
+<div class="ttc" id="class_s_m16716_controller_html_a89d3d5ef2239a9d452bc2478b0549ad8"><div class="ttname"><a href="class_s_m16716_controller.html#a89d3d5ef2239a9d452bc2478b0549ad8">SM16716Controller::clearLeds</a></div><div class="ttdeci">virtual void clearLeds(int nLeds)</div><div class="ttdoc">clear out/zero out the given number of leds. </div><div class="ttdef"><b>Definition:</b> chipsets.h:369</div></div>
+<div class="ttc" id="struct_pixel_controller_html"><div class="ttname"><a href="struct_pixel_controller.html">PixelController</a></div><div class="ttdoc">Pixel controller class. </div><div class="ttdef"><b>Definition:</b> controller.h:184</div></div>
+<div class="ttc" id="class_w_s2812_controller800_khz_html"><div class="ttname"><a href="class_w_s2812_controller800_khz.html">WS2812Controller800Khz</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:431</div></div>
+<div class="ttc" id="class_t_m1803_controller400_khz_html"><div class="ttname"><a href="class_t_m1803_controller400_khz.html">TM1803Controller400Khz</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:452</div></div>
+<div class="ttc" id="class_p9813_controller_html_aac4f48b0da93055c0da7285839c4ce81"><div class="ttname"><a href="class_p9813_controller.html#aac4f48b0da93055c0da7285839c4ce81">P9813Controller::show</a></div><div class="ttdeci">virtual void show(const struct CRGB *data, int nLeds, CRGB scale)</div><div class="ttdoc">write the passed in rgb data out to the leds managed by this controller </div><div class="ttdef"><b>Definition:</b> chipsets.h:298</div></div>
+<div class="ttc" id="class_t_m1809_controller800_khz_html"><div class="ttname"><a href="class_t_m1809_controller800_khz.html">TM1809Controller800Khz</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:449</div></div>
+<div class="ttc" id="class_a_p_a102_controller_html_aadcdde1b8fc6c680504fe9455ceff0fb"><div class="ttname"><a href="class_a_p_a102_controller.html#aadcdde1b8fc6c680504fe9455ceff0fb">APA102Controller::clearLeds</a></div><div class="ttdeci">virtual void clearLeds(int nLeds)</div><div class="ttdoc">clear out/zero out the given number of leds. </div><div class="ttdef"><b>Definition:</b> chipsets.h:177</div></div>
+<div class="ttc" id="class_w_s2801_controller_html"><div class="ttname"><a href="class_w_s2801_controller.html">WS2801Controller</a></div><div class="ttdoc">WS2801 controller class. </div><div class="ttdef"><b>Definition:</b> chipsets.h:103</div></div>
+<div class="ttc" id="class_l_p_d1886_controller1250_khz_html"><div class="ttname"><a href="class_l_p_d1886_controller1250_khz.html">LPD1886Controller1250Khz</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:427</div></div>
+<div class="ttc" id="class_w_s2801_controller_html_a867d4249b5921e0d717c6c21038bb11c"><div class="ttname"><a href="class_w_s2801_controller.html#a867d4249b5921e0d717c6c21038bb11c">WS2801Controller::clearLeds</a></div><div class="ttdeci">virtual void clearLeds(int nLeds)</div><div class="ttdoc">clear out/zero out the given number of leds. </div><div class="ttdef"><b>Definition:</b> chipsets.h:115</div></div>
+<div class="ttc" id="class_t_m1829_controller800_khz_html"><div class="ttname"><a href="class_t_m1829_controller800_khz.html">TM1829Controller800Khz</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:455</div></div>
<div class="ttc" id="class_c_min_wait_html"><div class="ttname"><a href="class_c_min_wait.html">CMinWait&lt; 1000 &gt;</a></div></div>
-<div class="ttc" id="class_l_p_d8806_controller_html_a31d4e01a823682556e26748193f722e5"><div class="ttname"><a href="class_l_p_d8806_controller.html#a31d4e01a823682556e26748193f722e5">LPD8806Controller::show</a></div><div class="ttdeci">virtual void show(const struct CRGB *data, int nLeds, CRGB scale)</div><div class="ttdoc">write the passed in rgb data out to the leds managed by this controller </div><div class="ttdef"><b>Definition:</b> chipsets.h:74</div></div>
-<div class="ttc" id="class_w_s2801_controller_html_a615609bf16dd4c8fcc9ccf286ca52501"><div class="ttname"><a href="class_w_s2801_controller.html#a615609bf16dd4c8fcc9ccf286ca52501">WS2801Controller::showColor</a></div><div class="ttdeci">virtual void showColor(const struct CRGB &amp;data, int nLeds, CRGB scale)</div><div class="ttdoc">set all the leds on the controller to a given color </div><div class="ttdef"><b>Definition:</b> chipsets.h:120</div></div>
-<div class="ttc" id="class_p9813_controller_html_ac2fddaa8ac8860649da9865b58dca13c"><div class="ttname"><a href="class_p9813_controller.html#ac2fddaa8ac8860649da9865b58dca13c">P9813Controller::clearLeds</a></div><div class="ttdeci">virtual void clearLeds(int nLeds)</div><div class="ttdoc">clear out/zero out the given number of leds. </div><div class="ttdef"><b>Definition:</b> chipsets.h:273</div></div>
-<div class="ttc" id="class_p9813_controller_html"><div class="ttname"><a href="class_p9813_controller.html">P9813Controller</a></div><div class="ttdoc">P9813 controller class. </div><div class="ttdef"><b>Definition:</b> chipsets.h:255</div></div>
-<div class="ttc" id="class_s_m16716_controller_html_a3d720053186fd61d6ad90d48cac3d57d"><div class="ttname"><a href="class_s_m16716_controller.html#a3d720053186fd61d6ad90d48cac3d57d">SM16716Controller::show</a></div><div class="ttdeci">virtual void show(const struct CRGB *data, int nLeds, CRGB scale)</div><div class="ttdoc">write the passed in rgb data out to the leds managed by this controller </div><div class="ttdef"><b>Definition:</b> chipsets.h:386</div></div>
-<div class="ttc" id="class_a_p_a102_controller_html_a0aa9f2896fe8b23554623fd3de0d5428"><div class="ttname"><a href="class_a_p_a102_controller.html#a0aa9f2896fe8b23554623fd3de0d5428">APA102Controller::showColor</a></div><div class="ttdeci">virtual void showColor(const struct CRGB &amp;data, int nLeds, CRGB scale)</div><div class="ttdoc">set all the leds on the controller to a given color </div><div class="ttdef"><b>Definition:</b> chipsets.h:180</div></div>
-<div class="ttc" id="class_g_w6205_controller400_khz_html"><div class="ttname"><a href="class_g_w6205_controller400_khz.html">GW6205Controller400Khz</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:455</div></div>
-<div class="ttc" id="class_w_s2811_controller400_khz_html"><div class="ttname"><a href="class_w_s2811_controller400_khz.html">WS2811Controller400Khz</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:434</div></div>
-<div class="ttc" id="class_c_l_e_d_controller_html_a676f705adf93898739a405b85150a3e7"><div class="ttname"><a href="class_c_l_e_d_controller.html#a676f705adf93898739a405b85150a3e7">CLEDController::getDither</a></div><div class="ttdeci">uint8_t getDither()</div><div class="ttdoc">get the dithering option currently set for this controller </div><div class="ttdef"><b>Definition:</b> controller.h:135</div></div>
-<div class="ttc" id="class_a_p_a102_controller_html"><div class="ttname"><a href="class_a_p_a102_controller.html">APA102Controller</a></div><div class="ttdoc">APA102 controller class. </div><div class="ttdef"><b>Definition:</b> chipsets.h:156</div></div>
-<div class="ttc" id="class_w_s2803_controller_html"><div class="ttname"><a href="class_w_s2803_controller.html">WS2803Controller</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:142</div></div>
-<div class="ttc" id="group___bitswap_html_ga01396a2e40133293c3badab349ac99f0"><div class="ttname"><a href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a></div><div class="ttdeci">__attribute__((always_inline)) inline void swapbits8(bitswap_type in</div><div class="ttdoc">Do an 8byte by 8bit rotation. </div><div class="ttdef"><b>Definition:</b> fastled_delay.h:82</div></div>
-<div class="ttc" id="class_s_m16716_controller_html_a7df8b8a34e0dc067c69aa056deca9677"><div class="ttname"><a href="class_s_m16716_controller.html#a7df8b8a34e0dc067c69aa056deca9677">SM16716Controller::showColor</a></div><div class="ttdeci">virtual void showColor(const struct CRGB &amp;data, int nLeds, CRGB scale)</div><div class="ttdoc">set all the leds on the controller to a given color </div><div class="ttdef"><b>Definition:</b> chipsets.h:381</div></div>
-<div class="ttc" id="class_s_m16716_controller_html"><div class="ttname"><a href="class_s_m16716_controller.html">SM16716Controller</a></div><div class="ttdoc">SM16716 controller class. </div><div class="ttdef"><b>Definition:</b> chipsets.h:345</div></div>
-<div class="ttc" id="class_w_s2801_controller_html_a69fca4db95f5f60f27d7d1a8c7fa16a0"><div class="ttname"><a href="class_w_s2801_controller.html#a69fca4db95f5f60f27d7d1a8c7fa16a0">WS2801Controller::show</a></div><div class="ttdeci">virtual void show(const struct CRGB *data, int nLeds, CRGB scale)</div><div class="ttdoc">write the passed in rgb data out to the leds managed by this controller </div><div class="ttdef"><b>Definition:</b> chipsets.h:126</div></div>
+<div class="ttc" id="class_l_p_d8806_controller_html_a31d4e01a823682556e26748193f722e5"><div class="ttname"><a href="class_l_p_d8806_controller.html#a31d4e01a823682556e26748193f722e5">LPD8806Controller::show</a></div><div class="ttdeci">virtual void show(const struct CRGB *data, int nLeds, CRGB scale)</div><div class="ttdoc">write the passed in rgb data out to the leds managed by this controller </div><div class="ttdef"><b>Definition:</b> chipsets.h:77</div></div>
+<div class="ttc" id="class_w_s2801_controller_html_a615609bf16dd4c8fcc9ccf286ca52501"><div class="ttname"><a href="class_w_s2801_controller.html#a615609bf16dd4c8fcc9ccf286ca52501">WS2801Controller::showColor</a></div><div class="ttdeci">virtual void showColor(const struct CRGB &amp;data, int nLeds, CRGB scale)</div><div class="ttdoc">set all the leds on the controller to a given color </div><div class="ttdef"><b>Definition:</b> chipsets.h:123</div></div>
+<div class="ttc" id="class_p9813_controller_html_ac2fddaa8ac8860649da9865b58dca13c"><div class="ttname"><a href="class_p9813_controller.html#ac2fddaa8ac8860649da9865b58dca13c">P9813Controller::clearLeds</a></div><div class="ttdeci">virtual void clearLeds(int nLeds)</div><div class="ttdoc">clear out/zero out the given number of leds. </div><div class="ttdef"><b>Definition:</b> chipsets.h:276</div></div>
+<div class="ttc" id="class_p9813_controller_html"><div class="ttname"><a href="class_p9813_controller.html">P9813Controller</a></div><div class="ttdoc">P9813 controller class. </div><div class="ttdef"><b>Definition:</b> chipsets.h:258</div></div>
+<div class="ttc" id="class_s_m16716_controller_html_a3d720053186fd61d6ad90d48cac3d57d"><div class="ttname"><a href="class_s_m16716_controller.html#a3d720053186fd61d6ad90d48cac3d57d">SM16716Controller::show</a></div><div class="ttdeci">virtual void show(const struct CRGB *data, int nLeds, CRGB scale)</div><div class="ttdoc">write the passed in rgb data out to the leds managed by this controller </div><div class="ttdef"><b>Definition:</b> chipsets.h:389</div></div>
+<div class="ttc" id="class_a_p_a102_controller_html_a0aa9f2896fe8b23554623fd3de0d5428"><div class="ttname"><a href="class_a_p_a102_controller.html#a0aa9f2896fe8b23554623fd3de0d5428">APA102Controller::showColor</a></div><div class="ttdeci">virtual void showColor(const struct CRGB &amp;data, int nLeds, CRGB scale)</div><div class="ttdoc">set all the leds on the controller to a given color </div><div class="ttdef"><b>Definition:</b> chipsets.h:183</div></div>
+<div class="ttc" id="class_g_w6205_controller400_khz_html"><div class="ttname"><a href="class_g_w6205_controller400_khz.html">GW6205Controller400Khz</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:458</div></div>
+<div class="ttc" id="class_w_s2811_controller400_khz_html"><div class="ttname"><a href="class_w_s2811_controller400_khz.html">WS2811Controller400Khz</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:437</div></div>
+<div class="ttc" id="class_c_l_e_d_controller_html_a676f705adf93898739a405b85150a3e7"><div class="ttname"><a href="class_c_l_e_d_controller.html#a676f705adf93898739a405b85150a3e7">CLEDController::getDither</a></div><div class="ttdeci">uint8_t getDither()</div><div class="ttdoc">get the dithering option currently set for this controller </div><div class="ttdef"><b>Definition:</b> controller.h:138</div></div>
+<div class="ttc" id="class_a_p_a102_controller_html"><div class="ttname"><a href="class_a_p_a102_controller.html">APA102Controller</a></div><div class="ttdoc">APA102 controller class. </div><div class="ttdef"><b>Definition:</b> chipsets.h:159</div></div>
+<div class="ttc" id="class_w_s2803_controller_html"><div class="ttname"><a href="class_w_s2803_controller.html">WS2803Controller</a></div><div class="ttdef"><b>Definition:</b> chipsets.h:145</div></div>
+<div class="ttc" id="group___bitswap_html_ga01396a2e40133293c3badab349ac99f0"><div class="ttname"><a href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a></div><div class="ttdeci">__attribute__((always_inline)) inline void swapbits8(bitswap_type in</div><div class="ttdoc">Do an 8byte by 8bit rotation. </div><div class="ttdef"><b>Definition:</b> fastled_delay.h:85</div></div>
+<div class="ttc" id="class_s_m16716_controller_html_a7df8b8a34e0dc067c69aa056deca9677"><div class="ttname"><a href="class_s_m16716_controller.html#a7df8b8a34e0dc067c69aa056deca9677">SM16716Controller::showColor</a></div><div class="ttdeci">virtual void showColor(const struct CRGB &amp;data, int nLeds, CRGB scale)</div><div class="ttdoc">set all the leds on the controller to a given color </div><div class="ttdef"><b>Definition:</b> chipsets.h:384</div></div>
+<div class="ttc" id="class_s_m16716_controller_html"><div class="ttname"><a href="class_s_m16716_controller.html">SM16716Controller</a></div><div class="ttdoc">SM16716 controller class. </div><div class="ttdef"><b>Definition:</b> chipsets.h:348</div></div>
+<div class="ttc" id="class_w_s2801_controller_html_a69fca4db95f5f60f27d7d1a8c7fa16a0"><div class="ttname"><a href="class_w_s2801_controller.html#a69fca4db95f5f60f27d7d1a8c7fa16a0">WS2801Controller::show</a></div><div class="ttdeci">virtual void show(const struct CRGB *data, int nLeds, CRGB scale)</div><div class="ttdoc">write the passed in rgb data out to the leds managed by this controller </div><div class="ttdef"><b>Definition:</b> chipsets.h:129</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:46 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_a_p_a102_controller-members.html b/docs/3.1/class_a_p_a102_controller-members.html
index 590224fc..e9eb8dab 100644
--- a/docs/3.1/class_a_p_a102_controller-members.html
+++ b/docs/3.1/class_a_p_a102_controller-members.html
@@ -133,7 +133,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_a_p_a102_controller.html b/docs/3.1/class_a_p_a102_controller.html
index 2458889c..55d31abc 100644
--- a/docs/3.1/class_a_p_a102_controller.html
+++ b/docs/3.1/class_a_p_a102_controller.html
@@ -444,7 +444,7 @@ template&lt;uint8_t DATA_PIN, uint8_t CLOCK_PIN, EOrder RGB_ORDER = BGR, uint8_t
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_a_p_a104.html b/docs/3.1/class_a_p_a104.html
index 06800183..2fafaa1e 100644
--- a/docs/3.1/class_a_p_a104.html
+++ b/docs/3.1/class_a_p_a104.html
@@ -109,7 +109,7 @@ Collaboration diagram for APA104&lt; DATA_PIN, RGB_ORDER &gt;:</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_a_v_r_software_s_p_i_output-members.html b/docs/3.1/class_a_v_r_software_s_p_i_output-members.html
index f8e3836e..2ec62dc0 100644
--- a/docs/3.1/class_a_v_r_software_s_p_i_output-members.html
+++ b/docs/3.1/class_a_v_r_software_s_p_i_output-members.html
@@ -107,7 +107,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_a_v_r_software_s_p_i_output.html b/docs/3.1/class_a_v_r_software_s_p_i_output.html
index 5728bf45..4d0137ec 100644
--- a/docs/3.1/class_a_v_r_software_s_p_i_output.html
+++ b/docs/3.1/class_a_v_r_software_s_p_i_output.html
@@ -140,7 +140,7 @@ static void&#160;</td><td class="memItemRight" valign="bottom"><b>writeByte</b>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_c_every_n_time_periods-members.html b/docs/3.1/class_c_every_n_time_periods-members.html
index 9fb75d07..efe600ea 100644
--- a/docs/3.1/class_c_every_n_time_periods-members.html
+++ b/docs/3.1/class_c_every_n_time_periods-members.html
@@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_c_every_n_time_periods.html b/docs/3.1/class_c_every_n_time_periods.html
index 85114046..47de0658 100644
--- a/docs/3.1/class_c_every_n_time_periods.html
+++ b/docs/3.1/class_c_every_n_time_periods.html
@@ -145,7 +145,7 @@ timeType&#160;</td><td class="memItemRight" valign="bottom"><b>mPeriod</b></td><
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_c_fast_l_e_d-members.html b/docs/3.1/class_c_fast_l_e_d-members.html
index a6cc7796..5d0897ea 100644
--- a/docs/3.1/class_c_fast_l_e_d-members.html
+++ b/docs/3.1/class_c_fast_l_e_d-members.html
@@ -133,7 +133,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_c_fast_l_e_d.html b/docs/3.1/class_c_fast_l_e_d.html
index dcaff46a..66050259 100644
--- a/docs/3.1/class_c_fast_l_e_d.html
+++ b/docs/3.1/class_c_fast_l_e_d.html
@@ -1009,7 +1009,7 @@ template&lt;EBlockChipsets CHIPSET, int NUM_LANES, EOrder RGB_ORDER&gt; </div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_c_h_s_v_palette16-members.html b/docs/3.1/class_c_h_s_v_palette16-members.html
index 00a1c9ec..0f6f578b 100644
--- a/docs/3.1/class_c_h_s_v_palette16-members.html
+++ b/docs/3.1/class_c_h_s_v_palette16-members.html
@@ -111,7 +111,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_c_h_s_v_palette16.html b/docs/3.1/class_c_h_s_v_palette16.html
index 7204f332..b6a94aa7 100644
--- a/docs/3.1/class_c_h_s_v_palette16.html
+++ b/docs/3.1/class_c_h_s_v_palette16.html
@@ -158,7 +158,7 @@ Public Attributes</h2></td></tr>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_c_h_s_v_palette256-members.html b/docs/3.1/class_c_h_s_v_palette256-members.html
index 92f9c621..231d9014 100644
--- a/docs/3.1/class_c_h_s_v_palette256-members.html
+++ b/docs/3.1/class_c_h_s_v_palette256-members.html
@@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_c_h_s_v_palette256.html b/docs/3.1/class_c_h_s_v_palette256.html
index dc6c1f72..a7de285d 100644
--- a/docs/3.1/class_c_h_s_v_palette256.html
+++ b/docs/3.1/class_c_h_s_v_palette256.html
@@ -164,7 +164,7 @@ Public Attributes</h2></td></tr>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_c_l_e_d_controller-members.html b/docs/3.1/class_c_l_e_d_controller-members.html
index cdb83d77..7fd34565 100644
--- a/docs/3.1/class_c_l_e_d_controller-members.html
+++ b/docs/3.1/class_c_l_e_d_controller-members.html
@@ -132,7 +132,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_c_l_e_d_controller.html b/docs/3.1/class_c_l_e_d_controller.html
index 111f83c6..069070df 100644
--- a/docs/3.1/class_c_l_e_d_controller.html
+++ b/docs/3.1/class_c_l_e_d_controller.html
@@ -384,7 +384,7 @@ class&#160;</td><td class="memItemRight" valign="bottom"><b>CFastLED</b></td></t
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_c_min_wait-members.html b/docs/3.1/class_c_min_wait-members.html
index 73bf5871..14100d43 100644
--- a/docs/3.1/class_c_min_wait-members.html
+++ b/docs/3.1/class_c_min_wait-members.html
@@ -98,7 +98,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_c_min_wait.html b/docs/3.1/class_c_min_wait.html
index 6bcd222c..218f890e 100644
--- a/docs/3.1/class_c_min_wait.html
+++ b/docs/3.1/class_c_min_wait.html
@@ -118,7 +118,7 @@ class CMinWait&lt; WAIT &gt;</h3>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_c_r_g_b_palette16-members.html b/docs/3.1/class_c_r_g_b_palette16-members.html
index eac9ab2c..a80ba747 100644
--- a/docs/3.1/class_c_r_g_b_palette16-members.html
+++ b/docs/3.1/class_c_r_g_b_palette16-members.html
@@ -120,7 +120,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_c_r_g_b_palette16.html b/docs/3.1/class_c_r_g_b_palette16.html
index 8e23090c..01cb0ad8 100644
--- a/docs/3.1/class_c_r_g_b_palette16.html
+++ b/docs/3.1/class_c_r_g_b_palette16.html
@@ -185,7 +185,7 @@ Public Attributes</h2></td></tr>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_c_r_g_b_palette256-members.html b/docs/3.1/class_c_r_g_b_palette256-members.html
index f0d9d544..296c81d3 100644
--- a/docs/3.1/class_c_r_g_b_palette256-members.html
+++ b/docs/3.1/class_c_r_g_b_palette256-members.html
@@ -122,7 +122,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_c_r_g_b_palette256.html b/docs/3.1/class_c_r_g_b_palette256.html
index 8216d5a6..75451875 100644
--- a/docs/3.1/class_c_r_g_b_palette256.html
+++ b/docs/3.1/class_c_r_g_b_palette256.html
@@ -191,7 +191,7 @@ Public Attributes</h2></td></tr>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_d_a_t_a___n_o_p-members.html b/docs/3.1/class_d_a_t_a___n_o_p-members.html
index 2aeab8c9..cb89a9f2 100644
--- a/docs/3.1/class_d_a_t_a___n_o_p-members.html
+++ b/docs/3.1/class_d_a_t_a___n_o_p-members.html
@@ -99,7 +99,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_d_a_t_a___n_o_p.html b/docs/3.1/class_d_a_t_a___n_o_p.html
index 559f5515..de8dd253 100644
--- a/docs/3.1/class_d_a_t_a___n_o_p.html
+++ b/docs/3.1/class_d_a_t_a___n_o_p.html
@@ -127,7 +127,7 @@ static register uint8_t&#160;</td><td class="memItemRight" valign="bottom"><b>sc
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_d_m_x_s_e_r_i_a_l-members.html b/docs/3.1/class_d_m_x_s_e_r_i_a_l-members.html
index b0910d76..38e02bbb 100644
--- a/docs/3.1/class_d_m_x_s_e_r_i_a_l-members.html
+++ b/docs/3.1/class_d_m_x_s_e_r_i_a_l-members.html
@@ -131,7 +131,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_d_m_x_s_e_r_i_a_l.html b/docs/3.1/class_d_m_x_s_e_r_i_a_l.html
index 36c337a9..cbac3d59 100644
--- a/docs/3.1/class_d_m_x_s_e_r_i_a_l.html
+++ b/docs/3.1/class_d_m_x_s_e_r_i_a_l.html
@@ -255,7 +255,7 @@ static <a class="el" href="class_c_l_e_d_controller.html">CLEDController</a> *&#
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_d_m_x_s_i_m_p_l_e-members.html b/docs/3.1/class_d_m_x_s_i_m_p_l_e-members.html
index 00da1a85..253f00e6 100644
--- a/docs/3.1/class_d_m_x_s_i_m_p_l_e-members.html
+++ b/docs/3.1/class_d_m_x_s_i_m_p_l_e-members.html
@@ -131,7 +131,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_d_m_x_s_i_m_p_l_e.html b/docs/3.1/class_d_m_x_s_i_m_p_l_e.html
index ffe8b1d1..8b924721 100644
--- a/docs/3.1/class_d_m_x_s_i_m_p_l_e.html
+++ b/docs/3.1/class_d_m_x_s_i_m_p_l_e.html
@@ -256,7 +256,7 @@ static <a class="el" href="class_c_l_e_d_controller.html">CLEDController</a> *&#
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_d_m_x_serial_controller-members.html b/docs/3.1/class_d_m_x_serial_controller-members.html
index 5a0fc3e2..f2776859 100644
--- a/docs/3.1/class_d_m_x_serial_controller-members.html
+++ b/docs/3.1/class_d_m_x_serial_controller-members.html
@@ -131,7 +131,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_d_m_x_serial_controller.html b/docs/3.1/class_d_m_x_serial_controller.html
index 219b7089..8ff7befb 100644
--- a/docs/3.1/class_d_m_x_serial_controller.html
+++ b/docs/3.1/class_d_m_x_serial_controller.html
@@ -367,7 +367,7 @@ template&lt;EOrder RGB_ORDER = RGB&gt; </div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_d_m_x_simple_controller-members.html b/docs/3.1/class_d_m_x_simple_controller-members.html
index b7e6de6a..a8890fb2 100644
--- a/docs/3.1/class_d_m_x_simple_controller-members.html
+++ b/docs/3.1/class_d_m_x_simple_controller-members.html
@@ -131,7 +131,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_d_m_x_simple_controller.html b/docs/3.1/class_d_m_x_simple_controller.html
index 2e2c76f3..50ef2f1a 100644
--- a/docs/3.1/class_d_m_x_simple_controller.html
+++ b/docs/3.1/class_d_m_x_simple_controller.html
@@ -371,7 +371,7 @@ template&lt;uint8_t DATA_PIN, EOrder RGB_ORDER = RGB&gt; </div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_fast_pin-members.html b/docs/3.1/class_fast_pin-members.html
index 4c6e97e1..d9856a42 100644
--- a/docs/3.1/class_fast_pin-members.html
+++ b/docs/3.1/class_fast_pin-members.html
@@ -111,7 +111,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_fast_pin.html b/docs/3.1/class_fast_pin.html
index 3e5041de..51cc1a3d 100644
--- a/docs/3.1/class_fast_pin.html
+++ b/docs/3.1/class_fast_pin.html
@@ -175,7 +175,7 @@ class FastPin&lt; PIN &gt;</h3>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_fast_pin_b_b-members.html b/docs/3.1/class_fast_pin_b_b-members.html
index 20ce956f..4e903d65 100644
--- a/docs/3.1/class_fast_pin_b_b-members.html
+++ b/docs/3.1/class_fast_pin_b_b-members.html
@@ -111,7 +111,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_fast_pin_b_b.html b/docs/3.1/class_fast_pin_b_b.html
index 010fe80b..57f807d2 100644
--- a/docs/3.1/class_fast_pin_b_b.html
+++ b/docs/3.1/class_fast_pin_b_b.html
@@ -165,7 +165,7 @@ static port_t&#160;</td><td class="memItemRight" valign="bottom"><b>mask</b> ()
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_g_w6205.html b/docs/3.1/class_g_w6205.html
index 3e97e3d8..ef618652 100644
--- a/docs/3.1/class_g_w6205.html
+++ b/docs/3.1/class_g_w6205.html
@@ -109,7 +109,7 @@ Collaboration diagram for GW6205&lt; DATA_PIN, RGB_ORDER &gt;:</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_g_w6205__400.html b/docs/3.1/class_g_w6205__400.html
index fc44a184..edacd5e4 100644
--- a/docs/3.1/class_g_w6205__400.html
+++ b/docs/3.1/class_g_w6205__400.html
@@ -109,7 +109,7 @@ Collaboration diagram for GW6205_400&lt; DATA_PIN, RGB_ORDER &gt;:</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_g_w6205_controller400_khz.html b/docs/3.1/class_g_w6205_controller400_khz.html
index ef0f6e04..2eb30178 100644
--- a/docs/3.1/class_g_w6205_controller400_khz.html
+++ b/docs/3.1/class_g_w6205_controller400_khz.html
@@ -107,7 +107,7 @@ Collaboration diagram for GW6205Controller400Khz&lt; DATA_PIN, RGB_ORDER &gt;:</
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_g_w6205_controller800_khz.html b/docs/3.1/class_g_w6205_controller800_khz.html
index 040c7e38..cb122a24 100644
--- a/docs/3.1/class_g_w6205_controller800_khz.html
+++ b/docs/3.1/class_g_w6205_controller800_khz.html
@@ -107,7 +107,7 @@ Collaboration diagram for GW6205Controller800Khz&lt; DATA_PIN, RGB_ORDER &gt;:</
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_input_pin-members.html b/docs/3.1/class_input_pin-members.html
index f608ece7..ea93039c 100644
--- a/docs/3.1/class_input_pin-members.html
+++ b/docs/3.1/class_input_pin-members.html
@@ -138,7 +138,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_input_pin.html b/docs/3.1/class_input_pin.html
index 71d09856..f40f51fc 100644
--- a/docs/3.1/class_input_pin.html
+++ b/docs/3.1/class_input_pin.html
@@ -250,7 +250,7 @@ typedef RwReg&#160;</td><td class="memItemRight" valign="bottom"><b>port_t</b></
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_l_p_d1886.html b/docs/3.1/class_l_p_d1886.html
index 42d85d37..831365ed 100644
--- a/docs/3.1/class_l_p_d1886.html
+++ b/docs/3.1/class_l_p_d1886.html
@@ -109,7 +109,7 @@ Collaboration diagram for LPD1886&lt; DATA_PIN, RGB_ORDER &gt;:</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_l_p_d1886_controller1250_khz.html b/docs/3.1/class_l_p_d1886_controller1250_khz.html
index 96bc0d99..2ecca73d 100644
--- a/docs/3.1/class_l_p_d1886_controller1250_khz.html
+++ b/docs/3.1/class_l_p_d1886_controller1250_khz.html
@@ -107,7 +107,7 @@ Collaboration diagram for LPD1886Controller1250Khz&lt; DATA_PIN, RGB_ORDER &gt;:
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_l_p_d8806_controller-members.html b/docs/3.1/class_l_p_d8806_controller-members.html
index 95cc87e4..c719e758 100644
--- a/docs/3.1/class_l_p_d8806_controller-members.html
+++ b/docs/3.1/class_l_p_d8806_controller-members.html
@@ -132,7 +132,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_l_p_d8806_controller.html b/docs/3.1/class_l_p_d8806_controller.html
index c69d0054..1248ebfe 100644
--- a/docs/3.1/class_l_p_d8806_controller.html
+++ b/docs/3.1/class_l_p_d8806_controller.html
@@ -391,7 +391,7 @@ template&lt;uint8_t DATA_PIN, uint8_t CLOCK_PIN, EOrder RGB_ORDER = RGB, uint8_t
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_n_e_o_p_i_x_e_l.html b/docs/3.1/class_n_e_o_p_i_x_e_l.html
index 031ecafa..e60912f5 100644
--- a/docs/3.1/class_n_e_o_p_i_x_e_l.html
+++ b/docs/3.1/class_n_e_o_p_i_x_e_l.html
@@ -109,7 +109,7 @@ Collaboration diagram for NEOPIXEL&lt; DATA_PIN &gt;:</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_output_pin-members.html b/docs/3.1/class_output_pin-members.html
index 3ca46a54..655015d2 100644
--- a/docs/3.1/class_output_pin-members.html
+++ b/docs/3.1/class_output_pin-members.html
@@ -138,7 +138,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_output_pin.html b/docs/3.1/class_output_pin.html
index 5abf00ec..594a0720 100644
--- a/docs/3.1/class_output_pin.html
+++ b/docs/3.1/class_output_pin.html
@@ -250,7 +250,7 @@ typedef RwReg&#160;</td><td class="memItemRight" valign="bottom"><b>port_t</b></
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_p9813_controller-members.html b/docs/3.1/class_p9813_controller-members.html
index 1144f917..3b6865c1 100644
--- a/docs/3.1/class_p9813_controller-members.html
+++ b/docs/3.1/class_p9813_controller-members.html
@@ -133,7 +133,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_p9813_controller.html b/docs/3.1/class_p9813_controller.html
index 4251b377..8526fe5d 100644
--- a/docs/3.1/class_p9813_controller.html
+++ b/docs/3.1/class_p9813_controller.html
@@ -444,7 +444,7 @@ template&lt;uint8_t DATA_PIN, uint8_t CLOCK_PIN, EOrder RGB_ORDER = RGB, uint8_t
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_pin-members.html b/docs/3.1/class_pin-members.html
index 5b40fcf4..a20e73ab 100644
--- a/docs/3.1/class_pin-members.html
+++ b/docs/3.1/class_pin-members.html
@@ -136,7 +136,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_pin.html b/docs/3.1/class_pin.html
index a9943e9a..4d6e3b92 100644
--- a/docs/3.1/class_pin.html
+++ b/docs/3.1/class_pin.html
@@ -243,7 +243,7 @@ virtual bool&#160;</td><td class="memItemRight" valign="bottom"><b>isSelected</b
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_s_m16716_controller-members.html b/docs/3.1/class_s_m16716_controller-members.html
index 556bae9c..541bb55d 100644
--- a/docs/3.1/class_s_m16716_controller-members.html
+++ b/docs/3.1/class_s_m16716_controller-members.html
@@ -132,7 +132,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_s_m16716_controller.html b/docs/3.1/class_s_m16716_controller.html
index 58e2b463..d7b8cb62 100644
--- a/docs/3.1/class_s_m16716_controller.html
+++ b/docs/3.1/class_s_m16716_controller.html
@@ -386,7 +386,7 @@ template&lt;uint8_t DATA_PIN, uint8_t CLOCK_PIN, EOrder RGB_ORDER = RGB, uint8_t
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_s_p_i_output-members.html b/docs/3.1/class_s_p_i_output-members.html
index 6a453181..70e32ff2 100644
--- a/docs/3.1/class_s_p_i_output-members.html
+++ b/docs/3.1/class_s_p_i_output-members.html
@@ -107,7 +107,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_s_p_i_output.html b/docs/3.1/class_s_p_i_output.html
index 7dde1b16..60586125 100644
--- a/docs/3.1/class_s_p_i_output.html
+++ b/docs/3.1/class_s_p_i_output.html
@@ -150,7 +150,7 @@ static void&#160;</td><td class="memItemRight" valign="bottom"><b>writeByte</b>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_s_p_i_output_3_01_s_p_i2___d_a_t_a_00_01_s_p_i2___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html b/docs/3.1/class_s_p_i_output_3_01_s_p_i2___d_a_t_a_00_01_s_p_i2___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html
index 4b419bd0..9150529b 100644
--- a/docs/3.1/class_s_p_i_output_3_01_s_p_i2___d_a_t_a_00_01_s_p_i2___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html
+++ b/docs/3.1/class_s_p_i_output_3_01_s_p_i2___d_a_t_a_00_01_s_p_i2___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html
@@ -105,7 +105,7 @@ Collaboration diagram for SPIOutput&lt; SPI2_DATA, SPI2_CLOCK, SPI_SPEED &gt;:</
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_s_p_i_output_3_01_s_p_i2___d_a_t_a_00_01_s_p_i___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html b/docs/3.1/class_s_p_i_output_3_01_s_p_i2___d_a_t_a_00_01_s_p_i___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html
index 1ca29a7c..1c84b63a 100644
--- a/docs/3.1/class_s_p_i_output_3_01_s_p_i2___d_a_t_a_00_01_s_p_i___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html
+++ b/docs/3.1/class_s_p_i_output_3_01_s_p_i2___d_a_t_a_00_01_s_p_i___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html
@@ -105,7 +105,7 @@ Collaboration diagram for SPIOutput&lt; SPI2_DATA, SPI_CLOCK, SPI_SPEED &gt;:</d
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_s_p_i_output_3_01_s_p_i___d_a_t_a_00_01_s_p_i2___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html b/docs/3.1/class_s_p_i_output_3_01_s_p_i___d_a_t_a_00_01_s_p_i2___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html
index 6311ecda..45e9fdf9 100644
--- a/docs/3.1/class_s_p_i_output_3_01_s_p_i___d_a_t_a_00_01_s_p_i2___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html
+++ b/docs/3.1/class_s_p_i_output_3_01_s_p_i___d_a_t_a_00_01_s_p_i2___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html
@@ -105,7 +105,7 @@ Collaboration diagram for SPIOutput&lt; SPI_DATA, SPI2_CLOCK, SPI_SPEED &gt;:</d
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_s_p_i_output_3_01_s_p_i___d_a_t_a_00_01_s_p_i___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html b/docs/3.1/class_s_p_i_output_3_01_s_p_i___d_a_t_a_00_01_s_p_i___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html
index 8ad7b2cf..e015ee5a 100644
--- a/docs/3.1/class_s_p_i_output_3_01_s_p_i___d_a_t_a_00_01_s_p_i___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html
+++ b/docs/3.1/class_s_p_i_output_3_01_s_p_i___d_a_t_a_00_01_s_p_i___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html
@@ -105,7 +105,7 @@ Collaboration diagram for SPIOutput&lt; SPI_DATA, SPI_CLOCK, SPI_SPEED &gt;:</di
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_s_p_i_output_3_01_s_p_i___u_a_r_t0___d_a_t_a_00_01_s_p_i___u_a_r_t0___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html b/docs/3.1/class_s_p_i_output_3_01_s_p_i___u_a_r_t0___d_a_t_a_00_01_s_p_i___u_a_r_t0___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html
index 3bbcc863..039a99e5 100644
--- a/docs/3.1/class_s_p_i_output_3_01_s_p_i___u_a_r_t0___d_a_t_a_00_01_s_p_i___u_a_r_t0___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html
+++ b/docs/3.1/class_s_p_i_output_3_01_s_p_i___u_a_r_t0___d_a_t_a_00_01_s_p_i___u_a_r_t0___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html
@@ -105,7 +105,7 @@ Collaboration diagram for SPIOutput&lt; SPI_UART0_DATA, SPI_UART0_CLOCK, SPI_SPE
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_s_p_i_output_3_01_s_p_i___u_a_r_t1___d_a_t_a_00_01_s_p_i___u_a_r_t1___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html b/docs/3.1/class_s_p_i_output_3_01_s_p_i___u_a_r_t1___d_a_t_a_00_01_s_p_i___u_a_r_t1___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html
index 4e4ca66e..c1c47eea 100644
--- a/docs/3.1/class_s_p_i_output_3_01_s_p_i___u_a_r_t1___d_a_t_a_00_01_s_p_i___u_a_r_t1___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html
+++ b/docs/3.1/class_s_p_i_output_3_01_s_p_i___u_a_r_t1___d_a_t_a_00_01_s_p_i___u_a_r_t1___c_l_o_c_k_00_01_s_p_i___s_p_e_e_d_01_4.html
@@ -105,7 +105,7 @@ Collaboration diagram for SPIOutput&lt; SPI_UART1_DATA, SPI_UART1_CLOCK, SPI_SPE
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_selectable-members.html b/docs/3.1/class_selectable-members.html
index 8d61df65..c920a0f4 100644
--- a/docs/3.1/class_selectable-members.html
+++ b/docs/3.1/class_selectable-members.html
@@ -98,7 +98,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_selectable.html b/docs/3.1/class_selectable.html
index 400b8e47..fd25fe40 100644
--- a/docs/3.1/class_selectable.html
+++ b/docs/3.1/class_selectable.html
@@ -118,7 +118,7 @@ virtual bool&#160;</td><td class="memItemRight" valign="bottom"><b>isSelected</b
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_software_s_p_i_output-members.html b/docs/3.1/class_software_s_p_i_output-members.html
index 70c3e406..0420cf4c 100644
--- a/docs/3.1/class_software_s_p_i_output-members.html
+++ b/docs/3.1/class_software_s_p_i_output-members.html
@@ -107,7 +107,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_software_s_p_i_output.html b/docs/3.1/class_software_s_p_i_output.html
index 402477c4..5574413b 100644
--- a/docs/3.1/class_software_s_p_i_output.html
+++ b/docs/3.1/class_software_s_p_i_output.html
@@ -150,7 +150,7 @@ static void&#160;</td><td class="memItemRight" valign="bottom"><b>writeByte</b>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_t_m1803.html b/docs/3.1/class_t_m1803.html
index 58670bac..5bd3b86f 100644
--- a/docs/3.1/class_t_m1803.html
+++ b/docs/3.1/class_t_m1803.html
@@ -109,7 +109,7 @@ Collaboration diagram for TM1803&lt; DATA_PIN, RGB_ORDER &gt;:</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_t_m1803_controller400_khz.html b/docs/3.1/class_t_m1803_controller400_khz.html
index 584cb58c..ba1a7673 100644
--- a/docs/3.1/class_t_m1803_controller400_khz.html
+++ b/docs/3.1/class_t_m1803_controller400_khz.html
@@ -107,7 +107,7 @@ Collaboration diagram for TM1803Controller400Khz&lt; DATA_PIN, RGB_ORDER &gt;:</
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_t_m1804.html b/docs/3.1/class_t_m1804.html
index d20e087f..fb2483d4 100644
--- a/docs/3.1/class_t_m1804.html
+++ b/docs/3.1/class_t_m1804.html
@@ -109,7 +109,7 @@ Collaboration diagram for TM1804&lt; DATA_PIN, RGB_ORDER &gt;:</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_t_m1809.html b/docs/3.1/class_t_m1809.html
index 2a8da171..89065f0f 100644
--- a/docs/3.1/class_t_m1809.html
+++ b/docs/3.1/class_t_m1809.html
@@ -109,7 +109,7 @@ Collaboration diagram for TM1809&lt; DATA_PIN, RGB_ORDER &gt;:</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_t_m1809_controller800_khz.html b/docs/3.1/class_t_m1809_controller800_khz.html
index 3b630c36..7b428c8f 100644
--- a/docs/3.1/class_t_m1809_controller800_khz.html
+++ b/docs/3.1/class_t_m1809_controller800_khz.html
@@ -107,7 +107,7 @@ Collaboration diagram for TM1809Controller800Khz&lt; DATA_PIN, RGB_ORDER &gt;:</
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_t_m1829.html b/docs/3.1/class_t_m1829.html
index e9f5ef24..f9dff768 100644
--- a/docs/3.1/class_t_m1829.html
+++ b/docs/3.1/class_t_m1829.html
@@ -109,7 +109,7 @@ Collaboration diagram for TM1829&lt; DATA_PIN, RGB_ORDER &gt;:</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_t_m1829_controller1600_khz.html b/docs/3.1/class_t_m1829_controller1600_khz.html
index 3457505e..cfc80fe7 100644
--- a/docs/3.1/class_t_m1829_controller1600_khz.html
+++ b/docs/3.1/class_t_m1829_controller1600_khz.html
@@ -105,7 +105,7 @@ Collaboration diagram for TM1829Controller1600Khz&lt; DATA_PIN, RGB_ORDER &gt;:<
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_t_m1829_controller800_khz.html b/docs/3.1/class_t_m1829_controller800_khz.html
index f36bccfd..7d2d3100 100644
--- a/docs/3.1/class_t_m1829_controller800_khz.html
+++ b/docs/3.1/class_t_m1829_controller800_khz.html
@@ -107,7 +107,7 @@ Collaboration diagram for TM1829Controller800Khz&lt; DATA_PIN, RGB_ORDER &gt;:</
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_u_c_s1903.html b/docs/3.1/class_u_c_s1903.html
index b482e1dd..3400f055 100644
--- a/docs/3.1/class_u_c_s1903.html
+++ b/docs/3.1/class_u_c_s1903.html
@@ -109,7 +109,7 @@ Collaboration diagram for UCS1903&lt; DATA_PIN, RGB_ORDER &gt;:</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_u_c_s1903_b.html b/docs/3.1/class_u_c_s1903_b.html
index 696fc39d..e11d5372 100644
--- a/docs/3.1/class_u_c_s1903_b.html
+++ b/docs/3.1/class_u_c_s1903_b.html
@@ -109,7 +109,7 @@ Collaboration diagram for UCS1903B&lt; DATA_PIN, RGB_ORDER &gt;:</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_u_c_s1903_b_controller800_khz.html b/docs/3.1/class_u_c_s1903_b_controller800_khz.html
index 3d586ed9..dd87830a 100644
--- a/docs/3.1/class_u_c_s1903_b_controller800_khz.html
+++ b/docs/3.1/class_u_c_s1903_b_controller800_khz.html
@@ -107,7 +107,7 @@ Collaboration diagram for UCS1903BController800Khz&lt; DATA_PIN, RGB_ORDER &gt;:
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_u_c_s1903_controller400_khz.html b/docs/3.1/class_u_c_s1903_controller400_khz.html
index 4d9c7371..bd1203d3 100644
--- a/docs/3.1/class_u_c_s1903_controller400_khz.html
+++ b/docs/3.1/class_u_c_s1903_controller400_khz.html
@@ -107,7 +107,7 @@ Collaboration diagram for UCS1903Controller400Khz&lt; DATA_PIN, RGB_ORDER &gt;:<
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_u_c_s1904.html b/docs/3.1/class_u_c_s1904.html
index 404ba649..3c245e08 100644
--- a/docs/3.1/class_u_c_s1904.html
+++ b/docs/3.1/class_u_c_s1904.html
@@ -109,7 +109,7 @@ Collaboration diagram for UCS1904&lt; DATA_PIN, RGB_ORDER &gt;:</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_u_c_s1904_controller800_khz.html b/docs/3.1/class_u_c_s1904_controller800_khz.html
index 0a3537be..20d1dc65 100644
--- a/docs/3.1/class_u_c_s1904_controller800_khz.html
+++ b/docs/3.1/class_u_c_s1904_controller800_khz.html
@@ -107,7 +107,7 @@ Collaboration diagram for UCS1904Controller800Khz&lt; DATA_PIN, RGB_ORDER &gt;:<
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_w_s2801_controller-members.html b/docs/3.1/class_w_s2801_controller-members.html
index dff689ea..84f792bc 100644
--- a/docs/3.1/class_w_s2801_controller-members.html
+++ b/docs/3.1/class_w_s2801_controller-members.html
@@ -133,7 +133,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_w_s2801_controller.html b/docs/3.1/class_w_s2801_controller.html
index d326fb18..b5e151b1 100644
--- a/docs/3.1/class_w_s2801_controller.html
+++ b/docs/3.1/class_w_s2801_controller.html
@@ -444,7 +444,7 @@ template&lt;uint8_t DATA_PIN, uint8_t CLOCK_PIN, EOrder RGB_ORDER = RGB, uint8_t
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_w_s2803_controller-members.html b/docs/3.1/class_w_s2803_controller-members.html
index 288a5fe6..047a85ab 100644
--- a/docs/3.1/class_w_s2803_controller-members.html
+++ b/docs/3.1/class_w_s2803_controller-members.html
@@ -133,7 +133,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_w_s2803_controller.html b/docs/3.1/class_w_s2803_controller.html
index ea17146a..f23912b7 100644
--- a/docs/3.1/class_w_s2803_controller.html
+++ b/docs/3.1/class_w_s2803_controller.html
@@ -256,7 +256,7 @@ static <a class="el" href="class_c_l_e_d_controller.html">CLEDController</a> *&#
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_w_s2811.html b/docs/3.1/class_w_s2811.html
index 4d4eb950..ddd7fab0 100644
--- a/docs/3.1/class_w_s2811.html
+++ b/docs/3.1/class_w_s2811.html
@@ -109,7 +109,7 @@ Collaboration diagram for WS2811&lt; DATA_PIN, RGB_ORDER &gt;:</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_w_s2811__400.html b/docs/3.1/class_w_s2811__400.html
index cbd29ab0..7f6296a3 100644
--- a/docs/3.1/class_w_s2811__400.html
+++ b/docs/3.1/class_w_s2811__400.html
@@ -109,7 +109,7 @@ Collaboration diagram for WS2811_400&lt; DATA_PIN, RGB_ORDER &gt;:</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_w_s2811_controller400_khz.html b/docs/3.1/class_w_s2811_controller400_khz.html
index f9084643..6e291e31 100644
--- a/docs/3.1/class_w_s2811_controller400_khz.html
+++ b/docs/3.1/class_w_s2811_controller400_khz.html
@@ -107,7 +107,7 @@ Collaboration diagram for WS2811Controller400Khz&lt; DATA_PIN, RGB_ORDER &gt;:</
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_w_s2811_controller800_khz.html b/docs/3.1/class_w_s2811_controller800_khz.html
index 0ab60285..e1e86d10 100644
--- a/docs/3.1/class_w_s2811_controller800_khz.html
+++ b/docs/3.1/class_w_s2811_controller800_khz.html
@@ -107,7 +107,7 @@ Collaboration diagram for WS2811Controller800Khz&lt; DATA_PIN, RGB_ORDER &gt;:</
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_w_s2812.html b/docs/3.1/class_w_s2812.html
index f55b8602..3927b01a 100644
--- a/docs/3.1/class_w_s2812.html
+++ b/docs/3.1/class_w_s2812.html
@@ -109,7 +109,7 @@ Collaboration diagram for WS2812&lt; DATA_PIN, RGB_ORDER &gt;:</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_w_s2812_b.html b/docs/3.1/class_w_s2812_b.html
index a50d5f2b..fb5e3e8d 100644
--- a/docs/3.1/class_w_s2812_b.html
+++ b/docs/3.1/class_w_s2812_b.html
@@ -109,7 +109,7 @@ Collaboration diagram for WS2812B&lt; DATA_PIN, RGB_ORDER &gt;:</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/class_w_s2812_controller800_khz.html b/docs/3.1/class_w_s2812_controller800_khz.html
index a02582dd..8358b133 100644
--- a/docs/3.1/class_w_s2812_controller800_khz.html
+++ b/docs/3.1/class_w_s2812_controller800_khz.html
@@ -107,7 +107,7 @@ Collaboration diagram for WS2812Controller800Khz&lt; DATA_PIN, RGB_ORDER &gt;:</
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/classes.html b/docs/3.1/classes.html
index e6b62823..3ac554b8 100644
--- a/docs/3.1/classes.html
+++ b/docs/3.1/classes.html
@@ -141,7 +141,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/classq-members.html b/docs/3.1/classq-members.html
index 4db41bb6..22c89b80 100644
--- a/docs/3.1/classq-members.html
+++ b/docs/3.1/classq-members.html
@@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/classq.html b/docs/3.1/classq.html
index a9f20cc7..f197dd26 100644
--- a/docs/3.1/classq.html
+++ b/docs/3.1/classq.html
@@ -133,7 +133,7 @@ class q&lt; T, F, I &gt;</h3>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/color_8h.html b/docs/3.1/color_8h.html
new file mode 100644
index 00000000..caa1e787
--- /dev/null
+++ b/docs/3.1/color_8h.html
@@ -0,0 +1,149 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.9.1"/>
+<title>FastLED: color.h File Reference</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="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { init_search(); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">FastLED
+ &#160;<span id="projectnumber">3.1</span>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.9.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</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>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#enum-members">Enumerations</a> </div>
+ <div class="headertitle">
+<div class="title">color.h File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>contains definitions for color correction and temperature
+<a href="#details">More...</a></p>
+
+<p><a href="color_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
+Enumerations</h2></td></tr>
+<tr class="memitem:gadf6bcba67c9573665af20788c4431ae8"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___color_enums.html#gadf6bcba67c9573665af20788c4431ae8">LEDColorCorrection</a> { <br />
+&#160;&#160;<a class="el" href="group___color_enums.html#ggadf6bcba67c9573665af20788c4431ae8ac52fe8e181ff3c39128664fba835eae3">TypicalSMD5050</a> =0xFFB0F0,
+<b>TypicalLEDStrip</b> =0xFFB0F0,
+<a class="el" href="group___color_enums.html#ggadf6bcba67c9573665af20788c4431ae8af617057397c2a4f89b4bf2783cdac24b">Typical8mmPixel</a> =0xFFE08C,
+<b>TypicalPixelString</b> =0xFFE08C,
+<br />
+&#160;&#160;<a class="el" href="group___color_enums.html#ggadf6bcba67c9573665af20788c4431ae8af964ffff5f2977a60a83aa3f9f8b4368">UncorrectedColor</a> =0xFFFFFF
+<br />
+ }</td></tr>
+<tr class="separator:gadf6bcba67c9573665af20788c4431ae8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga251e9e8dc2c7b981786b71706522b2a9"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___color_enums.html#ga251e9e8dc2c7b981786b71706522b2a9">ColorTemperature</a> { <br />
+&#160;&#160;<b>Candle</b> =0xFF9329,
+<a class="el" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9a8f4ad60002c8856dc1f153e2eaa2de91">Tungsten40W</a> =0xFFC58F,
+<a class="el" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9a631a1e96b10db9220ab27d70a320ac48">Tungsten100W</a> =0xFFD6AA,
+<a class="el" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9ae5ec76aa869b51e645e9f226dfee4b79">Halogen</a> =0xFFF1E0,
+<br />
+&#160;&#160;<a class="el" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9aa9dab8ea30eb2a41c48956480b7014d1">CarbonArc</a> =0xFFFAF4,
+<a class="el" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9ac9a2b02351fcc9ad08ef4e2748530e76">HighNoonSun</a> =0xFFFFFB,
+<a class="el" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9a890e0555ad95071fa4391a5775a38621">DirectSunlight</a> =0xFFFFFF,
+<a class="el" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9ad0aebf757f0aa8fc45ba282bd25006f7">OvercastSky</a> =0xC9E2FF,
+<br />
+&#160;&#160;<a class="el" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9acb80944aa5bed3031b19f1e1101f6a9a">ClearBlueSky</a> =0x409CFF,
+<b>WarmFluorescent</b> =0xFFF4E5,
+<b>StandardFluorescent</b> =0xF4FFFA,
+<b>CoolWhiteFluorescent</b> =0xD4EBFF,
+<br />
+&#160;&#160;<b>FullSpectrumFluorescent</b> =0xFFF4F2,
+<b>GrowLightFluorescent</b> =0xFFEFF7,
+<b>BlackLightFluorescent</b> =0xA700FF,
+<b>MercuryVapor</b> =0xD8F7FF,
+<br />
+&#160;&#160;<b>SodiumVapor</b> =0xFFD1B2,
+<b>MetalHalide</b> =0xF2FCFF,
+<b>HighPressureSodium</b> =0xFFB74C,
+<a class="el" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9ae3d35275ab8c374612bcfbcce732b39f">UncorrectedTemperature</a> =0xFFFFFF
+<br />
+ }</td></tr>
+<tr class="separator:ga251e9e8dc2c7b981786b71706522b2a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>contains definitions for color correction and temperature </p>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.9.1
+</small></address>
+</body>
+</html>
diff --git a/docs/3.1/color_8h_source.html b/docs/3.1/color_8h_source.html
index bd4e5c91..58934197 100644
--- a/docs/3.1/color_8h_source.html
+++ b/docs/3.1/color_8h_source.html
@@ -87,71 +87,71 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="title">color.h</div> </div>
</div><!--header-->
<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#ifndef __INC_COLOR_H</span></div>
+<a href="color_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#ifndef __INC_COLOR_H</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="preprocessor">#define __INC_COLOR_H</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;</div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;FASTLED_NAMESPACE_BEGIN</div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;</div>
-<div class="line"><a name="l00009"></a><span class="lineno"><a class="line" href="group___color_enums.html#gadf6bcba67c9573665af20788c4431ae8"> 9</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span> {</div>
-<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160; <span class="comment">// Color correction starting points</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;</div>
-<div class="line"><a name="l00014"></a><span class="lineno"><a class="line" href="group___color_enums.html#ggadf6bcba67c9573665af20788c4431ae8ac52fe8e181ff3c39128664fba835eae3"> 14</a></span>&#160; <a class="code" href="group___color_enums.html#ggadf6bcba67c9573665af20788c4431ae8ac52fe8e181ff3c39128664fba835eae3">TypicalSMD5050</a>=0xFFB0F0 <span class="comment">/* 255, 176, 240 */</span>,</div>
-<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; TypicalLEDStrip=0xFFB0F0 <span class="comment">/* 255, 176, 240 */</span>,</div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
-<div class="line"><a name="l00021"></a><span class="lineno"><a class="line" href="group___color_enums.html#ggadf6bcba67c9573665af20788c4431ae8af617057397c2a4f89b4bf2783cdac24b"> 21</a></span>&#160; <a class="code" href="group___color_enums.html#ggadf6bcba67c9573665af20788c4431ae8af617057397c2a4f89b4bf2783cdac24b">Typical8mmPixel</a>=0xFFE08C <span class="comment">/* 255, 224, 140 */</span>,</div>
-<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; TypicalPixelString=0xFFE08C <span class="comment">/* 255, 224, 140 */</span>,</div>
-<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div>
-<div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="group___color_enums.html#ggadf6bcba67c9573665af20788c4431ae8af964ffff5f2977a60a83aa3f9f8b4368"> 26</a></span>&#160; <a class="code" href="group___color_enums.html#ggadf6bcba67c9573665af20788c4431ae8af964ffff5f2977a60a83aa3f9f8b4368">UncorrectedColor</a>=0xFFFFFF</div>
-<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div>
-<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;} <a class="code" href="group___color_enums.html#gadf6bcba67c9573665af20788c4431ae8">LEDColorCorrection</a>;</div>
+<div class="line"><a name="l00011"></a><span class="lineno"><a class="line" href="group___color_enums.html#gadf6bcba67c9573665af20788c4431ae8"> 11</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span> {</div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160; <span class="comment">// Color correction starting points</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;</div>
+<div class="line"><a name="l00016"></a><span class="lineno"><a class="line" href="group___color_enums.html#ggadf6bcba67c9573665af20788c4431ae8ac52fe8e181ff3c39128664fba835eae3"> 16</a></span>&#160; <a class="code" href="group___color_enums.html#ggadf6bcba67c9573665af20788c4431ae8ac52fe8e181ff3c39128664fba835eae3">TypicalSMD5050</a>=0xFFB0F0 <span class="comment">/* 255, 176, 240 */</span>,</div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; TypicalLEDStrip=0xFFB0F0 <span class="comment">/* 255, 176, 240 */</span>,</div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div>
+<div class="line"><a name="l00023"></a><span class="lineno"><a class="line" href="group___color_enums.html#ggadf6bcba67c9573665af20788c4431ae8af617057397c2a4f89b4bf2783cdac24b"> 23</a></span>&#160; <a class="code" href="group___color_enums.html#ggadf6bcba67c9573665af20788c4431ae8af617057397c2a4f89b4bf2783cdac24b">Typical8mmPixel</a>=0xFFE08C <span class="comment">/* 255, 224, 140 */</span>,</div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; TypicalPixelString=0xFFE08C <span class="comment">/* 255, 224, 140 */</span>,</div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div>
+<div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="group___color_enums.html#ggadf6bcba67c9573665af20788c4431ae8af964ffff5f2977a60a83aa3f9f8b4368"> 28</a></span>&#160; <a class="code" href="group___color_enums.html#ggadf6bcba67c9573665af20788c4431ae8af964ffff5f2977a60a83aa3f9f8b4368">UncorrectedColor</a>=0xFFFFFF</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div>
-<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div>
-<div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="group___color_enums.html#ga251e9e8dc2c7b981786b71706522b2a9"> 31</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span> {</div>
-<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; Candle=0xFF9329 <span class="comment">/* 1900 K, 255, 147, 41 */</span>,</div>
-<div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9a8f4ad60002c8856dc1f153e2eaa2de91"> 39</a></span>&#160; <a class="code" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9a8f4ad60002c8856dc1f153e2eaa2de91">Tungsten40W</a>=0xFFC58F <span class="comment">/* 2600 K, 255, 197, 143 */</span>,</div>
-<div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9a631a1e96b10db9220ab27d70a320ac48"> 41</a></span>&#160; <a class="code" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9a631a1e96b10db9220ab27d70a320ac48">Tungsten100W</a>=0xFFD6AA <span class="comment">/* 2850 K, 255, 214, 170 */</span>,</div>
-<div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9ae5ec76aa869b51e645e9f226dfee4b79"> 43</a></span>&#160; <a class="code" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9ae5ec76aa869b51e645e9f226dfee4b79">Halogen</a>=0xFFF1E0 <span class="comment">/* 3200 K, 255, 241, 224 */</span>,</div>
-<div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9aa9dab8ea30eb2a41c48956480b7014d1"> 45</a></span>&#160; <a class="code" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9aa9dab8ea30eb2a41c48956480b7014d1">CarbonArc</a>=0xFFFAF4 <span class="comment">/* 5200 K, 255, 250, 244 */</span>,</div>
-<div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9ac9a2b02351fcc9ad08ef4e2748530e76"> 47</a></span>&#160; <a class="code" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9ac9a2b02351fcc9ad08ef4e2748530e76">HighNoonSun</a>=0xFFFFFB <span class="comment">/* 5400 K, 255, 255, 251 */</span>,</div>
-<div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9a890e0555ad95071fa4391a5775a38621"> 49</a></span>&#160; <a class="code" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9a890e0555ad95071fa4391a5775a38621">DirectSunlight</a>=0xFFFFFF <span class="comment">/* 6000 K, 255, 255, 255 */</span>,</div>
-<div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9ad0aebf757f0aa8fc45ba282bd25006f7"> 51</a></span>&#160; <a class="code" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9ad0aebf757f0aa8fc45ba282bd25006f7">OvercastSky</a>=0xC9E2FF <span class="comment">/* 7000 K, 201, 226, 255 */</span>,</div>
-<div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9acb80944aa5bed3031b19f1e1101f6a9a"> 53</a></span>&#160; <a class="code" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9acb80944aa5bed3031b19f1e1101f6a9a">ClearBlueSky</a>=0x409CFF <span class="comment">/* 20000 K, 64, 156, 255 */</span>,</div>
-<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div>
-<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; WarmFluorescent=0xFFF4E5 <span class="comment">/* 0 K, 255, 244, 229 */</span>,</div>
-<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; StandardFluorescent=0xF4FFFA <span class="comment">/* 0 K, 244, 255, 250 */</span>,</div>
-<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; CoolWhiteFluorescent=0xD4EBFF <span class="comment">/* 0 K, 212, 235, 255 */</span>,</div>
-<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; FullSpectrumFluorescent=0xFFF4F2 <span class="comment">/* 0 K, 255, 244, 242 */</span>,</div>
-<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; GrowLightFluorescent=0xFFEFF7 <span class="comment">/* 0 K, 255, 239, 247 */</span>,</div>
-<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; BlackLightFluorescent=0xA700FF <span class="comment">/* 0 K, 167, 0, 255 */</span>,</div>
-<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; MercuryVapor=0xD8F7FF <span class="comment">/* 0 K, 216, 247, 255 */</span>,</div>
-<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; SodiumVapor=0xFFD1B2 <span class="comment">/* 0 K, 255, 209, 178 */</span>,</div>
-<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; MetalHalide=0xF2FCFF <span class="comment">/* 0 K, 242, 252, 255 */</span>,</div>
-<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; HighPressureSodium=0xFFB74C <span class="comment">/* 0 K, 255, 183, 76 */</span>,</div>
-<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;</div>
-<div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9ae3d35275ab8c374612bcfbcce732b39f"> 74</a></span>&#160; <a class="code" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9ae3d35275ab8c374612bcfbcce732b39f">UncorrectedTemperature</a>=0xFFFFFF</div>
-<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;} <a class="code" href="group___color_enums.html#ga251e9e8dc2c7b981786b71706522b2a9">ColorTemperature</a>;</div>
-<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div>
-<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;FASTLED_NAMESPACE_END</div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;} <a class="code" href="group___color_enums.html#gadf6bcba67c9573665af20788c4431ae8">LEDColorCorrection</a>;</div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div>
+<div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="group___color_enums.html#ga251e9e8dc2c7b981786b71706522b2a9"> 33</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span> {</div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; Candle=0xFF9329 <span class="comment">/* 1900 K, 255, 147, 41 */</span>,</div>
+<div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9a8f4ad60002c8856dc1f153e2eaa2de91"> 41</a></span>&#160; <a class="code" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9a8f4ad60002c8856dc1f153e2eaa2de91">Tungsten40W</a>=0xFFC58F <span class="comment">/* 2600 K, 255, 197, 143 */</span>,</div>
+<div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9a631a1e96b10db9220ab27d70a320ac48"> 43</a></span>&#160; <a class="code" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9a631a1e96b10db9220ab27d70a320ac48">Tungsten100W</a>=0xFFD6AA <span class="comment">/* 2850 K, 255, 214, 170 */</span>,</div>
+<div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9ae5ec76aa869b51e645e9f226dfee4b79"> 45</a></span>&#160; <a class="code" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9ae5ec76aa869b51e645e9f226dfee4b79">Halogen</a>=0xFFF1E0 <span class="comment">/* 3200 K, 255, 241, 224 */</span>,</div>
+<div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9aa9dab8ea30eb2a41c48956480b7014d1"> 47</a></span>&#160; <a class="code" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9aa9dab8ea30eb2a41c48956480b7014d1">CarbonArc</a>=0xFFFAF4 <span class="comment">/* 5200 K, 255, 250, 244 */</span>,</div>
+<div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9ac9a2b02351fcc9ad08ef4e2748530e76"> 49</a></span>&#160; <a class="code" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9ac9a2b02351fcc9ad08ef4e2748530e76">HighNoonSun</a>=0xFFFFFB <span class="comment">/* 5400 K, 255, 255, 251 */</span>,</div>
+<div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9a890e0555ad95071fa4391a5775a38621"> 51</a></span>&#160; <a class="code" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9a890e0555ad95071fa4391a5775a38621">DirectSunlight</a>=0xFFFFFF <span class="comment">/* 6000 K, 255, 255, 255 */</span>,</div>
+<div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9ad0aebf757f0aa8fc45ba282bd25006f7"> 53</a></span>&#160; <a class="code" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9ad0aebf757f0aa8fc45ba282bd25006f7">OvercastSky</a>=0xC9E2FF <span class="comment">/* 7000 K, 201, 226, 255 */</span>,</div>
+<div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9acb80944aa5bed3031b19f1e1101f6a9a"> 55</a></span>&#160; <a class="code" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9acb80944aa5bed3031b19f1e1101f6a9a">ClearBlueSky</a>=0x409CFF <span class="comment">/* 20000 K, 64, 156, 255 */</span>,</div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; WarmFluorescent=0xFFF4E5 <span class="comment">/* 0 K, 255, 244, 229 */</span>,</div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; StandardFluorescent=0xF4FFFA <span class="comment">/* 0 K, 244, 255, 250 */</span>,</div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; CoolWhiteFluorescent=0xD4EBFF <span class="comment">/* 0 K, 212, 235, 255 */</span>,</div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; FullSpectrumFluorescent=0xFFF4F2 <span class="comment">/* 0 K, 255, 244, 242 */</span>,</div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; GrowLightFluorescent=0xFFEFF7 <span class="comment">/* 0 K, 255, 239, 247 */</span>,</div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; BlackLightFluorescent=0xA700FF <span class="comment">/* 0 K, 167, 0, 255 */</span>,</div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; MercuryVapor=0xD8F7FF <span class="comment">/* 0 K, 216, 247, 255 */</span>,</div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; SodiumVapor=0xFFD1B2 <span class="comment">/* 0 K, 255, 209, 178 */</span>,</div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; MetalHalide=0xF2FCFF <span class="comment">/* 0 K, 242, 252, 255 */</span>,</div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; HighPressureSodium=0xFFB74C <span class="comment">/* 0 K, 255, 183, 76 */</span>,</div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div>
+<div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9ae3d35275ab8c374612bcfbcce732b39f"> 76</a></span>&#160; <a class="code" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9ae3d35275ab8c374612bcfbcce732b39f">UncorrectedTemperature</a>=0xFFFFFF</div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;} <a class="code" href="group___color_enums.html#ga251e9e8dc2c7b981786b71706522b2a9">ColorTemperature</a>;</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;</div>
-<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="ttc" id="group___color_enums_html_ggadf6bcba67c9573665af20788c4431ae8af964ffff5f2977a60a83aa3f9f8b4368"><div class="ttname"><a href="group___color_enums.html#ggadf6bcba67c9573665af20788c4431ae8af964ffff5f2977a60a83aa3f9f8b4368">UncorrectedColor</a></div><div class="ttdoc">uncorrected color </div><div class="ttdef"><b>Definition:</b> color.h:26</div></div>
-<div class="ttc" id="group___color_enums_html_gga251e9e8dc2c7b981786b71706522b2a9ac9a2b02351fcc9ad08ef4e2748530e76"><div class="ttname"><a href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9ac9a2b02351fcc9ad08ef4e2748530e76">HighNoonSun</a></div><div class="ttdoc">5400 Kelvin </div><div class="ttdef"><b>Definition:</b> color.h:47</div></div>
-<div class="ttc" id="group___color_enums_html_gga251e9e8dc2c7b981786b71706522b2a9ae5ec76aa869b51e645e9f226dfee4b79"><div class="ttname"><a href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9ae5ec76aa869b51e645e9f226dfee4b79">Halogen</a></div><div class="ttdoc">3200 Kelvin </div><div class="ttdef"><b>Definition:</b> color.h:43</div></div>
-<div class="ttc" id="group___color_enums_html_gga251e9e8dc2c7b981786b71706522b2a9a8f4ad60002c8856dc1f153e2eaa2de91"><div class="ttname"><a href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9a8f4ad60002c8856dc1f153e2eaa2de91">Tungsten40W</a></div><div class="ttdoc">2600 Kelvin </div><div class="ttdef"><b>Definition:</b> color.h:39</div></div>
-<div class="ttc" id="group___color_enums_html_gga251e9e8dc2c7b981786b71706522b2a9a631a1e96b10db9220ab27d70a320ac48"><div class="ttname"><a href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9a631a1e96b10db9220ab27d70a320ac48">Tungsten100W</a></div><div class="ttdoc">2850 Kelvin </div><div class="ttdef"><b>Definition:</b> color.h:41</div></div>
-<div class="ttc" id="group___color_enums_html_gga251e9e8dc2c7b981786b71706522b2a9ae3d35275ab8c374612bcfbcce732b39f"><div class="ttname"><a href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9ae3d35275ab8c374612bcfbcce732b39f">UncorrectedTemperature</a></div><div class="ttdoc">Uncorrected temperature 0xFFFFFF. </div><div class="ttdef"><b>Definition:</b> color.h:74</div></div>
-<div class="ttc" id="group___color_enums_html_ggadf6bcba67c9573665af20788c4431ae8ac52fe8e181ff3c39128664fba835eae3"><div class="ttname"><a href="group___color_enums.html#ggadf6bcba67c9573665af20788c4431ae8ac52fe8e181ff3c39128664fba835eae3">TypicalSMD5050</a></div><div class="ttdoc">typical values for SMD5050 LEDs </div><div class="ttdef"><b>Definition:</b> color.h:14</div></div>
-<div class="ttc" id="group___color_enums_html_gadf6bcba67c9573665af20788c4431ae8"><div class="ttname"><a href="group___color_enums.html#gadf6bcba67c9573665af20788c4431ae8">LEDColorCorrection</a></div><div class="ttdeci">LEDColorCorrection</div><div class="ttdef"><b>Definition:</b> color.h:9</div></div>
-<div class="ttc" id="group___color_enums_html_gga251e9e8dc2c7b981786b71706522b2a9aa9dab8ea30eb2a41c48956480b7014d1"><div class="ttname"><a href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9aa9dab8ea30eb2a41c48956480b7014d1">CarbonArc</a></div><div class="ttdoc">5200 Kelvin </div><div class="ttdef"><b>Definition:</b> color.h:45</div></div>
-<div class="ttc" id="group___color_enums_html_gga251e9e8dc2c7b981786b71706522b2a9a890e0555ad95071fa4391a5775a38621"><div class="ttname"><a href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9a890e0555ad95071fa4391a5775a38621">DirectSunlight</a></div><div class="ttdoc">6000 Kelvin </div><div class="ttdef"><b>Definition:</b> color.h:49</div></div>
-<div class="ttc" id="group___color_enums_html_gga251e9e8dc2c7b981786b71706522b2a9acb80944aa5bed3031b19f1e1101f6a9a"><div class="ttname"><a href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9acb80944aa5bed3031b19f1e1101f6a9a">ClearBlueSky</a></div><div class="ttdoc">20000 Kelvin </div><div class="ttdef"><b>Definition:</b> color.h:53</div></div>
-<div class="ttc" id="group___color_enums_html_ga251e9e8dc2c7b981786b71706522b2a9"><div class="ttname"><a href="group___color_enums.html#ga251e9e8dc2c7b981786b71706522b2a9">ColorTemperature</a></div><div class="ttdeci">ColorTemperature</div><div class="ttdef"><b>Definition:</b> color.h:31</div></div>
-<div class="ttc" id="group___color_enums_html_gga251e9e8dc2c7b981786b71706522b2a9ad0aebf757f0aa8fc45ba282bd25006f7"><div class="ttname"><a href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9ad0aebf757f0aa8fc45ba282bd25006f7">OvercastSky</a></div><div class="ttdoc">7000 Kelvin </div><div class="ttdef"><b>Definition:</b> color.h:51</div></div>
-<div class="ttc" id="group___color_enums_html_ggadf6bcba67c9573665af20788c4431ae8af617057397c2a4f89b4bf2783cdac24b"><div class="ttname"><a href="group___color_enums.html#ggadf6bcba67c9573665af20788c4431ae8af617057397c2a4f89b4bf2783cdac24b">Typical8mmPixel</a></div><div class="ttdoc">typical values for 8mm "pixels on a string" also for many through-hole &#39;T&#39; package LEDs ...</div><div class="ttdef"><b>Definition:</b> color.h:21</div></div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;FASTLED_NAMESPACE_END</div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="ttc" id="group___color_enums_html_ggadf6bcba67c9573665af20788c4431ae8af964ffff5f2977a60a83aa3f9f8b4368"><div class="ttname"><a href="group___color_enums.html#ggadf6bcba67c9573665af20788c4431ae8af964ffff5f2977a60a83aa3f9f8b4368">UncorrectedColor</a></div><div class="ttdoc">uncorrected color </div><div class="ttdef"><b>Definition:</b> color.h:28</div></div>
+<div class="ttc" id="group___color_enums_html_gga251e9e8dc2c7b981786b71706522b2a9ac9a2b02351fcc9ad08ef4e2748530e76"><div class="ttname"><a href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9ac9a2b02351fcc9ad08ef4e2748530e76">HighNoonSun</a></div><div class="ttdoc">5400 Kelvin </div><div class="ttdef"><b>Definition:</b> color.h:49</div></div>
+<div class="ttc" id="group___color_enums_html_gga251e9e8dc2c7b981786b71706522b2a9ae5ec76aa869b51e645e9f226dfee4b79"><div class="ttname"><a href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9ae5ec76aa869b51e645e9f226dfee4b79">Halogen</a></div><div class="ttdoc">3200 Kelvin </div><div class="ttdef"><b>Definition:</b> color.h:45</div></div>
+<div class="ttc" id="group___color_enums_html_gga251e9e8dc2c7b981786b71706522b2a9a8f4ad60002c8856dc1f153e2eaa2de91"><div class="ttname"><a href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9a8f4ad60002c8856dc1f153e2eaa2de91">Tungsten40W</a></div><div class="ttdoc">2600 Kelvin </div><div class="ttdef"><b>Definition:</b> color.h:41</div></div>
+<div class="ttc" id="group___color_enums_html_gga251e9e8dc2c7b981786b71706522b2a9a631a1e96b10db9220ab27d70a320ac48"><div class="ttname"><a href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9a631a1e96b10db9220ab27d70a320ac48">Tungsten100W</a></div><div class="ttdoc">2850 Kelvin </div><div class="ttdef"><b>Definition:</b> color.h:43</div></div>
+<div class="ttc" id="group___color_enums_html_gga251e9e8dc2c7b981786b71706522b2a9ae3d35275ab8c374612bcfbcce732b39f"><div class="ttname"><a href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9ae3d35275ab8c374612bcfbcce732b39f">UncorrectedTemperature</a></div><div class="ttdoc">Uncorrected temperature 0xFFFFFF. </div><div class="ttdef"><b>Definition:</b> color.h:76</div></div>
+<div class="ttc" id="group___color_enums_html_ggadf6bcba67c9573665af20788c4431ae8ac52fe8e181ff3c39128664fba835eae3"><div class="ttname"><a href="group___color_enums.html#ggadf6bcba67c9573665af20788c4431ae8ac52fe8e181ff3c39128664fba835eae3">TypicalSMD5050</a></div><div class="ttdoc">typical values for SMD5050 LEDs </div><div class="ttdef"><b>Definition:</b> color.h:16</div></div>
+<div class="ttc" id="group___color_enums_html_gadf6bcba67c9573665af20788c4431ae8"><div class="ttname"><a href="group___color_enums.html#gadf6bcba67c9573665af20788c4431ae8">LEDColorCorrection</a></div><div class="ttdeci">LEDColorCorrection</div><div class="ttdef"><b>Definition:</b> color.h:11</div></div>
+<div class="ttc" id="group___color_enums_html_gga251e9e8dc2c7b981786b71706522b2a9aa9dab8ea30eb2a41c48956480b7014d1"><div class="ttname"><a href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9aa9dab8ea30eb2a41c48956480b7014d1">CarbonArc</a></div><div class="ttdoc">5200 Kelvin </div><div class="ttdef"><b>Definition:</b> color.h:47</div></div>
+<div class="ttc" id="group___color_enums_html_gga251e9e8dc2c7b981786b71706522b2a9a890e0555ad95071fa4391a5775a38621"><div class="ttname"><a href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9a890e0555ad95071fa4391a5775a38621">DirectSunlight</a></div><div class="ttdoc">6000 Kelvin </div><div class="ttdef"><b>Definition:</b> color.h:51</div></div>
+<div class="ttc" id="group___color_enums_html_gga251e9e8dc2c7b981786b71706522b2a9acb80944aa5bed3031b19f1e1101f6a9a"><div class="ttname"><a href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9acb80944aa5bed3031b19f1e1101f6a9a">ClearBlueSky</a></div><div class="ttdoc">20000 Kelvin </div><div class="ttdef"><b>Definition:</b> color.h:55</div></div>
+<div class="ttc" id="group___color_enums_html_ga251e9e8dc2c7b981786b71706522b2a9"><div class="ttname"><a href="group___color_enums.html#ga251e9e8dc2c7b981786b71706522b2a9">ColorTemperature</a></div><div class="ttdeci">ColorTemperature</div><div class="ttdef"><b>Definition:</b> color.h:33</div></div>
+<div class="ttc" id="group___color_enums_html_gga251e9e8dc2c7b981786b71706522b2a9ad0aebf757f0aa8fc45ba282bd25006f7"><div class="ttname"><a href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9ad0aebf757f0aa8fc45ba282bd25006f7">OvercastSky</a></div><div class="ttdoc">7000 Kelvin </div><div class="ttdef"><b>Definition:</b> color.h:53</div></div>
+<div class="ttc" id="group___color_enums_html_ggadf6bcba67c9573665af20788c4431ae8af617057397c2a4f89b4bf2783cdac24b"><div class="ttname"><a href="group___color_enums.html#ggadf6bcba67c9573665af20788c4431ae8af617057397c2a4f89b4bf2783cdac24b">Typical8mmPixel</a></div><div class="ttdoc">typical values for 8mm "pixels on a string" also for many through-hole &#39;T&#39; package LEDs ...</div><div class="ttdef"><b>Definition:</b> color.h:23</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:46 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/colorpalettes_8h.html b/docs/3.1/colorpalettes_8h.html
new file mode 100644
index 00000000..32f2c8d1
--- /dev/null
+++ b/docs/3.1/colorpalettes_8h.html
@@ -0,0 +1,121 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.9.1"/>
+<title>FastLED: colorpalettes.h File Reference</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="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { init_search(); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">FastLED
+ &#160;<span id="projectnumber">3.1</span>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.9.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</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>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#func-members">Functions</a> &#124;
+<a href="#var-members">Variables</a> </div>
+ <div class="headertitle">
+<div class="title">colorpalettes.h File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>contains definitions for the predefined color palettes supplied by FastLED.
+<a href="#details">More...</a></p>
+
+<p><a href="colorpalettes_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:ga4c24011acb68ef669929a5386af01c54"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga4c24011acb68ef669929a5386af01c54"></a>
+&#160;</td><td class="memItemRight" valign="bottom"><b>DECLARE_GRADIENT_PALETTE</b> (Rainbow_gp)</td></tr>
+<tr class="separator:ga4c24011acb68ef669929a5386af01c54"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
+Variables</h2></td></tr>
+<tr class="memitem:ga57a38373661043f74b292976e83c687b"><td class="memItemLeft" align="right" valign="top">const TProgmemRGBPalette16 CloudColors_p&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___colorpalletes.html#ga57a38373661043f74b292976e83c687b">FL_PROGMEM</a></td></tr>
+<tr class="memdesc:ga57a38373661043f74b292976e83c687b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Cloudy color pallete. <a href="group___colorpalletes.html#ga57a38373661043f74b292976e83c687b">More...</a><br /></td></tr>
+<tr class="separator:ga57a38373661043f74b292976e83c687b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>contains definitions for the predefined color palettes supplied by FastLED. </p>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.9.1
+</small></address>
+</body>
+</html>
diff --git a/docs/3.1/colorpalettes_8h_source.html b/docs/3.1/colorpalettes_8h_source.html
index 11359ea5..91052210 100644
--- a/docs/3.1/colorpalettes_8h_source.html
+++ b/docs/3.1/colorpalettes_8h_source.html
@@ -87,40 +87,42 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="title">colorpalettes.h</div> </div>
</div><!--header-->
<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#ifndef __INC_COLORPALETTES_H</span></div>
+<a href="colorpalettes_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#ifndef __INC_COLORPALETTES_H</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="preprocessor">#define __INC_COLORPALETTES_H</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;</div>
-<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#include &quot;colorutils.h&quot;</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="colorutils_8h.html">colorutils.h</a>&quot;</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;</div>
-<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;FASTLED_NAMESPACE_BEGIN</div>
-<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div>
-<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
-<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div>
-<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> TProgmemRGBPalette16 CloudColors_p <a class="code" href="group___colorpalletes.html#ga57a38373661043f74b292976e83c687b">FL_PROGMEM</a>;</div>
-<div class="line"><a name="l00020"></a><span class="lineno"><a class="line" href="group___colorpalletes.html#ga57a38373661043f74b292976e83c687b"> 20</a></span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> TProgmemRGBPalette16 LavaColors_p <a class="code" href="group___colorpalletes.html#ga57a38373661043f74b292976e83c687b">FL_PROGMEM</a>;</div>
-<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> TProgmemRGBPalette16 OceanColors_p <a class="code" href="group___colorpalletes.html#ga57a38373661043f74b292976e83c687b">FL_PROGMEM</a>;</div>
-<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> TProgmemRGBPalette16 ForestColors_p <a class="code" href="group___colorpalletes.html#ga57a38373661043f74b292976e83c687b">FL_PROGMEM</a>;</div>
-<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div>
-<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> TProgmemRGBPalette16 RainbowColors_p <a class="code" href="group___colorpalletes.html#ga57a38373661043f74b292976e83c687b">FL_PROGMEM</a>;</div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;</div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;FASTLED_NAMESPACE_BEGIN</div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;</div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> TProgmemRGBPalette16 CloudColors_p <a class="code" href="group___colorpalletes.html#ga57a38373661043f74b292976e83c687b">FL_PROGMEM</a>;</div>
+<div class="line"><a name="l00023"></a><span class="lineno"><a class="line" href="group___colorpalletes.html#ga57a38373661043f74b292976e83c687b"> 23</a></span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> TProgmemRGBPalette16 LavaColors_p <a class="code" href="group___colorpalletes.html#ga57a38373661043f74b292976e83c687b">FL_PROGMEM</a>;</div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> TProgmemRGBPalette16 OceanColors_p <a class="code" href="group___colorpalletes.html#ga57a38373661043f74b292976e83c687b">FL_PROGMEM</a>;</div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> TProgmemRGBPalette16 ForestColors_p <a class="code" href="group___colorpalletes.html#ga57a38373661043f74b292976e83c687b">FL_PROGMEM</a>;</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div>
-<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#define RainbowStripesColors_p RainbowStripeColors_p</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> TProgmemRGBPalette16 RainbowStripeColors_p <a class="code" href="group___colorpalletes.html#ga57a38373661043f74b292976e83c687b">FL_PROGMEM</a>;</div>
-<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div>
-<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> TProgmemRGBPalette16 PartyColors_p <a class="code" href="group___colorpalletes.html#ga57a38373661043f74b292976e83c687b">FL_PROGMEM</a>;</div>
-<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div>
-<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> TProgmemRGBPalette16 HeatColors_p <a class="code" href="group___colorpalletes.html#ga57a38373661043f74b292976e83c687b">FL_PROGMEM</a>;</div>
-<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div>
-<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div>
-<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;DECLARE_GRADIENT_PALETTE( Rainbow_gp);</div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> TProgmemRGBPalette16 RainbowColors_p <a class="code" href="group___colorpalletes.html#ga57a38373661043f74b292976e83c687b">FL_PROGMEM</a>;</div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#define RainbowStripesColors_p RainbowStripeColors_p</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> TProgmemRGBPalette16 RainbowStripeColors_p <a class="code" href="group___colorpalletes.html#ga57a38373661043f74b292976e83c687b">FL_PROGMEM</a>;</div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> TProgmemRGBPalette16 PartyColors_p <a class="code" href="group___colorpalletes.html#ga57a38373661043f74b292976e83c687b">FL_PROGMEM</a>;</div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> TProgmemRGBPalette16 HeatColors_p <a class="code" href="group___colorpalletes.html#ga57a38373661043f74b292976e83c687b">FL_PROGMEM</a>;</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div>
-<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;FASTLED_NAMESPACE_END</div>
-<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div>
-<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="ttc" id="group___colorpalletes_html_ga57a38373661043f74b292976e83c687b"><div class="ttname"><a href="group___colorpalletes.html#ga57a38373661043f74b292976e83c687b">FL_PROGMEM</a></div><div class="ttdeci">const TProgmemRGBPalette16 CloudColors_p FL_PROGMEM</div><div class="ttdoc">Cloudy color pallete. </div><div class="ttdef"><b>Definition:</b> colorpalettes.h:20</div></div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;DECLARE_GRADIENT_PALETTE( Rainbow_gp);</div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;FASTLED_NAMESPACE_END</div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="ttc" id="colorutils_8h_html"><div class="ttname"><a href="colorutils_8h.html">colorutils.h</a></div><div class="ttdoc">functions for color fill, paletters, blending, and more </div></div>
+<div class="ttc" id="group___colorpalletes_html_ga57a38373661043f74b292976e83c687b"><div class="ttname"><a href="group___colorpalletes.html#ga57a38373661043f74b292976e83c687b">FL_PROGMEM</a></div><div class="ttdeci">const TProgmemRGBPalette16 CloudColors_p FL_PROGMEM</div><div class="ttdoc">Cloudy color pallete. </div><div class="ttdef"><b>Definition:</b> colorpalettes.h:23</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:46 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/colorutils_8h.html b/docs/3.1/colorutils_8h.html
new file mode 100644
index 00000000..c3cecab7
--- /dev/null
+++ b/docs/3.1/colorutils_8h.html
@@ -0,0 +1,324 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.9.1"/>
+<title>FastLED: colorutils.h File Reference</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="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { init_search(); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">FastLED
+ &#160;<span id="projectnumber">3.1</span>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.9.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</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>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#typedef-members">Typedefs</a> &#124;
+<a href="#enum-members">Enumerations</a> &#124;
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle">
+<div class="title">colorutils.h File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>functions for color fill, paletters, blending, and more
+<a href="#details">More...</a></p>
+
+<p><a href="colorutils_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">union &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="union_t_r_g_b_gradient_palette_entry_union.html">TRGBGradientPaletteEntryUnion</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_h_s_v_palette16.html">CHSVPalette16</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_h_s_v_palette256.html">CHSVPalette256</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_r_g_b_palette16.html">CRGBPalette16</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_r_g_b_palette256.html">CRGBPalette256</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
+Typedefs</h2></td></tr>
+<tr class="memitem:ga3ce4f8424098c820a739f95cf86d7663"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga3ce4f8424098c820a739f95cf86d7663"></a>
+typedef uint32_t&#160;</td><td class="memItemRight" valign="bottom"><b>TProgmemRGBPalette16</b>[16]</td></tr>
+<tr class="separator:ga3ce4f8424098c820a739f95cf86d7663"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga68d7c7a5522fb7aa113e50351bd620d4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga68d7c7a5522fb7aa113e50351bd620d4"></a>
+typedef uint32_t&#160;</td><td class="memItemRight" valign="bottom"><b>TProgmemHSVPalette16</b>[16]</td></tr>
+<tr class="separator:ga68d7c7a5522fb7aa113e50351bd620d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga5c6ee5f16c2e9dcea972adc5b582218c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga5c6ee5f16c2e9dcea972adc5b582218c"></a>
+typedef const uint8_t&#160;</td><td class="memItemRight" valign="bottom"><b>TProgmemRGBGradientPalette_byte</b></td></tr>
+<tr class="separator:ga5c6ee5f16c2e9dcea972adc5b582218c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga56cb3bce8ab7c903689192abedcc9699"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga56cb3bce8ab7c903689192abedcc9699"></a>
+typedef const TProgmemRGBGradientPalette_byte *&#160;</td><td class="memItemRight" valign="bottom"><b>TProgmemRGBGradientPalette_bytes</b></td></tr>
+<tr class="separator:ga56cb3bce8ab7c903689192abedcc9699"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad07b6fd5973f3c9fc4a084b206aaeabd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gad07b6fd5973f3c9fc4a084b206aaeabd"></a>
+typedef TProgmemRGBGradientPalette_bytes&#160;</td><td class="memItemRight" valign="bottom"><b>TProgmemRGBGradientPalettePtr</b></td></tr>
+<tr class="separator:gad07b6fd5973f3c9fc4a084b206aaeabd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga9b4bbbaa572ed85baf5d098dc47a347b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga9b4bbbaa572ed85baf5d098dc47a347b"></a>
+typedef uint8_t&#160;</td><td class="memItemRight" valign="bottom"><b>TDynamicRGBGradientPalette_byte</b></td></tr>
+<tr class="separator:ga9b4bbbaa572ed85baf5d098dc47a347b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae1c82c19302557ba92e9ce0ec2c9ed5b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gae1c82c19302557ba92e9ce0ec2c9ed5b"></a>
+typedef const TDynamicRGBGradientPalette_byte *&#160;</td><td class="memItemRight" valign="bottom"><b>TDynamicRGBGradientPalette_bytes</b></td></tr>
+<tr class="separator:gae1c82c19302557ba92e9ce0ec2c9ed5b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga8ca55222f4aaa94bba41171554225f75"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga8ca55222f4aaa94bba41171554225f75"></a>
+typedef TDynamicRGBGradientPalette_bytes&#160;</td><td class="memItemRight" valign="bottom"><b>TDynamicRGBGradientPalettePtr</b></td></tr>
+<tr class="separator:ga8ca55222f4aaa94bba41171554225f75"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
+Enumerations</h2></td></tr>
+<tr class="memitem:ga097bfc6a8459d95e8afa8a16b9e6476a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga097bfc6a8459d95e8afa8a16b9e6476a"></a>enum &#160;</td><td class="memItemRight" valign="bottom"><b>TGradientDirectionCode</b> { <b>FORWARD_HUES</b>,
+<b>BACKWARD_HUES</b>,
+<b>SHORTEST_HUES</b>,
+<b>LONGEST_HUES</b>
+ }</td></tr>
+<tr class="separator:ga097bfc6a8459d95e8afa8a16b9e6476a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga565c04e626af4a3ec44bf97edc607b4e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga565c04e626af4a3ec44bf97edc607b4e"></a>enum &#160;</td><td class="memItemRight" valign="bottom"><b>TBlendType</b> { <b>NOBLEND</b> =0,
+<b>LINEARBLEND</b> =1
+ }</td></tr>
+<tr class="separator:ga565c04e626af4a3ec44bf97edc607b4e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:gac84d8820fd175567ba66413dfb8bc63b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gac84d8820fd175567ba66413dfb8bc63b"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___colorutils.html#gac84d8820fd175567ba66413dfb8bc63b">fill_solid</a> (struct <a class="el" href="struct_c_r_g_b.html">CRGB</a> *leds, int numToFill, const struct <a class="el" href="struct_c_r_g_b.html">CRGB</a> &amp;color)</td></tr>
+<tr class="memdesc:gac84d8820fd175567ba66413dfb8bc63b"><td class="mdescLeft">&#160;</td><td class="mdescRight">fill_solid - fill a range of LEDs with a solid color Example: fill_solid( leds, NUM_LEDS, CRGB(50,0,200)); <br /></td></tr>
+<tr class="separator:gac84d8820fd175567ba66413dfb8bc63b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad1abf13328e8dd1c483a270af77b17ed"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gad1abf13328e8dd1c483a270af77b17ed"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___colorutils.html#gad1abf13328e8dd1c483a270af77b17ed">fill_solid</a> (struct <a class="el" href="struct_c_h_s_v.html">CHSV</a> *targetArray, int numToFill, const struct <a class="el" href="struct_c_h_s_v.html">CHSV</a> &amp;hsvColor)</td></tr>
+<tr class="memdesc:gad1abf13328e8dd1c483a270af77b17ed"><td class="mdescLeft">&#160;</td><td class="mdescRight">fill_solid - fill a range of LEDs with a solid color Example: fill_solid( leds, NUM_LEDS, CRGB(50,0,200)); <br /></td></tr>
+<tr class="separator:gad1abf13328e8dd1c483a270af77b17ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gafcc7dac88e25736ebc49a9faf2a1c2e2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gafcc7dac88e25736ebc49a9faf2a1c2e2"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___colorutils.html#gafcc7dac88e25736ebc49a9faf2a1c2e2">fill_rainbow</a> (struct <a class="el" href="struct_c_r_g_b.html">CRGB</a> *pFirstLED, int numToFill, uint8_t initialhue, uint8_t deltahue=5)</td></tr>
+<tr class="memdesc:gafcc7dac88e25736ebc49a9faf2a1c2e2"><td class="mdescLeft">&#160;</td><td class="mdescRight">fill_rainbow - fill a range of LEDs with a rainbow of colors, at full saturation and full value (brightness) <br /></td></tr>
+<tr class="separator:gafcc7dac88e25736ebc49a9faf2a1c2e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac3052a230febda0693517ce9d12aa452"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gac3052a230febda0693517ce9d12aa452"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___colorutils.html#gac3052a230febda0693517ce9d12aa452">fill_rainbow</a> (struct <a class="el" href="struct_c_h_s_v.html">CHSV</a> *targetArray, int numToFill, uint8_t initialhue, uint8_t deltahue=5)</td></tr>
+<tr class="memdesc:gac3052a230febda0693517ce9d12aa452"><td class="mdescLeft">&#160;</td><td class="mdescRight">fill_rainbow - fill a range of LEDs with a rainbow of colors, at full saturation and full value (brightness) <br /></td></tr>
+<tr class="separator:gac3052a230febda0693517ce9d12aa452"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga3144bb2bb66aeed33e20f4fdd6cc1a98"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
+<tr class="memitem:ga3144bb2bb66aeed33e20f4fdd6cc1a98"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98">fill_gradient</a> (T *targetArray, uint16_t startpos, <a class="el" href="struct_c_h_s_v.html">CHSV</a> startcolor, uint16_t endpos, <a class="el" href="struct_c_h_s_v.html">CHSV</a> endcolor, TGradientDirectionCode directionCode=SHORTEST_HUES)</td></tr>
+<tr class="memdesc:ga3144bb2bb66aeed33e20f4fdd6cc1a98"><td class="mdescLeft">&#160;</td><td class="mdescRight">fill_gradient - fill an array of colors with a smooth HSV gradient between two specified HSV colors. <a href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98">More...</a><br /></td></tr>
+<tr class="separator:ga3144bb2bb66aeed33e20f4fdd6cc1a98"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gace693b077794f9b6aa80875fdd550a68"><td class="memTemplParams" colspan="2"><a class="anchor" id="gace693b077794f9b6aa80875fdd550a68"></a>
+template&lt;typename T &gt; </td></tr>
+<tr class="memitem:gace693b077794f9b6aa80875fdd550a68"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>fill_gradient</b> (T *targetArray, uint16_t numLeds, const <a class="el" href="struct_c_h_s_v.html">CHSV</a> &amp;c1, const <a class="el" href="struct_c_h_s_v.html">CHSV</a> &amp;c2, TGradientDirectionCode directionCode=SHORTEST_HUES)</td></tr>
+<tr class="separator:gace693b077794f9b6aa80875fdd550a68"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga3a46ed6b7043382df172d7501785033c"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga3a46ed6b7043382df172d7501785033c"></a>
+template&lt;typename T &gt; </td></tr>
+<tr class="memitem:ga3a46ed6b7043382df172d7501785033c"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>fill_gradient</b> (T *targetArray, uint16_t numLeds, const <a class="el" href="struct_c_h_s_v.html">CHSV</a> &amp;c1, const <a class="el" href="struct_c_h_s_v.html">CHSV</a> &amp;c2, const <a class="el" href="struct_c_h_s_v.html">CHSV</a> &amp;c3, TGradientDirectionCode directionCode=SHORTEST_HUES)</td></tr>
+<tr class="separator:ga3a46ed6b7043382df172d7501785033c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga396996c5e505e459b418330f4386f779"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga396996c5e505e459b418330f4386f779"></a>
+template&lt;typename T &gt; </td></tr>
+<tr class="memitem:ga396996c5e505e459b418330f4386f779"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>fill_gradient</b> (T *targetArray, uint16_t numLeds, const <a class="el" href="struct_c_h_s_v.html">CHSV</a> &amp;c1, const <a class="el" href="struct_c_h_s_v.html">CHSV</a> &amp;c2, const <a class="el" href="struct_c_h_s_v.html">CHSV</a> &amp;c3, const <a class="el" href="struct_c_h_s_v.html">CHSV</a> &amp;c4, TGradientDirectionCode directionCode=SHORTEST_HUES)</td></tr>
+<tr class="separator:ga396996c5e505e459b418330f4386f779"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga6afaa1f712186a4b67445f69871cad88"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga6afaa1f712186a4b67445f69871cad88"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><b>fill_gradient_RGB</b> (<a class="el" href="struct_c_r_g_b.html">CRGB</a> *leds, uint16_t startpos, <a class="el" href="struct_c_r_g_b.html">CRGB</a> startcolor, uint16_t endpos, <a class="el" href="struct_c_r_g_b.html">CRGB</a> endcolor)</td></tr>
+<tr class="separator:ga6afaa1f712186a4b67445f69871cad88"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad86495ad60871dacb19923fe9ddde262"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gad86495ad60871dacb19923fe9ddde262"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><b>fill_gradient_RGB</b> (<a class="el" href="struct_c_r_g_b.html">CRGB</a> *leds, uint16_t numLeds, const <a class="el" href="struct_c_r_g_b.html">CRGB</a> &amp;c1, const <a class="el" href="struct_c_r_g_b.html">CRGB</a> &amp;c2)</td></tr>
+<tr class="separator:gad86495ad60871dacb19923fe9ddde262"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac5c3a84d4647d94f946a4696e02d698b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gac5c3a84d4647d94f946a4696e02d698b"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><b>fill_gradient_RGB</b> (<a class="el" href="struct_c_r_g_b.html">CRGB</a> *leds, uint16_t numLeds, const <a class="el" href="struct_c_r_g_b.html">CRGB</a> &amp;c1, const <a class="el" href="struct_c_r_g_b.html">CRGB</a> &amp;c2, const <a class="el" href="struct_c_r_g_b.html">CRGB</a> &amp;c3)</td></tr>
+<tr class="separator:gac5c3a84d4647d94f946a4696e02d698b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga570fbfd0ac82ef3e4e05d3958b641d7a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga570fbfd0ac82ef3e4e05d3958b641d7a"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><b>fill_gradient_RGB</b> (<a class="el" href="struct_c_r_g_b.html">CRGB</a> *leds, uint16_t numLeds, const <a class="el" href="struct_c_r_g_b.html">CRGB</a> &amp;c1, const <a class="el" href="struct_c_r_g_b.html">CRGB</a> &amp;c2, const <a class="el" href="struct_c_r_g_b.html">CRGB</a> &amp;c3, const <a class="el" href="struct_c_r_g_b.html">CRGB</a> &amp;c4)</td></tr>
+<tr class="separator:ga570fbfd0ac82ef3e4e05d3958b641d7a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac1e25878d16efa6112d907738f525773"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gac1e25878d16efa6112d907738f525773"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><b>fadeLightBy</b> (<a class="el" href="struct_c_r_g_b.html">CRGB</a> *leds, uint16_t num_leds, uint8_t fadeBy)</td></tr>
+<tr class="separator:gac1e25878d16efa6112d907738f525773"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaff656b0046fac0d40b8eb02941ce1755"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaff656b0046fac0d40b8eb02941ce1755"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><b>fade_video</b> (<a class="el" href="struct_c_r_g_b.html">CRGB</a> *leds, uint16_t num_leds, uint8_t fadeBy)</td></tr>
+<tr class="separator:gaff656b0046fac0d40b8eb02941ce1755"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga956be37436f2b9c06c99d24263ef8e83"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga956be37436f2b9c06c99d24263ef8e83"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><b>nscale8_video</b> (<a class="el" href="struct_c_r_g_b.html">CRGB</a> *leds, uint16_t num_leds, uint8_t scale)</td></tr>
+<tr class="separator:ga956be37436f2b9c06c99d24263ef8e83"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga404d163d8a422cee2df2baac4151ca98"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga404d163d8a422cee2df2baac4151ca98"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><b>fadeToBlackBy</b> (<a class="el" href="struct_c_r_g_b.html">CRGB</a> *leds, uint16_t num_leds, uint8_t fadeBy)</td></tr>
+<tr class="separator:ga404d163d8a422cee2df2baac4151ca98"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac020b03041306ed9c859bbdfebe943cf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gac020b03041306ed9c859bbdfebe943cf"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><b>fade_raw</b> (<a class="el" href="struct_c_r_g_b.html">CRGB</a> *leds, uint16_t num_leds, uint8_t fadeBy)</td></tr>
+<tr class="separator:gac020b03041306ed9c859bbdfebe943cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad0356fc313196732e7cd4e64f506f82b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gad0356fc313196732e7cd4e64f506f82b"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><b>nscale8</b> (<a class="el" href="struct_c_r_g_b.html">CRGB</a> *leds, uint16_t num_leds, uint8_t scale)</td></tr>
+<tr class="separator:gad0356fc313196732e7cd4e64f506f82b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae8c0a05b75034b4a2cae20ddc70ec15f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gae8c0a05b75034b4a2cae20ddc70ec15f"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><b>fadeUsingColor</b> (<a class="el" href="struct_c_r_g_b.html">CRGB</a> *leds, uint16_t numLeds, const <a class="el" href="struct_c_r_g_b.html">CRGB</a> &amp;colormask)</td></tr>
+<tr class="separator:gae8c0a05b75034b4a2cae20ddc70ec15f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga4f06b4423f71f77346aaf5dabe7dd05c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga4f06b4423f71f77346aaf5dabe7dd05c"></a>
+<a class="el" href="struct_c_r_g_b.html">CRGB</a>&#160;</td><td class="memItemRight" valign="bottom"><b>blend</b> (const <a class="el" href="struct_c_r_g_b.html">CRGB</a> &amp;p1, const <a class="el" href="struct_c_r_g_b.html">CRGB</a> &amp;p2, <a class="el" href="group__lib8tion.html#ga5d6d013429a5b8a09d564d6137217644">fract8</a> amountOfP2)</td></tr>
+<tr class="separator:ga4f06b4423f71f77346aaf5dabe7dd05c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga0d242048cc8978be5ea70a6c33402721"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga0d242048cc8978be5ea70a6c33402721"></a>
+<a class="el" href="struct_c_h_s_v.html">CHSV</a>&#160;</td><td class="memItemRight" valign="bottom"><b>blend</b> (const <a class="el" href="struct_c_h_s_v.html">CHSV</a> &amp;p1, const <a class="el" href="struct_c_h_s_v.html">CHSV</a> &amp;p2, <a class="el" href="group__lib8tion.html#ga5d6d013429a5b8a09d564d6137217644">fract8</a> amountOfP2, TGradientDirectionCode directionCode=SHORTEST_HUES)</td></tr>
+<tr class="separator:ga0d242048cc8978be5ea70a6c33402721"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gabea64e23b31132c325ea0c1fef0d3f13"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gabea64e23b31132c325ea0c1fef0d3f13"></a>
+<a class="el" href="struct_c_r_g_b.html">CRGB</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>blend</b> (const <a class="el" href="struct_c_r_g_b.html">CRGB</a> *src1, const <a class="el" href="struct_c_r_g_b.html">CRGB</a> *src2, <a class="el" href="struct_c_r_g_b.html">CRGB</a> *dest, uint16_t count, <a class="el" href="group__lib8tion.html#ga5d6d013429a5b8a09d564d6137217644">fract8</a> amountOfsrc2)</td></tr>
+<tr class="separator:gabea64e23b31132c325ea0c1fef0d3f13"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga2b2bd0aead5cac9ed7a51f7da845bdaa"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga2b2bd0aead5cac9ed7a51f7da845bdaa"></a>
+<a class="el" href="struct_c_h_s_v.html">CHSV</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>blend</b> (const <a class="el" href="struct_c_h_s_v.html">CHSV</a> *src1, const <a class="el" href="struct_c_h_s_v.html">CHSV</a> *src2, <a class="el" href="struct_c_h_s_v.html">CHSV</a> *dest, uint16_t count, <a class="el" href="group__lib8tion.html#ga5d6d013429a5b8a09d564d6137217644">fract8</a> amountOfsrc2, TGradientDirectionCode directionCode=SHORTEST_HUES)</td></tr>
+<tr class="separator:ga2b2bd0aead5cac9ed7a51f7da845bdaa"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga9ddce40dda09fb46db19c55368baf335"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga9ddce40dda09fb46db19c55368baf335"></a>
+<a class="el" href="struct_c_r_g_b.html">CRGB</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>nblend</b> (<a class="el" href="struct_c_r_g_b.html">CRGB</a> &amp;existing, const <a class="el" href="struct_c_r_g_b.html">CRGB</a> &amp;overlay, <a class="el" href="group__lib8tion.html#ga5d6d013429a5b8a09d564d6137217644">fract8</a> amountOfOverlay)</td></tr>
+<tr class="separator:ga9ddce40dda09fb46db19c55368baf335"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad6e2224119d7df0c7f6fffd6b603bb27"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gad6e2224119d7df0c7f6fffd6b603bb27"></a>
+<a class="el" href="struct_c_h_s_v.html">CHSV</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>nblend</b> (<a class="el" href="struct_c_h_s_v.html">CHSV</a> &amp;existing, const <a class="el" href="struct_c_h_s_v.html">CHSV</a> &amp;overlay, <a class="el" href="group__lib8tion.html#ga5d6d013429a5b8a09d564d6137217644">fract8</a> amountOfOverlay, TGradientDirectionCode directionCode=SHORTEST_HUES)</td></tr>
+<tr class="separator:gad6e2224119d7df0c7f6fffd6b603bb27"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga63e89e8505c65e973218d1638dda3b04"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga63e89e8505c65e973218d1638dda3b04"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><b>nblend</b> (<a class="el" href="struct_c_r_g_b.html">CRGB</a> *existing, <a class="el" href="struct_c_r_g_b.html">CRGB</a> *overlay, uint16_t count, <a class="el" href="group__lib8tion.html#ga5d6d013429a5b8a09d564d6137217644">fract8</a> amountOfOverlay)</td></tr>
+<tr class="separator:ga63e89e8505c65e973218d1638dda3b04"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga6d07fb779bbeddd59a9025cdc64594d6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga6d07fb779bbeddd59a9025cdc64594d6"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><b>nblend</b> (<a class="el" href="struct_c_h_s_v.html">CHSV</a> *existing, <a class="el" href="struct_c_h_s_v.html">CHSV</a> *overlay, uint16_t count, <a class="el" href="group__lib8tion.html#ga5d6d013429a5b8a09d564d6137217644">fract8</a> amountOfOverlay, TGradientDirectionCode directionCode=SHORTEST_HUES)</td></tr>
+<tr class="separator:ga6d07fb779bbeddd59a9025cdc64594d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaacf0416f9e0438f23f92d0df6c338ea3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaacf0416f9e0438f23f92d0df6c338ea3"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><b>blur1d</b> (<a class="el" href="struct_c_r_g_b.html">CRGB</a> *leds, uint16_t numLeds, <a class="el" href="group__lib8tion.html#ga5d6d013429a5b8a09d564d6137217644">fract8</a> blur_amount)</td></tr>
+<tr class="separator:gaacf0416f9e0438f23f92d0df6c338ea3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae97f9574ca4fa1a7ab65782b2a804fba"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gae97f9574ca4fa1a7ab65782b2a804fba"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><b>blur2d</b> (<a class="el" href="struct_c_r_g_b.html">CRGB</a> *leds, uint8_t width, uint8_t height, <a class="el" href="group__lib8tion.html#ga5d6d013429a5b8a09d564d6137217644">fract8</a> blur_amount)</td></tr>
+<tr class="separator:gae97f9574ca4fa1a7ab65782b2a804fba"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga3dbf22d8f71f7a0b54bbfaaf1ef7b44b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga3dbf22d8f71f7a0b54bbfaaf1ef7b44b"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><b>blurRows</b> (<a class="el" href="struct_c_r_g_b.html">CRGB</a> *leds, uint8_t width, uint8_t height, <a class="el" href="group__lib8tion.html#ga5d6d013429a5b8a09d564d6137217644">fract8</a> blur_amount)</td></tr>
+<tr class="separator:ga3dbf22d8f71f7a0b54bbfaaf1ef7b44b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gacb40363ff285a5d816a1cf3096e27c14"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gacb40363ff285a5d816a1cf3096e27c14"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><b>blurColumns</b> (<a class="el" href="struct_c_r_g_b.html">CRGB</a> *leds, uint8_t width, uint8_t height, <a class="el" href="group__lib8tion.html#ga5d6d013429a5b8a09d564d6137217644">fract8</a> blur_amount)</td></tr>
+<tr class="separator:gacb40363ff285a5d816a1cf3096e27c14"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac5c6b83ec07d310385a430f9f0336530"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gac5c6b83ec07d310385a430f9f0336530"></a>
+<a class="el" href="struct_c_r_g_b.html">CRGB</a>&#160;</td><td class="memItemRight" valign="bottom"><b>HeatColor</b> (uint8_t temperature)</td></tr>
+<tr class="separator:gac5c6b83ec07d310385a430f9f0336530"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaea18108bf50282f20a0ecd4213b5ac8c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaea18108bf50282f20a0ecd4213b5ac8c"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><b>UpscalePalette</b> (const struct <a class="el" href="class_c_r_g_b_palette16.html">CRGBPalette16</a> &amp;srcpal16, struct <a class="el" href="class_c_r_g_b_palette256.html">CRGBPalette256</a> &amp;destpal256)</td></tr>
+<tr class="separator:gaea18108bf50282f20a0ecd4213b5ac8c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae2a0641902f28723263666a128995fef"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gae2a0641902f28723263666a128995fef"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><b>UpscalePalette</b> (const struct <a class="el" href="class_c_h_s_v_palette16.html">CHSVPalette16</a> &amp;srcpal16, struct <a class="el" href="class_c_h_s_v_palette256.html">CHSVPalette256</a> &amp;destpal256)</td></tr>
+<tr class="separator:gae2a0641902f28723263666a128995fef"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac46e65aff3dd6519b33e27f0998f17cd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gac46e65aff3dd6519b33e27f0998f17cd"></a>
+<a class="el" href="struct_c_r_g_b.html">CRGB</a>&#160;</td><td class="memItemRight" valign="bottom"><b>ColorFromPalette</b> (const <a class="el" href="class_c_r_g_b_palette16.html">CRGBPalette16</a> &amp;pal, uint8_t index, uint8_t brightness=255, TBlendType blendType=LINEARBLEND)</td></tr>
+<tr class="separator:gac46e65aff3dd6519b33e27f0998f17cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga0a1bd774cd65ee7b85a20c11212bbd95"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga0a1bd774cd65ee7b85a20c11212bbd95"></a>
+<a class="el" href="struct_c_r_g_b.html">CRGB</a>&#160;</td><td class="memItemRight" valign="bottom"><b>ColorFromPalette</b> (const TProgmemRGBPalette16 &amp;pal, uint8_t index, uint8_t brightness=255, TBlendType blendType=LINEARBLEND)</td></tr>
+<tr class="separator:ga0a1bd774cd65ee7b85a20c11212bbd95"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf65fa1b4fedbbd7b8054a71e1b6474b3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaf65fa1b4fedbbd7b8054a71e1b6474b3"></a>
+<a class="el" href="struct_c_r_g_b.html">CRGB</a>&#160;</td><td class="memItemRight" valign="bottom"><b>ColorFromPalette</b> (const <a class="el" href="class_c_r_g_b_palette256.html">CRGBPalette256</a> &amp;pal, uint8_t index, uint8_t brightness=255, TBlendType blendType=NOBLEND)</td></tr>
+<tr class="separator:gaf65fa1b4fedbbd7b8054a71e1b6474b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gafdfc20fbf9b8e4b71e010a654ec27891"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gafdfc20fbf9b8e4b71e010a654ec27891"></a>
+<a class="el" href="struct_c_h_s_v.html">CHSV</a>&#160;</td><td class="memItemRight" valign="bottom"><b>ColorFromPalette</b> (const <a class="el" href="class_c_h_s_v_palette16.html">CHSVPalette16</a> &amp;pal, uint8_t index, uint8_t brightness=255, TBlendType blendType=LINEARBLEND)</td></tr>
+<tr class="separator:gafdfc20fbf9b8e4b71e010a654ec27891"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga79c94ea554455e72eabab172cc15456f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga79c94ea554455e72eabab172cc15456f"></a>
+<a class="el" href="struct_c_h_s_v.html">CHSV</a>&#160;</td><td class="memItemRight" valign="bottom"><b>ColorFromPalette</b> (const <a class="el" href="class_c_h_s_v_palette256.html">CHSVPalette256</a> &amp;pal, uint8_t index, uint8_t brightness=255, TBlendType blendType=NOBLEND)</td></tr>
+<tr class="separator:ga79c94ea554455e72eabab172cc15456f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad6431776a18268d286d146158e25cb36"><td class="memTemplParams" colspan="2"><a class="anchor" id="gad6431776a18268d286d146158e25cb36"></a>
+template&lt;typename PALETTE &gt; </td></tr>
+<tr class="memitem:gad6431776a18268d286d146158e25cb36"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>fill_palette</b> (<a class="el" href="struct_c_r_g_b.html">CRGB</a> *L, uint16_t N, uint8_t startIndex, uint8_t incIndex, const PALETTE &amp;pal, uint8_t brightness, TBlendType blendType)</td></tr>
+<tr class="separator:gad6431776a18268d286d146158e25cb36"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf34a692bbec05b697dc9c06d8bb0f74f"><td class="memTemplParams" colspan="2"><a class="anchor" id="gaf34a692bbec05b697dc9c06d8bb0f74f"></a>
+template&lt;typename PALETTE &gt; </td></tr>
+<tr class="memitem:gaf34a692bbec05b697dc9c06d8bb0f74f"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>map_data_into_colors_through_palette</b> (uint8_t *dataArray, uint16_t dataCount, <a class="el" href="struct_c_r_g_b.html">CRGB</a> *targetColorArray, const PALETTE &amp;pal, uint8_t brightness=255, uint8_t opacity=255, TBlendType blendType=LINEARBLEND)</td></tr>
+<tr class="separator:gaf34a692bbec05b697dc9c06d8bb0f74f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga361799a4ba193694ad974079c980430c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga361799a4ba193694ad974079c980430c"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><b>nblendPaletteTowardPalette</b> (<a class="el" href="class_c_r_g_b_palette16.html">CRGBPalette16</a> &amp;currentPalette, <a class="el" href="class_c_r_g_b_palette16.html">CRGBPalette16</a> &amp;targetPalette, uint8_t maxChanges=24)</td></tr>
+<tr class="separator:ga361799a4ba193694ad974079c980430c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga7c3f73fd65e9a9857870c1835a1c7d85"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga7c3f73fd65e9a9857870c1835a1c7d85"></a>
+uint8_t&#160;</td><td class="memItemRight" valign="bottom"><b>applyGamma_video</b> (uint8_t brightness, float gamma)</td></tr>
+<tr class="separator:ga7c3f73fd65e9a9857870c1835a1c7d85"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga39c1068518d7697230930504e57c4d91"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga39c1068518d7697230930504e57c4d91"></a>
+<a class="el" href="struct_c_r_g_b.html">CRGB</a>&#160;</td><td class="memItemRight" valign="bottom"><b>applyGamma_video</b> (const <a class="el" href="struct_c_r_g_b.html">CRGB</a> &amp;orig, float gamma)</td></tr>
+<tr class="separator:ga39c1068518d7697230930504e57c4d91"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga7e4fabd5c919111e7405790b9463aea4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga7e4fabd5c919111e7405790b9463aea4"></a>
+<a class="el" href="struct_c_r_g_b.html">CRGB</a>&#160;</td><td class="memItemRight" valign="bottom"><b>applyGamma_video</b> (const <a class="el" href="struct_c_r_g_b.html">CRGB</a> &amp;orig, float gammaR, float gammaG, float gammaB)</td></tr>
+<tr class="separator:ga7e4fabd5c919111e7405790b9463aea4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga983d672315d5763873005cf1e6ebbe89"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga983d672315d5763873005cf1e6ebbe89"></a>
+<a class="el" href="struct_c_r_g_b.html">CRGB</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>napplyGamma_video</b> (<a class="el" href="struct_c_r_g_b.html">CRGB</a> &amp;rgb, float gamma)</td></tr>
+<tr class="separator:ga983d672315d5763873005cf1e6ebbe89"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf1bf4d592f1bceacd3754658d25bfd72"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaf1bf4d592f1bceacd3754658d25bfd72"></a>
+<a class="el" href="struct_c_r_g_b.html">CRGB</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>napplyGamma_video</b> (<a class="el" href="struct_c_r_g_b.html">CRGB</a> &amp;rgb, float gammaR, float gammaG, float gammaB)</td></tr>
+<tr class="separator:gaf1bf4d592f1bceacd3754658d25bfd72"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga4e3dbd54679072011f2be08bcd23c337"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga4e3dbd54679072011f2be08bcd23c337"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><b>napplyGamma_video</b> (<a class="el" href="struct_c_r_g_b.html">CRGB</a> *rgbarray, uint16_t count, float gamma)</td></tr>
+<tr class="separator:ga4e3dbd54679072011f2be08bcd23c337"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac8d8e24305e35eda2e8717c688f36ca4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gac8d8e24305e35eda2e8717c688f36ca4"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><b>napplyGamma_video</b> (<a class="el" href="struct_c_r_g_b.html">CRGB</a> *rgbarray, uint16_t count, float gammaR, float gammaG, float gammaB)</td></tr>
+<tr class="separator:gac8d8e24305e35eda2e8717c688f36ca4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>functions for color fill, paletters, blending, and more </p>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.9.1
+</small></address>
+</body>
+</html>
diff --git a/docs/3.1/colorutils_8h_source.html b/docs/3.1/colorutils_8h_source.html
index 0e45d229..6fdfdbdf 100644
--- a/docs/3.1/colorutils_8h_source.html
+++ b/docs/3.1/colorutils_8h_source.html
@@ -87,1151 +87,1152 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="title">colorutils.h</div> </div>
</div><!--header-->
<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#ifndef __INC_COLORUTILS_H</span></div>
+<a href="colorutils_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#ifndef __INC_COLORUTILS_H</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="preprocessor">#define __INC_COLORUTILS_H</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;</div>
-<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;</div>
-<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="preprocessor">#include &quot;pixeltypes.h&quot;</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="preprocessor">#include &quot;fastled_progmem.h&quot;</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div>
-<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;FASTLED_NAMESPACE_BEGIN</div>
-<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div>
-<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group___colorutils.html#gac84d8820fd175567ba66413dfb8bc63b">fill_solid</a>( <span class="keyword">struct</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a> * leds, <span class="keywordtype">int</span> numToFill,</div>
-<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; color);</div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
-<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group___colorutils.html#gac84d8820fd175567ba66413dfb8bc63b">fill_solid</a>( <span class="keyword">struct</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>* targetArray, <span class="keywordtype">int</span> numToFill,</div>
-<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; hsvColor);</div>
-<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div>
-<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div>
-<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group___colorutils.html#gafcc7dac88e25736ebc49a9faf2a1c2e2">fill_rainbow</a>( <span class="keyword">struct</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a> * pFirstLED, <span class="keywordtype">int</span> numToFill,</div>
-<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; uint8_t initialhue,</div>
-<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; uint8_t deltahue = 5);</div>
-<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div>
-<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group___colorutils.html#gafcc7dac88e25736ebc49a9faf2a1c2e2">fill_rainbow</a>( <span class="keyword">struct</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a> * targetArray, <span class="keywordtype">int</span> numToFill,</div>
-<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; uint8_t initialhue,</div>
-<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; uint8_t deltahue = 5);</div>
-<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div>
-<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div>
-<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment">// fill_gradient - fill an array of colors with a smooth HSV gradient</span></div>
-<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment">// between two specified HSV colors.</span></div>
-<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment">// Since &#39;hue&#39; is a value around a color wheel,</span></div>
-<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment">// there are always two ways to sweep from one hue</span></div>
-<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment">// to another.</span></div>
-<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment">// This function lets you specify which way you want</span></div>
-<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment">// the hue gradient to sweep around the color wheel:</span></div>
-<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment">// FORWARD_HUES: hue always goes clockwise</span></div>
-<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment">// BACKWARD_HUES: hue always goes counter-clockwise</span></div>
-<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment">// SHORTEST_HUES: hue goes whichever way is shortest</span></div>
-<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment">// LONGEST_HUES: hue goes whichever way is longest</span></div>
-<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment">// The default is SHORTEST_HUES, as this is nearly</span></div>
-<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment">// always what is wanted.</span></div>
-<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment">// fill_gradient can write the gradient colors EITHER</span></div>
-<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="comment">// (1) into an array of CRGBs (e.g., into leds[] array, or an RGB Palette)</span></div>
-<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment">// OR</span></div>
-<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment">// (2) into an array of CHSVs (e.g. an HSV Palette).</span></div>
-<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment">// In the case of writing into a CRGB array, the gradient is</span></div>
-<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment">// computed in HSV space, and then HSV values are converted to RGB</span></div>
-<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="comment">// as they&#39;re written into the RGB array.</span></div>
-<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div>
-<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span> { FORWARD_HUES, BACKWARD_HUES, SHORTEST_HUES, LONGEST_HUES } TGradientDirectionCode;</div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;</div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="preprocessor">#include &quot;pixeltypes.h&quot;</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="fastled__progmem_8h.html">fastled_progmem.h</a>&quot;</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;</div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;FASTLED_NAMESPACE_BEGIN</div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group___colorutils.html#gac84d8820fd175567ba66413dfb8bc63b">fill_solid</a>( <span class="keyword">struct</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a> * leds, <span class="keywordtype">int</span> numToFill,</div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; color);</div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group___colorutils.html#gac84d8820fd175567ba66413dfb8bc63b">fill_solid</a>( <span class="keyword">struct</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>* targetArray, <span class="keywordtype">int</span> numToFill,</div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; hsvColor);</div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group___colorutils.html#gafcc7dac88e25736ebc49a9faf2a1c2e2">fill_rainbow</a>( <span class="keyword">struct</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a> * pFirstLED, <span class="keywordtype">int</span> numToFill,</div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; uint8_t initialhue,</div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; uint8_t deltahue = 5);</div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group___colorutils.html#gafcc7dac88e25736ebc49a9faf2a1c2e2">fill_rainbow</a>( <span class="keyword">struct</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a> * targetArray, <span class="keywordtype">int</span> numToFill,</div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; uint8_t initialhue,</div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; uint8_t deltahue = 5);</div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment">// fill_gradient - fill an array of colors with a smooth HSV gradient</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment">// between two specified HSV colors.</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment">// Since &#39;hue&#39; is a value around a color wheel,</span></div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment">// there are always two ways to sweep from one hue</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment">// to another.</span></div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment">// This function lets you specify which way you want</span></div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment">// the hue gradient to sweep around the color wheel:</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment">// FORWARD_HUES: hue always goes clockwise</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment">// BACKWARD_HUES: hue always goes counter-clockwise</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment">// SHORTEST_HUES: hue goes whichever way is shortest</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment">// LONGEST_HUES: hue goes whichever way is longest</span></div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment">// The default is SHORTEST_HUES, as this is nearly</span></div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment">// always what is wanted.</span></div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment">// fill_gradient can write the gradient colors EITHER</span></div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment">// (1) into an array of CRGBs (e.g., into leds[] array, or an RGB Palette)</span></div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="comment">// OR</span></div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment">// (2) into an array of CHSVs (e.g. an HSV Palette).</span></div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="comment">// In the case of writing into a CRGB array, the gradient is</span></div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="comment">// computed in HSV space, and then HSV values are converted to RGB</span></div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="comment">// as they&#39;re written into the RGB array.</span></div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div>
-<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span> { FORWARD_HUES, BACKWARD_HUES, SHORTEST_HUES, LONGEST_HUES } TGradientDirectionCode;</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div>
-<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="preprocessor">#define saccum87 int16_t</span></div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div>
-<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98"> 91</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98">fill_gradient</a>( T* targetArray,</div>
-<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; uint16_t startpos, <a class="code" href="struct_c_h_s_v.html">CHSV</a> startcolor,</div>
-<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; uint16_t endpos, <a class="code" href="struct_c_h_s_v.html">CHSV</a> endcolor,</div>
-<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; TGradientDirectionCode directionCode = SHORTEST_HUES )</div>
-<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;{</div>
-<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="comment">// if the points are in the wrong order, straighten them</span></div>
-<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">if</span>( endpos &lt; startpos ) {</div>
-<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; uint16_t t = endpos;</div>
-<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <a class="code" href="struct_c_h_s_v.html">CHSV</a> tc = endcolor;</div>
-<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; startpos = t;</div>
-<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; startcolor = tc;</div>
-<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; endcolor = startcolor;</div>
-<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; endpos = startpos;</div>
-<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; }</div>
-<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div>
-<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="comment">// If we&#39;re fading toward black (val=0) or white (sat=0),</span></div>
-<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="comment">// then set the endhue to the starthue.</span></div>
-<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="comment">// This lets us ramp smoothly to black or white, regardless</span></div>
-<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="comment">// of what &#39;hue&#39; was set in the endcolor (since it doesn&#39;t matter)</span></div>
-<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">if</span>( endcolor.value == 0 || endcolor.saturation == 0) {</div>
-<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; endcolor.hue = startcolor.hue;</div>
-<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; }</div>
-<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;</div>
-<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="comment">// Similarly, if we&#39;re fading in from black (val=0) or white (sat=0)</span></div>
-<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="comment">// then set the starthue to the endhue.</span></div>
-<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="comment">// This lets us ramp smoothly up from black or white, regardless</span></div>
-<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="comment">// of what &#39;hue&#39; was set in the startcolor (since it doesn&#39;t matter)</span></div>
-<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">if</span>( startcolor.value == 0 || startcolor.saturation == 0) {</div>
-<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; startcolor.hue = endcolor.hue;</div>
-<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; }</div>
-<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;</div>
-<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; saccum87 huedistance87;</div>
-<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; saccum87 satdistance87;</div>
-<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; saccum87 valdistance87;</div>
-<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;</div>
-<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; satdistance87 = (endcolor.sat - startcolor.sat) &lt;&lt; 7;</div>
-<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; valdistance87 = (endcolor.val - startcolor.val) &lt;&lt; 7;</div>
-<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;</div>
-<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; uint8_t huedelta8 = endcolor.hue - startcolor.hue;</div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="preprocessor">#define saccum87 int16_t</span></div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
+<div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98"> 93</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98">fill_gradient</a>( T* targetArray,</div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; uint16_t startpos, <a class="code" href="struct_c_h_s_v.html">CHSV</a> startcolor,</div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; uint16_t endpos, <a class="code" href="struct_c_h_s_v.html">CHSV</a> endcolor,</div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; TGradientDirectionCode directionCode = SHORTEST_HUES )</div>
+<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;{</div>
+<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="comment">// if the points are in the wrong order, straighten them</span></div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">if</span>( endpos &lt; startpos ) {</div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; uint16_t t = endpos;</div>
+<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <a class="code" href="struct_c_h_s_v.html">CHSV</a> tc = endcolor;</div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; startpos = t;</div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; startcolor = tc;</div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; endcolor = startcolor;</div>
+<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; endpos = startpos;</div>
+<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; }</div>
+<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;</div>
+<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="comment">// If we&#39;re fading toward black (val=0) or white (sat=0),</span></div>
+<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="comment">// then set the endhue to the starthue.</span></div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="comment">// This lets us ramp smoothly to black or white, regardless</span></div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="comment">// of what &#39;hue&#39; was set in the endcolor (since it doesn&#39;t matter)</span></div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">if</span>( endcolor.value == 0 || endcolor.saturation == 0) {</div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; endcolor.hue = startcolor.hue;</div>
+<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; }</div>
+<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;</div>
+<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="comment">// Similarly, if we&#39;re fading in from black (val=0) or white (sat=0)</span></div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="comment">// then set the starthue to the endhue.</span></div>
+<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="comment">// This lets us ramp smoothly up from black or white, regardless</span></div>
+<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="comment">// of what &#39;hue&#39; was set in the startcolor (since it doesn&#39;t matter)</span></div>
+<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">if</span>( startcolor.value == 0 || startcolor.saturation == 0) {</div>
+<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; startcolor.hue = endcolor.hue;</div>
+<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; }</div>
+<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;</div>
+<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; saccum87 huedistance87;</div>
+<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; saccum87 satdistance87;</div>
+<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; saccum87 valdistance87;</div>
+<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div>
+<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; satdistance87 = (endcolor.sat - startcolor.sat) &lt;&lt; 7;</div>
+<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; valdistance87 = (endcolor.val - startcolor.val) &lt;&lt; 7;</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;</div>
-<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">if</span>( directionCode == SHORTEST_HUES ) {</div>
-<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; directionCode = FORWARD_HUES;</div>
-<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">if</span>( huedelta8 &gt; 127) {</div>
-<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; directionCode = BACKWARD_HUES;</div>
-<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; }</div>
-<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; }</div>
-<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;</div>
-<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">if</span>( directionCode == LONGEST_HUES ) {</div>
-<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; directionCode = FORWARD_HUES;</div>
-<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">if</span>( huedelta8 &lt; 128) {</div>
-<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; directionCode = BACKWARD_HUES;</div>
-<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; }</div>
-<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; }</div>
-<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;</div>
-<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">if</span>( directionCode == FORWARD_HUES) {</div>
-<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; huedistance87 = huedelta8 &lt;&lt; 7;</div>
-<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; }</div>
-<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">else</span> <span class="comment">/* directionCode == BACKWARD_HUES */</span></div>
-<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; {</div>
-<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; huedistance87 = (uint8_t)(256 - huedelta8) &lt;&lt; 7;</div>
-<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; huedistance87 = -huedistance87;</div>
-<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; }</div>
-<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;</div>
-<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; uint16_t pixeldistance = endpos - startpos;</div>
-<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; int16_t divisor = pixeldistance ? pixeldistance : 1;</div>
-<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;</div>
-<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; saccum87 huedelta87 = huedistance87 / divisor;</div>
-<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; saccum87 satdelta87 = satdistance87 / divisor;</div>
-<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; saccum87 valdelta87 = valdistance87 / divisor;</div>
-<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;</div>
-<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; huedelta87 *= 2;</div>
-<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; satdelta87 *= 2;</div>
-<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; valdelta87 *= 2;</div>
-<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;</div>
-<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <a class="code" href="group__lib8tion.html#ga397f872082dbd788e04e8c6e443e563a">accum88</a> hue88 = startcolor.hue &lt;&lt; 8;</div>
-<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <a class="code" href="group__lib8tion.html#ga397f872082dbd788e04e8c6e443e563a">accum88</a> sat88 = startcolor.sat &lt;&lt; 8;</div>
-<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <a class="code" href="group__lib8tion.html#ga397f872082dbd788e04e8c6e443e563a">accum88</a> val88 = startcolor.val &lt;&lt; 8;</div>
-<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">for</span>( uint16_t i = startpos; i &lt;= endpos; i++) {</div>
-<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; targetArray[i] = <a class="code" href="struct_c_h_s_v.html">CHSV</a>( hue88 &gt;&gt; 8, sat88 &gt;&gt; 8, val88 &gt;&gt; 8);</div>
-<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; hue88 += huedelta87;</div>
-<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; sat88 += satdelta87;</div>
-<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; val88 += valdelta87;</div>
-<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; }</div>
-<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;}</div>
-<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;</div>
-<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;</div>
-<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="comment">// Convenience functions to fill an array of colors with a</span></div>
-<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="comment">// two-color, three-color, or four-color gradient</span></div>
-<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98">fill_gradient</a>( T* targetArray, uint16_t numLeds, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c1, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c2,</div>
-<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; TGradientDirectionCode directionCode = SHORTEST_HUES )</div>
-<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;{</div>
-<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; uint16_t last = numLeds - 1;</div>
-<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <a class="code" href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98">fill_gradient</a>( targetArray, 0, c1, last, c2, directionCode);</div>
-<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;}</div>
-<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;</div>
-<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98">fill_gradient</a>( T* targetArray, uint16_t numLeds,</div>
-<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c1, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c2, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c3,</div>
-<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; TGradientDirectionCode directionCode = SHORTEST_HUES )</div>
-<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;{</div>
-<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; uint16_t half = (numLeds / 2);</div>
-<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; uint16_t last = numLeds - 1;</div>
-<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <a class="code" href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98">fill_gradient</a>( targetArray, 0, c1, half, c2, directionCode);</div>
-<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <a class="code" href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98">fill_gradient</a>( targetArray, half, c2, last, c3, directionCode);</div>
-<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;}</div>
-<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;</div>
-<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98">fill_gradient</a>( T* targetArray, uint16_t numLeds,</div>
-<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c1, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c2, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c3, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c4,</div>
-<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; TGradientDirectionCode directionCode = SHORTEST_HUES )</div>
-<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;{</div>
-<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; uint16_t onethird = (numLeds / 3);</div>
-<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; uint16_t twothirds = ((numLeds * 2) / 3);</div>
-<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; uint16_t last = numLeds - 1;</div>
-<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <a class="code" href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98">fill_gradient</a>( targetArray, 0, c1, onethird, c2, directionCode);</div>
-<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <a class="code" href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98">fill_gradient</a>( targetArray, onethird, c2, twothirds, c3, directionCode);</div>
-<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <a class="code" href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98">fill_gradient</a>( targetArray, twothirds, c3, last, c4, directionCode);</div>
-<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;}</div>
-<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;</div>
-<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;<span class="comment">// convenience synonym</span></div>
-<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;<span class="preprocessor">#define fill_gradient_HSV fill_gradient</span></div>
-<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;</div>
-<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;</div>
-<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;<span class="comment">// fill_gradient_RGB - fill a range of LEDs with a smooth RGB gradient</span></div>
-<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;<span class="comment">// between two specified RGB colors.</span></div>
-<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;<span class="comment">// Unlike HSV, there is no &#39;color wheel&#39; in RGB space,</span></div>
-<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;<span class="comment">// and therefore there&#39;s only one &#39;direction&#39; for the</span></div>
-<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;<span class="comment">// gradient to go, and no &#39;direction code&#39; is needed.</span></div>
-<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;<span class="keywordtype">void</span> fill_gradient_RGB( <a class="code" href="struct_c_r_g_b.html">CRGB</a>* leds,</div>
-<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; uint16_t startpos, <a class="code" href="struct_c_r_g_b.html">CRGB</a> startcolor,</div>
-<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; uint16_t endpos, <a class="code" href="struct_c_r_g_b.html">CRGB</a> endcolor );</div>
-<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;<span class="keywordtype">void</span> fill_gradient_RGB( <a class="code" href="struct_c_r_g_b.html">CRGB</a>* leds, uint16_t numLeds, <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c1, <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c2);</div>
-<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;<span class="keywordtype">void</span> fill_gradient_RGB( <a class="code" href="struct_c_r_g_b.html">CRGB</a>* leds, uint16_t numLeds, <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c1, <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c2, <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c3);</div>
-<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;<span class="keywordtype">void</span> fill_gradient_RGB( <a class="code" href="struct_c_r_g_b.html">CRGB</a>* leds, uint16_t numLeds, <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c1, <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c2, <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c3, <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c4);</div>
-<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;</div>
-<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;</div>
-<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;<span class="comment">// fadeLightBy and fade_video - reduce the brightness of an array</span></div>
-<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;<span class="comment">// of pixels all at once. Guaranteed</span></div>
-<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;<span class="comment">// to never fade all the way to black.</span></div>
-<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;<span class="comment">// (The two names are synonyms.)</span></div>
-<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;<span class="keywordtype">void</span> fadeLightBy( <a class="code" href="struct_c_r_g_b.html">CRGB</a>* leds, uint16_t num_leds, uint8_t fadeBy);</div>
-<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;<span class="keywordtype">void</span> fade_video( <a class="code" href="struct_c_r_g_b.html">CRGB</a>* leds, uint16_t num_leds, uint8_t fadeBy);</div>
-<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;</div>
-<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;<span class="comment">// nscale8_video - scale down the brightness of an array of pixels</span></div>
-<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;<span class="comment">// all at once. Guaranteed to never scale a pixel</span></div>
-<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;<span class="comment">// all the way down to black, unless &#39;scale&#39; is zero.</span></div>
-<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;<span class="keywordtype">void</span> nscale8_video( <a class="code" href="struct_c_r_g_b.html">CRGB</a>* leds, uint16_t num_leds, uint8_t scale);</div>
-<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;</div>
-<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;<span class="comment">// fadeToBlackBy and fade_raw - reduce the brightness of an array</span></div>
-<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;<span class="comment">// of pixels all at once. These</span></div>
-<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;<span class="comment">// functions will eventually fade all</span></div>
-<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;<span class="comment">// the way to black.</span></div>
-<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;<span class="comment">// (The two names are synonyms.)</span></div>
-<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;<span class="keywordtype">void</span> fadeToBlackBy( <a class="code" href="struct_c_r_g_b.html">CRGB</a>* leds, uint16_t num_leds, uint8_t fadeBy);</div>
-<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;<span class="keywordtype">void</span> fade_raw( <a class="code" href="struct_c_r_g_b.html">CRGB</a>* leds, uint16_t num_leds, uint8_t fadeBy);</div>
-<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;</div>
-<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;<span class="comment">// nscale8 - scale down the brightness of an array of pixels</span></div>
-<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;<span class="comment">// all at once. This function can scale pixels all the</span></div>
-<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;<span class="comment">// way down to black even if &#39;scale&#39; is not zero.</span></div>
-<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;<span class="keywordtype">void</span> nscale8( <a class="code" href="struct_c_r_g_b.html">CRGB</a>* leds, uint16_t num_leds, uint8_t scale);</div>
-<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;</div>
-<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;<span class="comment">// fadeUsingColor - scale down the brightness of an array of pixels,</span></div>
-<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;<span class="comment">// as though it were seen through a transparent</span></div>
-<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;<span class="comment">// filter with the specified color.</span></div>
-<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;<span class="comment">// For example, if the colormask is</span></div>
-<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;<span class="comment">// CRGB( 200, 100, 50)</span></div>
-<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;<span class="comment">// then the pixels&#39; red will be faded to 200/256ths,</span></div>
-<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;<span class="comment">// their green to 100/256ths, and their blue to 50/256ths.</span></div>
-<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;<span class="comment">// This particular example give a &#39;hot fade&#39; look,</span></div>
-<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;<span class="comment">// with white fading to yellow, then red, then black.</span></div>
-<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;<span class="comment">// You can also use colormasks like CRGB::Blue to</span></div>
-<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;<span class="comment">// zero out the red and green elements, leaving blue</span></div>
-<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;<span class="comment">// (largely) the same.</span></div>
-<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;<span class="keywordtype">void</span> fadeUsingColor( <a class="code" href="struct_c_r_g_b.html">CRGB</a>* leds, uint16_t numLeds, <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; colormask);</div>
-<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;</div>
-<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;</div>
-<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;<span class="comment">// Pixel blending</span></div>
-<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;<span class="comment">// blend - computes a new color blended some fraction of the way</span></div>
-<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;<span class="comment">// between two other colors.</span></div>
-<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;<a class="code" href="struct_c_r_g_b.html">CRGB</a> blend( <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; p1, <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; p2, <a class="code" href="group__lib8tion.html#ga5d6d013429a5b8a09d564d6137217644">fract8</a> amountOfP2 );</div>
-<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;</div>
-<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;<a class="code" href="struct_c_h_s_v.html">CHSV</a> blend( <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; p1, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; p2, <a class="code" href="group__lib8tion.html#ga5d6d013429a5b8a09d564d6137217644">fract8</a> amountOfP2,</div>
-<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; TGradientDirectionCode directionCode = SHORTEST_HUES );</div>
-<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;</div>
-<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;<span class="comment">// blend - computes a new color blended array of colors, each</span></div>
-<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;<span class="comment">// a given fraction of the way between corresponding</span></div>
-<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;<span class="comment">// elements of two source arrays of colors.</span></div>
-<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;<span class="comment">// Useful for blending palettes.</span></div>
-<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;<a class="code" href="struct_c_r_g_b.html">CRGB</a>* blend( <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>* src1, <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>* src2, <a class="code" href="struct_c_r_g_b.html">CRGB</a>* dest,</div>
-<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; uint16_t count, <a class="code" href="group__lib8tion.html#ga5d6d013429a5b8a09d564d6137217644">fract8</a> amountOfsrc2 );</div>
-<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;</div>
-<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;<a class="code" href="struct_c_h_s_v.html">CHSV</a>* blend( <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>* src1, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>* src2, <a class="code" href="struct_c_h_s_v.html">CHSV</a>* dest,</div>
-<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; uint16_t count, <a class="code" href="group__lib8tion.html#ga5d6d013429a5b8a09d564d6137217644">fract8</a> amountOfsrc2,</div>
-<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; TGradientDirectionCode directionCode = SHORTEST_HUES );</div>
-<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;</div>
-<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;<span class="comment">// nblend - destructively modifies one color, blending</span></div>
-<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;<span class="comment">// in a given fraction of an overlay color</span></div>
-<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;<a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; nblend( <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; existing, <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; overlay, <a class="code" href="group__lib8tion.html#ga5d6d013429a5b8a09d564d6137217644">fract8</a> amountOfOverlay );</div>
-<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;</div>
-<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;<a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; nblend( <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; existing, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; overlay, <a class="code" href="group__lib8tion.html#ga5d6d013429a5b8a09d564d6137217644">fract8</a> amountOfOverlay,</div>
-<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; TGradientDirectionCode directionCode = SHORTEST_HUES );</div>
-<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;</div>
-<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;<span class="comment">// nblend - destructively blends a given fraction of</span></div>
-<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;<span class="comment">// a new color array into an existing color array</span></div>
-<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;<span class="keywordtype">void</span> nblend( <a class="code" href="struct_c_r_g_b.html">CRGB</a>* existing, <a class="code" href="struct_c_r_g_b.html">CRGB</a>* overlay, uint16_t count, <a class="code" href="group__lib8tion.html#ga5d6d013429a5b8a09d564d6137217644">fract8</a> amountOfOverlay);</div>
-<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;</div>
-<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;<span class="keywordtype">void</span> nblend( <a class="code" href="struct_c_h_s_v.html">CHSV</a>* existing, <a class="code" href="struct_c_h_s_v.html">CHSV</a>* overlay, uint16_t count, <a class="code" href="group__lib8tion.html#ga5d6d013429a5b8a09d564d6137217644">fract8</a> amountOfOverlay,</div>
-<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; TGradientDirectionCode directionCode = SHORTEST_HUES);</div>
-<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;</div>
-<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;</div>
-<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;<span class="comment">// blur1d: one-dimensional blur filter. Spreads light to 2 line neighbors.</span></div>
-<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;<span class="comment">// blur2d: two-dimensional blur filter. Spreads light to 8 XY neighbors.</span></div>
-<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;<span class="comment">// 0 = no spread at all</span></div>
-<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;<span class="comment">// 64 = moderate spreading</span></div>
-<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;<span class="comment">// 172 = maximum smooth, even spreading</span></div>
-<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;<span class="comment">// 173..255 = wider spreading, but increasing flicker</span></div>
+<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; uint8_t huedelta8 = endcolor.hue - startcolor.hue;</div>
+<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;</div>
+<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">if</span>( directionCode == SHORTEST_HUES ) {</div>
+<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; directionCode = FORWARD_HUES;</div>
+<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">if</span>( huedelta8 &gt; 127) {</div>
+<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; directionCode = BACKWARD_HUES;</div>
+<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; }</div>
+<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; }</div>
+<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;</div>
+<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">if</span>( directionCode == LONGEST_HUES ) {</div>
+<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; directionCode = FORWARD_HUES;</div>
+<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordflow">if</span>( huedelta8 &lt; 128) {</div>
+<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; directionCode = BACKWARD_HUES;</div>
+<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; }</div>
+<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; }</div>
+<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;</div>
+<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">if</span>( directionCode == FORWARD_HUES) {</div>
+<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; huedistance87 = huedelta8 &lt;&lt; 7;</div>
+<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; }</div>
+<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">else</span> <span class="comment">/* directionCode == BACKWARD_HUES */</span></div>
+<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; {</div>
+<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; huedistance87 = (uint8_t)(256 - huedelta8) &lt;&lt; 7;</div>
+<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; huedistance87 = -huedistance87;</div>
+<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; }</div>
+<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;</div>
+<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; uint16_t pixeldistance = endpos - startpos;</div>
+<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; int16_t divisor = pixeldistance ? pixeldistance : 1;</div>
+<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;</div>
+<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; saccum87 huedelta87 = huedistance87 / divisor;</div>
+<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; saccum87 satdelta87 = satdistance87 / divisor;</div>
+<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; saccum87 valdelta87 = valdistance87 / divisor;</div>
+<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;</div>
+<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; huedelta87 *= 2;</div>
+<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; satdelta87 *= 2;</div>
+<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; valdelta87 *= 2;</div>
+<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;</div>
+<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <a class="code" href="group__lib8tion.html#ga397f872082dbd788e04e8c6e443e563a">accum88</a> hue88 = startcolor.hue &lt;&lt; 8;</div>
+<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <a class="code" href="group__lib8tion.html#ga397f872082dbd788e04e8c6e443e563a">accum88</a> sat88 = startcolor.sat &lt;&lt; 8;</div>
+<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <a class="code" href="group__lib8tion.html#ga397f872082dbd788e04e8c6e443e563a">accum88</a> val88 = startcolor.val &lt;&lt; 8;</div>
+<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">for</span>( uint16_t i = startpos; i &lt;= endpos; i++) {</div>
+<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; targetArray[i] = <a class="code" href="struct_c_h_s_v.html">CHSV</a>( hue88 &gt;&gt; 8, sat88 &gt;&gt; 8, val88 &gt;&gt; 8);</div>
+<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; hue88 += huedelta87;</div>
+<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; sat88 += satdelta87;</div>
+<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; val88 += valdelta87;</div>
+<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; }</div>
+<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;}</div>
+<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;</div>
+<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;</div>
+<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;<span class="comment">// Convenience functions to fill an array of colors with a</span></div>
+<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="comment">// two-color, three-color, or four-color gradient</span></div>
+<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
+<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98">fill_gradient</a>( T* targetArray, uint16_t numLeds, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c1, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c2,</div>
+<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; TGradientDirectionCode directionCode = SHORTEST_HUES )</div>
+<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;{</div>
+<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; uint16_t last = numLeds - 1;</div>
+<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <a class="code" href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98">fill_gradient</a>( targetArray, 0, c1, last, c2, directionCode);</div>
+<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;}</div>
+<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;</div>
+<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
+<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98">fill_gradient</a>( T* targetArray, uint16_t numLeds,</div>
+<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c1, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c2, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c3,</div>
+<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; TGradientDirectionCode directionCode = SHORTEST_HUES )</div>
+<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;{</div>
+<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; uint16_t half = (numLeds / 2);</div>
+<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; uint16_t last = numLeds - 1;</div>
+<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <a class="code" href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98">fill_gradient</a>( targetArray, 0, c1, half, c2, directionCode);</div>
+<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <a class="code" href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98">fill_gradient</a>( targetArray, half, c2, last, c3, directionCode);</div>
+<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;}</div>
+<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;</div>
+<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
+<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98">fill_gradient</a>( T* targetArray, uint16_t numLeds,</div>
+<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c1, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c2, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c3, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c4,</div>
+<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; TGradientDirectionCode directionCode = SHORTEST_HUES )</div>
+<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;{</div>
+<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; uint16_t onethird = (numLeds / 3);</div>
+<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; uint16_t twothirds = ((numLeds * 2) / 3);</div>
+<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; uint16_t last = numLeds - 1;</div>
+<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <a class="code" href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98">fill_gradient</a>( targetArray, 0, c1, onethird, c2, directionCode);</div>
+<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <a class="code" href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98">fill_gradient</a>( targetArray, onethird, c2, twothirds, c3, directionCode);</div>
+<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <a class="code" href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98">fill_gradient</a>( targetArray, twothirds, c3, last, c4, directionCode);</div>
+<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;}</div>
+<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;</div>
+<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;<span class="comment">// convenience synonym</span></div>
+<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;<span class="preprocessor">#define fill_gradient_HSV fill_gradient</span></div>
+<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;</div>
+<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;</div>
+<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;<span class="comment">// fill_gradient_RGB - fill a range of LEDs with a smooth RGB gradient</span></div>
+<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;<span class="comment">// between two specified RGB colors.</span></div>
+<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;<span class="comment">// Unlike HSV, there is no &#39;color wheel&#39; in RGB space,</span></div>
+<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;<span class="comment">// and therefore there&#39;s only one &#39;direction&#39; for the</span></div>
+<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;<span class="comment">// gradient to go, and no &#39;direction code&#39; is needed.</span></div>
+<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;<span class="keywordtype">void</span> fill_gradient_RGB( <a class="code" href="struct_c_r_g_b.html">CRGB</a>* leds,</div>
+<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; uint16_t startpos, <a class="code" href="struct_c_r_g_b.html">CRGB</a> startcolor,</div>
+<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; uint16_t endpos, <a class="code" href="struct_c_r_g_b.html">CRGB</a> endcolor );</div>
+<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;<span class="keywordtype">void</span> fill_gradient_RGB( <a class="code" href="struct_c_r_g_b.html">CRGB</a>* leds, uint16_t numLeds, <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c1, <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c2);</div>
+<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;<span class="keywordtype">void</span> fill_gradient_RGB( <a class="code" href="struct_c_r_g_b.html">CRGB</a>* leds, uint16_t numLeds, <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c1, <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c2, <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c3);</div>
+<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;<span class="keywordtype">void</span> fill_gradient_RGB( <a class="code" href="struct_c_r_g_b.html">CRGB</a>* leds, uint16_t numLeds, <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c1, <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c2, <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c3, <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c4);</div>
+<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;</div>
+<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;</div>
+<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;<span class="comment">// fadeLightBy and fade_video - reduce the brightness of an array</span></div>
+<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;<span class="comment">// of pixels all at once. Guaranteed</span></div>
+<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;<span class="comment">// to never fade all the way to black.</span></div>
+<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;<span class="comment">// (The two names are synonyms.)</span></div>
+<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;<span class="keywordtype">void</span> fadeLightBy( <a class="code" href="struct_c_r_g_b.html">CRGB</a>* leds, uint16_t num_leds, uint8_t fadeBy);</div>
+<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;<span class="keywordtype">void</span> fade_video( <a class="code" href="struct_c_r_g_b.html">CRGB</a>* leds, uint16_t num_leds, uint8_t fadeBy);</div>
+<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;</div>
+<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;<span class="comment">// nscale8_video - scale down the brightness of an array of pixels</span></div>
+<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;<span class="comment">// all at once. Guaranteed to never scale a pixel</span></div>
+<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;<span class="comment">// all the way down to black, unless &#39;scale&#39; is zero.</span></div>
+<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;<span class="keywordtype">void</span> nscale8_video( <a class="code" href="struct_c_r_g_b.html">CRGB</a>* leds, uint16_t num_leds, uint8_t scale);</div>
+<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;</div>
+<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;<span class="comment">// fadeToBlackBy and fade_raw - reduce the brightness of an array</span></div>
+<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;<span class="comment">// of pixels all at once. These</span></div>
+<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;<span class="comment">// functions will eventually fade all</span></div>
+<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;<span class="comment">// the way to black.</span></div>
+<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;<span class="comment">// (The two names are synonyms.)</span></div>
+<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;<span class="keywordtype">void</span> fadeToBlackBy( <a class="code" href="struct_c_r_g_b.html">CRGB</a>* leds, uint16_t num_leds, uint8_t fadeBy);</div>
+<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;<span class="keywordtype">void</span> fade_raw( <a class="code" href="struct_c_r_g_b.html">CRGB</a>* leds, uint16_t num_leds, uint8_t fadeBy);</div>
+<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;</div>
+<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;<span class="comment">// nscale8 - scale down the brightness of an array of pixels</span></div>
+<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;<span class="comment">// all at once. This function can scale pixels all the</span></div>
+<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;<span class="comment">// way down to black even if &#39;scale&#39; is not zero.</span></div>
+<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;<span class="keywordtype">void</span> nscale8( <a class="code" href="struct_c_r_g_b.html">CRGB</a>* leds, uint16_t num_leds, uint8_t scale);</div>
+<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;</div>
+<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;<span class="comment">// fadeUsingColor - scale down the brightness of an array of pixels,</span></div>
+<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;<span class="comment">// as though it were seen through a transparent</span></div>
+<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;<span class="comment">// filter with the specified color.</span></div>
+<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;<span class="comment">// For example, if the colormask is</span></div>
+<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;<span class="comment">// CRGB( 200, 100, 50)</span></div>
+<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;<span class="comment">// then the pixels&#39; red will be faded to 200/256ths,</span></div>
+<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;<span class="comment">// their green to 100/256ths, and their blue to 50/256ths.</span></div>
+<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;<span class="comment">// This particular example give a &#39;hot fade&#39; look,</span></div>
+<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;<span class="comment">// with white fading to yellow, then red, then black.</span></div>
+<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;<span class="comment">// You can also use colormasks like CRGB::Blue to</span></div>
+<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;<span class="comment">// zero out the red and green elements, leaving blue</span></div>
+<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;<span class="comment">// (largely) the same.</span></div>
+<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;<span class="keywordtype">void</span> fadeUsingColor( <a class="code" href="struct_c_r_g_b.html">CRGB</a>* leds, uint16_t numLeds, <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; colormask);</div>
+<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;</div>
+<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;</div>
+<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;<span class="comment">// Pixel blending</span></div>
+<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;<span class="comment">// blend - computes a new color blended some fraction of the way</span></div>
+<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;<span class="comment">// between two other colors.</span></div>
+<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;<a class="code" href="struct_c_r_g_b.html">CRGB</a> blend( <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; p1, <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; p2, <a class="code" href="group__lib8tion.html#ga5d6d013429a5b8a09d564d6137217644">fract8</a> amountOfP2 );</div>
+<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;</div>
+<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;<a class="code" href="struct_c_h_s_v.html">CHSV</a> blend( <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; p1, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; p2, <a class="code" href="group__lib8tion.html#ga5d6d013429a5b8a09d564d6137217644">fract8</a> amountOfP2,</div>
+<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; TGradientDirectionCode directionCode = SHORTEST_HUES );</div>
+<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;</div>
+<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;<span class="comment">// blend - computes a new color blended array of colors, each</span></div>
+<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;<span class="comment">// a given fraction of the way between corresponding</span></div>
+<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;<span class="comment">// elements of two source arrays of colors.</span></div>
+<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;<span class="comment">// Useful for blending palettes.</span></div>
+<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;<a class="code" href="struct_c_r_g_b.html">CRGB</a>* blend( <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>* src1, <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>* src2, <a class="code" href="struct_c_r_g_b.html">CRGB</a>* dest,</div>
+<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; uint16_t count, <a class="code" href="group__lib8tion.html#ga5d6d013429a5b8a09d564d6137217644">fract8</a> amountOfsrc2 );</div>
+<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;</div>
+<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;<a class="code" href="struct_c_h_s_v.html">CHSV</a>* blend( <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>* src1, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>* src2, <a class="code" href="struct_c_h_s_v.html">CHSV</a>* dest,</div>
+<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; uint16_t count, <a class="code" href="group__lib8tion.html#ga5d6d013429a5b8a09d564d6137217644">fract8</a> amountOfsrc2,</div>
+<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; TGradientDirectionCode directionCode = SHORTEST_HUES );</div>
+<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;</div>
+<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;<span class="comment">// nblend - destructively modifies one color, blending</span></div>
+<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;<span class="comment">// in a given fraction of an overlay color</span></div>
+<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;<a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; nblend( <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; existing, <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; overlay, <a class="code" href="group__lib8tion.html#ga5d6d013429a5b8a09d564d6137217644">fract8</a> amountOfOverlay );</div>
+<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;</div>
+<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;<a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; nblend( <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; existing, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; overlay, <a class="code" href="group__lib8tion.html#ga5d6d013429a5b8a09d564d6137217644">fract8</a> amountOfOverlay,</div>
+<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; TGradientDirectionCode directionCode = SHORTEST_HUES );</div>
+<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;</div>
+<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;<span class="comment">// nblend - destructively blends a given fraction of</span></div>
+<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;<span class="comment">// a new color array into an existing color array</span></div>
+<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;<span class="keywordtype">void</span> nblend( <a class="code" href="struct_c_r_g_b.html">CRGB</a>* existing, <a class="code" href="struct_c_r_g_b.html">CRGB</a>* overlay, uint16_t count, <a class="code" href="group__lib8tion.html#ga5d6d013429a5b8a09d564d6137217644">fract8</a> amountOfOverlay);</div>
+<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;</div>
+<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;<span class="keywordtype">void</span> nblend( <a class="code" href="struct_c_h_s_v.html">CHSV</a>* existing, <a class="code" href="struct_c_h_s_v.html">CHSV</a>* overlay, uint16_t count, <a class="code" href="group__lib8tion.html#ga5d6d013429a5b8a09d564d6137217644">fract8</a> amountOfOverlay,</div>
+<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; TGradientDirectionCode directionCode = SHORTEST_HUES);</div>
+<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;</div>
+<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;</div>
+<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;<span class="comment">// blur1d: one-dimensional blur filter. Spreads light to 2 line neighbors.</span></div>
+<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;<span class="comment">// blur2d: two-dimensional blur filter. Spreads light to 8 XY neighbors.</span></div>
+<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;<span class="comment">// 0 = no spread at all</span></div>
+<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;<span class="comment">// 64 = moderate spreading</span></div>
+<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;<span class="comment">// 172 = maximum smooth, even spreading</span></div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;<span class="comment">// Total light is NOT entirely conserved, so many repeated</span></div>
-<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;<span class="comment">// calls to &#39;blur&#39; will also result in the light fading,</span></div>
-<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;<span class="comment">// eventually all the way to black; this is by design so that</span></div>
-<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160;<span class="comment">// it can be used to (slowly) clear the LEDs to black.</span></div>
-<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;<span class="keywordtype">void</span> blur1d( <a class="code" href="struct_c_r_g_b.html">CRGB</a>* leds, uint16_t numLeds, <a class="code" href="group__lib8tion.html#ga5d6d013429a5b8a09d564d6137217644">fract8</a> blur_amount);</div>
-<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;<span class="keywordtype">void</span> blur2d( <a class="code" href="struct_c_r_g_b.html">CRGB</a>* leds, uint8_t width, uint8_t height, <a class="code" href="group__lib8tion.html#ga5d6d013429a5b8a09d564d6137217644">fract8</a> blur_amount);</div>
-<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;</div>
-<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;<span class="comment">// blurRows: perform a blur1d on every row of a rectangular matrix</span></div>
-<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;<span class="keywordtype">void</span> blurRows( <a class="code" href="struct_c_r_g_b.html">CRGB</a>* leds, uint8_t width, uint8_t height, <a class="code" href="group__lib8tion.html#ga5d6d013429a5b8a09d564d6137217644">fract8</a> blur_amount);</div>
-<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;<span class="comment">// blurColumns: perform a blur1d on each column of a rectangular matrix</span></div>
-<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;<span class="keywordtype">void</span> blurColumns(<a class="code" href="struct_c_r_g_b.html">CRGB</a>* leds, uint8_t width, uint8_t height, <a class="code" href="group__lib8tion.html#ga5d6d013429a5b8a09d564d6137217644">fract8</a> blur_amount);</div>
-<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;</div>
-<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;</div>
-<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;<span class="comment">// CRGB HeatColor( uint8_t temperature)</span></div>
-<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;<span class="comment">// Approximates a &#39;black body radiation&#39; spectrum for</span></div>
-<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;<span class="comment">// a given &#39;heat&#39; level. This is useful for animations of &#39;fire&#39;.</span></div>
-<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;<span class="comment">// Heat is specified as an arbitrary scale from 0 (cool) to 255 (hot).</span></div>
-<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;<span class="comment">// This is NOT a chromatically correct &#39;black body radiation&#39;</span></div>
-<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;<span class="comment">// spectrum, but it&#39;s surprisingly close, and it&#39;s fast and small.</span></div>
-<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;<a class="code" href="struct_c_r_g_b.html">CRGB</a> HeatColor( uint8_t temperature);</div>
-<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;</div>
-<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;</div>
-<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;<span class="comment">// Palettes</span></div>
-<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;<span class="comment">// RGB Palettes map an 8-bit value (0..255) to an RGB color.</span></div>
+<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;<span class="comment">// 173..255 = wider spreading, but increasing flicker</span></div>
+<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;<span class="comment">// Total light is NOT entirely conserved, so many repeated</span></div>
+<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160;<span class="comment">// calls to &#39;blur&#39; will also result in the light fading,</span></div>
+<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;<span class="comment">// eventually all the way to black; this is by design so that</span></div>
+<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;<span class="comment">// it can be used to (slowly) clear the LEDs to black.</span></div>
+<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;<span class="keywordtype">void</span> blur1d( <a class="code" href="struct_c_r_g_b.html">CRGB</a>* leds, uint16_t numLeds, <a class="code" href="group__lib8tion.html#ga5d6d013429a5b8a09d564d6137217644">fract8</a> blur_amount);</div>
+<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;<span class="keywordtype">void</span> blur2d( <a class="code" href="struct_c_r_g_b.html">CRGB</a>* leds, uint8_t width, uint8_t height, <a class="code" href="group__lib8tion.html#ga5d6d013429a5b8a09d564d6137217644">fract8</a> blur_amount);</div>
+<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;</div>
+<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;<span class="comment">// blurRows: perform a blur1d on every row of a rectangular matrix</span></div>
+<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;<span class="keywordtype">void</span> blurRows( <a class="code" href="struct_c_r_g_b.html">CRGB</a>* leds, uint8_t width, uint8_t height, <a class="code" href="group__lib8tion.html#ga5d6d013429a5b8a09d564d6137217644">fract8</a> blur_amount);</div>
+<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;<span class="comment">// blurColumns: perform a blur1d on each column of a rectangular matrix</span></div>
+<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;<span class="keywordtype">void</span> blurColumns(<a class="code" href="struct_c_r_g_b.html">CRGB</a>* leds, uint8_t width, uint8_t height, <a class="code" href="group__lib8tion.html#ga5d6d013429a5b8a09d564d6137217644">fract8</a> blur_amount);</div>
+<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;</div>
+<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;</div>
+<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;<span class="comment">// CRGB HeatColor( uint8_t temperature)</span></div>
+<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;<span class="comment">// Approximates a &#39;black body radiation&#39; spectrum for</span></div>
+<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;<span class="comment">// a given &#39;heat&#39; level. This is useful for animations of &#39;fire&#39;.</span></div>
+<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;<span class="comment">// Heat is specified as an arbitrary scale from 0 (cool) to 255 (hot).</span></div>
+<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;<span class="comment">// This is NOT a chromatically correct &#39;black body radiation&#39;</span></div>
+<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;<span class="comment">// spectrum, but it&#39;s surprisingly close, and it&#39;s fast and small.</span></div>
+<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;<a class="code" href="struct_c_r_g_b.html">CRGB</a> HeatColor( uint8_t temperature);</div>
+<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;</div>
+<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;</div>
+<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;<span class="comment">// Palettes</span></div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;<span class="comment">// You can create any color palette you wish; a couple of starters</span></div>
-<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;<span class="comment">// are provided: Forest, Clouds, Lava, Ocean, Rainbow, and Rainbow Stripes.</span></div>
-<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;<span class="comment">// Palettes come in the traditional 256-entry variety, which take</span></div>
-<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;<span class="comment">// up 768 bytes of RAM, and lightweight 16-entry varieties. The 16-entry</span></div>
-<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;<span class="comment">// variety automatically interpolates between its entries to produce</span></div>
-<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;<span class="comment">// a full 256-element color map, but at a cost of only 48 bytes or RAM.</span></div>
-<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160;<span class="comment">// Basic operation is like this: (example shows the 16-entry variety)</span></div>
-<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;<span class="comment">// 1. Declare your palette storage:</span></div>
-<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;<span class="comment">// CRGBPalette16 myPalette;</span></div>
-<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;<span class="comment">// 2. Fill myPalette with your own 16 colors, or with a preset color scheme.</span></div>
-<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;<span class="comment">// You can specify your 16 colors a variety of ways:</span></div>
-<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;<span class="comment">// CRGBPalette16 myPalette(</span></div>
-<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;<span class="comment">// CRGB::Black,</span></div>
-<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160;<span class="comment">// CRGB::Black,</span></div>
-<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;<span class="comment">// CRGB::Red,</span></div>
-<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160;<span class="comment">// CRGB::Yellow,</span></div>
-<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;<span class="comment">// CRGB::Green,</span></div>
-<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;<span class="comment">// CRGB::Blue,</span></div>
-<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;<span class="comment">// CRGB::Purple,</span></div>
-<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;<span class="comment">// CRGB::Black,</span></div>
-<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;<span class="comment">// 0x100000,</span></div>
-<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;<span class="comment">// 0x200000,</span></div>
-<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;<span class="comment">// 0x400000,</span></div>
-<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160;<span class="comment">// 0x800000,</span></div>
-<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160;<span class="comment">// CHSV( 30,255,255),</span></div>
-<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160;<span class="comment">// CHSV( 50,255,255),</span></div>
-<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160;<span class="comment">// CHSV( 70,255,255),</span></div>
-<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;<span class="comment">// CHSV( 90,255,255)</span></div>
-<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;<span class="comment">// );</span></div>
-<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160;<span class="comment">// Or you can initiaize your palette with a preset color scheme:</span></div>
-<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;<span class="comment">// myPalette = RainbowStripesColors_p;</span></div>
-<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160;<span class="comment">// 3. Any time you want to set a pixel to a color from your palette, use</span></div>
-<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160;<span class="comment">// &quot;ColorFromPalette(...)&quot; as shown:</span></div>
-<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160;<span class="comment">// uint8_t index = /* any value 0..255 */;</span></div>
-<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160;<span class="comment">// leds[i] = ColorFromPalette( myPalette, index);</span></div>
-<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;<span class="comment">// Even though your palette has only 16 explicily defined entries, you</span></div>
-<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;<span class="comment">// can use an &#39;index&#39; from 0..255. The 16 explicit palette entries will</span></div>
-<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160;<span class="comment">// be spread evenly across the 0..255 range, and the intermedate values</span></div>
-<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;<span class="comment">// will be RGB-interpolated between adjacent explicit entries.</span></div>
-<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;<span class="comment">// It&#39;s easier to use than it sounds.</span></div>
+<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;<span class="comment">// RGB Palettes map an 8-bit value (0..255) to an RGB color.</span></div>
+<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;<span class="comment">// You can create any color palette you wish; a couple of starters</span></div>
+<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;<span class="comment">// are provided: Forest, Clouds, Lava, Ocean, Rainbow, and Rainbow Stripes.</span></div>
+<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;<span class="comment">// Palettes come in the traditional 256-entry variety, which take</span></div>
+<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;<span class="comment">// up 768 bytes of RAM, and lightweight 16-entry varieties. The 16-entry</span></div>
+<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160;<span class="comment">// variety automatically interpolates between its entries to produce</span></div>
+<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160;<span class="comment">// a full 256-element color map, but at a cost of only 48 bytes or RAM.</span></div>
+<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;<span class="comment">// Basic operation is like this: (example shows the 16-entry variety)</span></div>
+<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;<span class="comment">// 1. Declare your palette storage:</span></div>
+<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;<span class="comment">// CRGBPalette16 myPalette;</span></div>
+<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;<span class="comment">// 2. Fill myPalette with your own 16 colors, or with a preset color scheme.</span></div>
+<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;<span class="comment">// You can specify your 16 colors a variety of ways:</span></div>
+<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160;<span class="comment">// CRGBPalette16 myPalette(</span></div>
+<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;<span class="comment">// CRGB::Black,</span></div>
+<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160;<span class="comment">// CRGB::Black,</span></div>
+<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;<span class="comment">// CRGB::Red,</span></div>
+<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;<span class="comment">// CRGB::Yellow,</span></div>
+<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;<span class="comment">// CRGB::Green,</span></div>
+<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;<span class="comment">// CRGB::Blue,</span></div>
+<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160;<span class="comment">// CRGB::Purple,</span></div>
+<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;<span class="comment">// CRGB::Black,</span></div>
+<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;<span class="comment">// 0x100000,</span></div>
+<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160;<span class="comment">// 0x200000,</span></div>
+<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;<span class="comment">// 0x400000,</span></div>
+<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160;<span class="comment">// 0x800000,</span></div>
+<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160;<span class="comment">// CHSV( 30,255,255),</span></div>
+<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;<span class="comment">// CHSV( 50,255,255),</span></div>
+<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;<span class="comment">// CHSV( 70,255,255),</span></div>
+<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;<span class="comment">// CHSV( 90,255,255)</span></div>
+<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160;<span class="comment">// );</span></div>
+<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160;<span class="comment">// Or you can initiaize your palette with a preset color scheme:</span></div>
+<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160;<span class="comment">// myPalette = RainbowStripesColors_p;</span></div>
+<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160;<span class="comment">// 3. Any time you want to set a pixel to a color from your palette, use</span></div>
+<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160;<span class="comment">// &quot;ColorFromPalette(...)&quot; as shown:</span></div>
+<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160;<span class="comment">// uint8_t index = /* any value 0..255 */;</span></div>
+<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;<span class="comment">// leds[i] = ColorFromPalette( myPalette, index);</span></div>
+<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160;<span class="comment">// Even though your palette has only 16 explicily defined entries, you</span></div>
+<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;<span class="comment">// can use an &#39;index&#39; from 0..255. The 16 explicit palette entries will</span></div>
+<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160;<span class="comment">// be spread evenly across the 0..255 range, and the intermedate values</span></div>
+<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;<span class="comment">// will be RGB-interpolated between adjacent explicit entries.</span></div>
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;</div>
-<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160;<span class="keyword">class </span><a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>;</div>
-<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160;<span class="keyword">class </span><a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>;</div>
-<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;<span class="keyword">class </span><a class="code" href="class_c_h_s_v_palette16.html">CHSVPalette16</a>;</div>
-<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;<span class="keyword">class </span><a class="code" href="class_c_h_s_v_palette256.html">CHSVPalette256</a>;</div>
-<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;<span class="keyword">typedef</span> uint32_t TProgmemRGBPalette16[16];</div>
-<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;<span class="keyword">typedef</span> uint32_t TProgmemHSVPalette16[16];</div>
-<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160;<span class="preprocessor">#define TProgmemPalette16 TProgmemRGBPalette16</span></div>
-<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160;</div>
-<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160;<span class="keyword">typedef</span> <span class="keyword">const</span> uint8_t TProgmemRGBGradientPalette_byte ;</div>
-<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160;<span class="keyword">typedef</span> <span class="keyword">const</span> TProgmemRGBGradientPalette_byte *TProgmemRGBGradientPalette_bytes;</div>
-<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160;<span class="keyword">typedef</span> TProgmemRGBGradientPalette_bytes TProgmemRGBGradientPalettePtr;</div>
-<div class="line"><a name="l00402"></a><span class="lineno"><a class="line" href="union_t_r_g_b_gradient_palette_entry_union.html"> 402</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">union </span>{</div>
-<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keyword">struct </span>{</div>
-<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; uint8_t index;</div>
-<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; uint8_t r;</div>
-<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; uint8_t g;</div>
-<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; uint8_t b;</div>
-<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; };</div>
-<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; uint32_t dword;</div>
-<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; uint8_t bytes[4];</div>
-<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;} <a class="code" href="union_t_r_g_b_gradient_palette_entry_union.html">TRGBGradientPaletteEntryUnion</a>;</div>
-<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;</div>
-<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160;<span class="keyword">typedef</span> uint8_t TDynamicRGBGradientPalette_byte ;</div>
-<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;<span class="keyword">typedef</span> <span class="keyword">const</span> TDynamicRGBGradientPalette_byte *TDynamicRGBGradientPalette_bytes;</div>
-<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160;<span class="keyword">typedef</span> TDynamicRGBGradientPalette_bytes TDynamicRGBGradientPalettePtr;</div>
-<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160;</div>
-<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;</div>
-<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160;<span class="comment">// Convert a 16-entry palette to a 256-entry palette</span></div>
-<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;<span class="keywordtype">void</span> UpscalePalette(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>&amp; srcpal16, <span class="keyword">struct</span> <a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>&amp; destpal256);</div>
-<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160;<span class="keywordtype">void</span> UpscalePalette(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="class_c_h_s_v_palette16.html">CHSVPalette16</a>&amp; srcpal16, <span class="keyword">struct</span> <a class="code" href="class_c_h_s_v_palette256.html">CHSVPalette256</a>&amp; destpal256);</div>
-<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160;</div>
-<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;</div>
-<div class="line"><a name="l00423"></a><span class="lineno"><a class="line" href="class_c_h_s_v_palette16.html"> 423</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_c_h_s_v_palette16.html">CHSVPalette16</a> {</div>
-<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <a class="code" href="struct_c_h_s_v.html">CHSV</a> entries[16];</div>
-<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <a class="code" href="class_c_h_s_v_palette16.html">CHSVPalette16</a>() {};</div>
-<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <a class="code" href="class_c_h_s_v_palette16.html">CHSVPalette16</a>( <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c00,<span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c01,<span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c02,<span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c03,</div>
-<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c04,<span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c05,<span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c06,<span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c07,</div>
-<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c08,<span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c09,<span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c10,<span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c11,</div>
-<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c12,<span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c13,<span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c14,<span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c15 )</div>
-<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; {</div>
-<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; entries[0]=c00; entries[1]=c01; entries[2]=c02; entries[3]=c03;</div>
-<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; entries[4]=c04; entries[5]=c05; entries[6]=c06; entries[7]=c07;</div>
-<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; entries[8]=c08; entries[9]=c09; entries[10]=c10; entries[11]=c11;</div>
-<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; entries[12]=c12; entries[13]=c13; entries[14]=c14; entries[15]=c15;</div>
-<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; };</div>
-<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160;</div>
-<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <a class="code" href="class_c_h_s_v_palette16.html">CHSVPalette16</a>( <span class="keyword">const</span> <a class="code" href="class_c_h_s_v_palette16.html">CHSVPalette16</a>&amp; rhs)</div>
-<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; {</div>
-<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; memmove8( &amp;(entries[0]), &amp;(rhs.entries[0]), <span class="keyword">sizeof</span>( entries));</div>
-<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; }</div>
-<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <a class="code" href="class_c_h_s_v_palette16.html">CHSVPalette16</a>&amp; operator=( <span class="keyword">const</span> <a class="code" href="class_c_h_s_v_palette16.html">CHSVPalette16</a>&amp; rhs)</div>
-<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; {</div>
-<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; memmove8( &amp;(entries[0]), &amp;(rhs.entries[0]), <span class="keyword">sizeof</span>( entries));</div>
-<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; }</div>
-<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160;</div>
-<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <a class="code" href="class_c_h_s_v_palette16.html">CHSVPalette16</a>( <span class="keyword">const</span> TProgmemHSVPalette16&amp; rhs)</div>
-<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; {</div>
-<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <span class="keywordflow">for</span>( uint8_t i = 0; i &lt; 16; i++) {</div>
-<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <a class="code" href="struct_c_r_g_b.html">CRGB</a> xyz = FL_PGM_READ_DWORD_NEAR( rhs + i);</div>
-<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; entries[i].hue = xyz.red;</div>
-<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; entries[i].sat = xyz.green;</div>
-<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; entries[i].val = xyz.blue;</div>
-<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; }</div>
-<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; }</div>
-<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <a class="code" href="class_c_h_s_v_palette16.html">CHSVPalette16</a>&amp; operator=( <span class="keyword">const</span> TProgmemHSVPalette16&amp; rhs)</div>
-<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; {</div>
-<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keywordflow">for</span>( uint8_t i = 0; i &lt; 16; i++) {</div>
-<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <a class="code" href="struct_c_r_g_b.html">CRGB</a> xyz = FL_PGM_READ_DWORD_NEAR( rhs + i);</div>
-<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; entries[i].hue = xyz.red;</div>
-<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; entries[i].sat = xyz.green;</div>
-<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; entries[i].val = xyz.blue;</div>
-<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; }</div>
-<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; }</div>
-<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160;</div>
-<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="keyword">inline</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; operator[] (uint8_t x) <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a>((always_inline))</div>
-<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; {</div>
-<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keywordflow">return</span> entries[x];</div>
-<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; }</div>
-<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; operator[] (uint8_t x) <span class="keyword">const</span> <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a>((always_inline))</div>
-<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; {</div>
-<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <span class="keywordflow">return</span> entries[x];</div>
-<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; }</div>
-<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;</div>
-<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="keyword">inline</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; operator[] (<span class="keywordtype">int</span> x) <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a>((always_inline))</div>
-<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; {</div>
-<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="keywordflow">return</span> entries[(uint8_t)x];</div>
-<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; }</div>
-<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; operator[] (<span class="keywordtype">int</span> x) <span class="keyword">const</span> <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a>((always_inline))</div>
-<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; {</div>
-<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keywordflow">return</span> entries[(uint8_t)x];</div>
-<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; }</div>
-<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160;</div>
-<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keyword">operator</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>*()</div>
-<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; {</div>
-<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keywordflow">return</span> &amp;(entries[0]);</div>
-<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; }</div>
-<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160;</div>
-<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <a class="code" href="class_c_h_s_v_palette16.html">CHSVPalette16</a>( <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c1)</div>
-<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; {</div>
-<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <a class="code" href="group___colorutils.html#gac84d8820fd175567ba66413dfb8bc63b">fill_solid</a>( &amp;(entries[0]), 16, c1);</div>
-<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; }</div>
-<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <a class="code" href="class_c_h_s_v_palette16.html">CHSVPalette16</a>( <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c1, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c2)</div>
-<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; {</div>
-<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <a class="code" href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98">fill_gradient</a>( &amp;(entries[0]), 16, c1, c2);</div>
-<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; }</div>
-<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <a class="code" href="class_c_h_s_v_palette16.html">CHSVPalette16</a>( <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c1, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c2, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c3)</div>
-<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; {</div>
-<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <a class="code" href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98">fill_gradient</a>( &amp;(entries[0]), 16, c1, c2, c3);</div>
-<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; }</div>
-<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <a class="code" href="class_c_h_s_v_palette16.html">CHSVPalette16</a>( <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c1, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c2, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c3, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c4)</div>
-<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; {</div>
-<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <a class="code" href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98">fill_gradient</a>( &amp;(entries[0]), 16, c1, c2, c3, c4);</div>
-<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; }</div>
-<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160;</div>
-<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160;};</div>
+<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;<span class="comment">// It&#39;s easier to use than it sounds.</span></div>
+<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160;</div>
+<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;<span class="keyword">class </span><a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>;</div>
+<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;<span class="keyword">class </span><a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>;</div>
+<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;<span class="keyword">class </span><a class="code" href="class_c_h_s_v_palette16.html">CHSVPalette16</a>;</div>
+<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;<span class="keyword">class </span><a class="code" href="class_c_h_s_v_palette256.html">CHSVPalette256</a>;</div>
+<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160;<span class="keyword">typedef</span> uint32_t TProgmemRGBPalette16[16];</div>
+<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160;<span class="keyword">typedef</span> uint32_t TProgmemHSVPalette16[16];</div>
+<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160;<span class="preprocessor">#define TProgmemPalette16 TProgmemRGBPalette16</span></div>
+<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160;</div>
+<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160;<span class="keyword">typedef</span> <span class="keyword">const</span> uint8_t TProgmemRGBGradientPalette_byte ;</div>
+<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160;<span class="keyword">typedef</span> <span class="keyword">const</span> TProgmemRGBGradientPalette_byte *TProgmemRGBGradientPalette_bytes;</div>
+<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;<span class="keyword">typedef</span> TProgmemRGBGradientPalette_bytes TProgmemRGBGradientPalettePtr;</div>
+<div class="line"><a name="l00404"></a><span class="lineno"><a class="line" href="union_t_r_g_b_gradient_palette_entry_union.html"> 404</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">union </span>{</div>
+<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keyword">struct </span>{</div>
+<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; uint8_t index;</div>
+<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; uint8_t r;</div>
+<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; uint8_t g;</div>
+<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; uint8_t b;</div>
+<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; };</div>
+<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; uint32_t dword;</div>
+<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; uint8_t bytes[4];</div>
+<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160;} <a class="code" href="union_t_r_g_b_gradient_palette_entry_union.html">TRGBGradientPaletteEntryUnion</a>;</div>
+<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;</div>
+<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160;<span class="keyword">typedef</span> uint8_t TDynamicRGBGradientPalette_byte ;</div>
+<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160;<span class="keyword">typedef</span> <span class="keyword">const</span> TDynamicRGBGradientPalette_byte *TDynamicRGBGradientPalette_bytes;</div>
+<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;<span class="keyword">typedef</span> TDynamicRGBGradientPalette_bytes TDynamicRGBGradientPalettePtr;</div>
+<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160;</div>
+<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;</div>
+<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160;<span class="comment">// Convert a 16-entry palette to a 256-entry palette</span></div>
+<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160;<span class="keywordtype">void</span> UpscalePalette(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>&amp; srcpal16, <span class="keyword">struct</span> <a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>&amp; destpal256);</div>
+<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;<span class="keywordtype">void</span> UpscalePalette(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="class_c_h_s_v_palette16.html">CHSVPalette16</a>&amp; srcpal16, <span class="keyword">struct</span> <a class="code" href="class_c_h_s_v_palette256.html">CHSVPalette256</a>&amp; destpal256);</div>
+<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160;</div>
+<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160;</div>
+<div class="line"><a name="l00425"></a><span class="lineno"><a class="line" href="class_c_h_s_v_palette16.html"> 425</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_c_h_s_v_palette16.html">CHSVPalette16</a> {</div>
+<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <a class="code" href="struct_c_h_s_v.html">CHSV</a> entries[16];</div>
+<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <a class="code" href="class_c_h_s_v_palette16.html">CHSVPalette16</a>() {};</div>
+<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <a class="code" href="class_c_h_s_v_palette16.html">CHSVPalette16</a>( <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c00,<span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c01,<span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c02,<span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c03,</div>
+<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c04,<span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c05,<span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c06,<span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c07,</div>
+<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c08,<span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c09,<span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c10,<span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c11,</div>
+<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c12,<span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c13,<span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c14,<span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c15 )</div>
+<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; {</div>
+<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; entries[0]=c00; entries[1]=c01; entries[2]=c02; entries[3]=c03;</div>
+<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; entries[4]=c04; entries[5]=c05; entries[6]=c06; entries[7]=c07;</div>
+<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; entries[8]=c08; entries[9]=c09; entries[10]=c10; entries[11]=c11;</div>
+<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; entries[12]=c12; entries[13]=c13; entries[14]=c14; entries[15]=c15;</div>
+<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; };</div>
+<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160;</div>
+<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <a class="code" href="class_c_h_s_v_palette16.html">CHSVPalette16</a>( <span class="keyword">const</span> <a class="code" href="class_c_h_s_v_palette16.html">CHSVPalette16</a>&amp; rhs)</div>
+<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; {</div>
+<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; memmove8( &amp;(entries[0]), &amp;(rhs.entries[0]), <span class="keyword">sizeof</span>( entries));</div>
+<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; }</div>
+<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <a class="code" href="class_c_h_s_v_palette16.html">CHSVPalette16</a>&amp; operator=( <span class="keyword">const</span> <a class="code" href="class_c_h_s_v_palette16.html">CHSVPalette16</a>&amp; rhs)</div>
+<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; {</div>
+<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; memmove8( &amp;(entries[0]), &amp;(rhs.entries[0]), <span class="keyword">sizeof</span>( entries));</div>
+<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
+<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; }</div>
+<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160;</div>
+<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <a class="code" href="class_c_h_s_v_palette16.html">CHSVPalette16</a>( <span class="keyword">const</span> TProgmemHSVPalette16&amp; rhs)</div>
+<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; {</div>
+<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keywordflow">for</span>( uint8_t i = 0; i &lt; 16; i++) {</div>
+<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <a class="code" href="struct_c_r_g_b.html">CRGB</a> xyz = FL_PGM_READ_DWORD_NEAR( rhs + i);</div>
+<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; entries[i].hue = xyz.red;</div>
+<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; entries[i].sat = xyz.green;</div>
+<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; entries[i].val = xyz.blue;</div>
+<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; }</div>
+<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; }</div>
+<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <a class="code" href="class_c_h_s_v_palette16.html">CHSVPalette16</a>&amp; operator=( <span class="keyword">const</span> TProgmemHSVPalette16&amp; rhs)</div>
+<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; {</div>
+<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keywordflow">for</span>( uint8_t i = 0; i &lt; 16; i++) {</div>
+<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <a class="code" href="struct_c_r_g_b.html">CRGB</a> xyz = FL_PGM_READ_DWORD_NEAR( rhs + i);</div>
+<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; entries[i].hue = xyz.red;</div>
+<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; entries[i].sat = xyz.green;</div>
+<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; entries[i].val = xyz.blue;</div>
+<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; }</div>
+<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
+<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; }</div>
+<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160;</div>
+<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keyword">inline</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; operator[] (uint8_t x) <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a>((always_inline))</div>
+<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; {</div>
+<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">return</span> entries[x];</div>
+<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; }</div>
+<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; operator[] (uint8_t x) <span class="keyword">const</span> <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a>((always_inline))</div>
+<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; {</div>
+<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keywordflow">return</span> entries[x];</div>
+<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; }</div>
+<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160;</div>
+<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="keyword">inline</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; operator[] (<span class="keywordtype">int</span> x) <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a>((always_inline))</div>
+<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; {</div>
+<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <span class="keywordflow">return</span> entries[(uint8_t)x];</div>
+<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; }</div>
+<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; operator[] (<span class="keywordtype">int</span> x) <span class="keyword">const</span> <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a>((always_inline))</div>
+<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; {</div>
+<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="keywordflow">return</span> entries[(uint8_t)x];</div>
+<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; }</div>
+<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160;</div>
+<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keyword">operator</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>*()</div>
+<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; {</div>
+<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="keywordflow">return</span> &amp;(entries[0]);</div>
+<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; }</div>
+<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;</div>
+<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <a class="code" href="class_c_h_s_v_palette16.html">CHSVPalette16</a>( <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c1)</div>
+<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; {</div>
+<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <a class="code" href="group___colorutils.html#gac84d8820fd175567ba66413dfb8bc63b">fill_solid</a>( &amp;(entries[0]), 16, c1);</div>
+<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; }</div>
+<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <a class="code" href="class_c_h_s_v_palette16.html">CHSVPalette16</a>( <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c1, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c2)</div>
+<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; {</div>
+<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <a class="code" href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98">fill_gradient</a>( &amp;(entries[0]), 16, c1, c2);</div>
+<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; }</div>
+<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <a class="code" href="class_c_h_s_v_palette16.html">CHSVPalette16</a>( <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c1, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c2, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c3)</div>
+<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; {</div>
+<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <a class="code" href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98">fill_gradient</a>( &amp;(entries[0]), 16, c1, c2, c3);</div>
+<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; }</div>
+<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <a class="code" href="class_c_h_s_v_palette16.html">CHSVPalette16</a>( <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c1, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c2, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c3, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c4)</div>
+<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; {</div>
+<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; <a class="code" href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98">fill_gradient</a>( &amp;(entries[0]), 16, c1, c2, c3, c4);</div>
+<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; }</div>
<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;</div>
-<div class="line"><a name="l00510"></a><span class="lineno"><a class="line" href="class_c_h_s_v_palette256.html"> 510</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_c_h_s_v_palette256.html">CHSVPalette256</a> {</div>
-<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <a class="code" href="struct_c_h_s_v.html">CHSV</a> entries[256];</div>
-<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <a class="code" href="class_c_h_s_v_palette256.html">CHSVPalette256</a>() {};</div>
-<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; <a class="code" href="class_c_h_s_v_palette256.html">CHSVPalette256</a>( <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c00,<span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c01,<span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c02,<span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c03,</div>
-<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c04,<span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c05,<span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c06,<span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c07,</div>
-<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c08,<span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c09,<span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c10,<span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c11,</div>
-<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c12,<span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c13,<span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c14,<span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c15 )</div>
-<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; {</div>
-<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <a class="code" href="class_c_h_s_v_palette16.html">CHSVPalette16</a> p16(c00,c01,c02,c03,c04,c05,c06,c07,</div>
-<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; c08,c09,c10,c11,c12,c13,c14,c15);</div>
-<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; *<span class="keyword">this</span> = p16;</div>
-<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; };</div>
-<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160;</div>
-<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <a class="code" href="class_c_h_s_v_palette256.html">CHSVPalette256</a>( <span class="keyword">const</span> <a class="code" href="class_c_h_s_v_palette256.html">CHSVPalette256</a>&amp; rhs)</div>
-<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; {</div>
-<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; memmove8( &amp;(entries[0]), &amp;(rhs.entries[0]), <span class="keyword">sizeof</span>( entries));</div>
-<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; }</div>
-<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <a class="code" href="class_c_h_s_v_palette256.html">CHSVPalette256</a>&amp; operator=( <span class="keyword">const</span> <a class="code" href="class_c_h_s_v_palette256.html">CHSVPalette256</a>&amp; rhs)</div>
-<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; {</div>
-<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; memmove8( &amp;(entries[0]), &amp;(rhs.entries[0]), <span class="keyword">sizeof</span>( entries));</div>
-<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; }</div>
-<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160;</div>
-<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <a class="code" href="class_c_h_s_v_palette256.html">CHSVPalette256</a>( <span class="keyword">const</span> <a class="code" href="class_c_h_s_v_palette16.html">CHSVPalette16</a>&amp; rhs16)</div>
-<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; {</div>
-<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; UpscalePalette( rhs16, *<span class="keyword">this</span>);</div>
-<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; }</div>
-<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <a class="code" href="class_c_h_s_v_palette256.html">CHSVPalette256</a>&amp; operator=( <span class="keyword">const</span> <a class="code" href="class_c_h_s_v_palette16.html">CHSVPalette16</a>&amp; rhs16)</div>
-<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; {</div>
-<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; UpscalePalette( rhs16, *<span class="keyword">this</span>);</div>
-<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; }</div>
-<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160;</div>
-<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <a class="code" href="class_c_h_s_v_palette256.html">CHSVPalette256</a>( <span class="keyword">const</span> TProgmemRGBPalette16&amp; rhs)</div>
-<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; {</div>
-<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <a class="code" href="class_c_h_s_v_palette16.html">CHSVPalette16</a> p16(rhs);</div>
-<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; *<span class="keyword">this</span> = p16;</div>
-<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; }</div>
-<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <a class="code" href="class_c_h_s_v_palette256.html">CHSVPalette256</a>&amp; operator=( <span class="keyword">const</span> TProgmemRGBPalette16&amp; rhs)</div>
-<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; {</div>
-<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <a class="code" href="class_c_h_s_v_palette16.html">CHSVPalette16</a> p16(rhs);</div>
-<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; *<span class="keyword">this</span> = p16;</div>
-<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; }</div>
-<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160;</div>
-<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="keyword">inline</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; operator[] (uint8_t x) <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a>((always_inline))</div>
-<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; {</div>
-<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <span class="keywordflow">return</span> entries[x];</div>
-<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; }</div>
-<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; operator[] (uint8_t x) <span class="keyword">const</span> <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a>((always_inline))</div>
-<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; {</div>
-<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="keywordflow">return</span> entries[x];</div>
-<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; }</div>
-<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160;</div>
-<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <span class="keyword">inline</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; operator[] (<span class="keywordtype">int</span> x) <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a>((always_inline))</div>
-<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; {</div>
-<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="keywordflow">return</span> entries[(uint8_t)x];</div>
-<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; }</div>
-<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; operator[] (<span class="keywordtype">int</span> x) <span class="keyword">const</span> <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a>((always_inline))</div>
-<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; {</div>
-<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <span class="keywordflow">return</span> entries[(uint8_t)x];</div>
-<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; }</div>
-<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160;</div>
-<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="keyword">operator</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>*()</div>
-<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; {</div>
-<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; <span class="keywordflow">return</span> &amp;(entries[0]);</div>
-<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; }</div>
-<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160;</div>
-<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <a class="code" href="class_c_h_s_v_palette256.html">CHSVPalette256</a>( <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c1)</div>
-<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; {</div>
-<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <a class="code" href="group___colorutils.html#gac84d8820fd175567ba66413dfb8bc63b">fill_solid</a>( &amp;(entries[0]), 256, c1);</div>
-<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; }</div>
-<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <a class="code" href="class_c_h_s_v_palette256.html">CHSVPalette256</a>( <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c1, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c2)</div>
-<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; {</div>
-<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <a class="code" href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98">fill_gradient</a>( &amp;(entries[0]), 256, c1, c2);</div>
-<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; }</div>
-<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; <a class="code" href="class_c_h_s_v_palette256.html">CHSVPalette256</a>( <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c1, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c2, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c3)</div>
-<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; {</div>
-<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <a class="code" href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98">fill_gradient</a>( &amp;(entries[0]), 256, c1, c2, c3);</div>
-<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; }</div>
-<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <a class="code" href="class_c_h_s_v_palette256.html">CHSVPalette256</a>( <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c1, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c2, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c3, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c4)</div>
-<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; {</div>
-<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; <a class="code" href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98">fill_gradient</a>( &amp;(entries[0]), 256, c1, c2, c3, c4);</div>
-<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; }</div>
-<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160;};</div>
-<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160;</div>
-<div class="line"><a name="l00597"></a><span class="lineno"><a class="line" href="class_c_r_g_b_palette16.html"> 597</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a> {</div>
-<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <a class="code" href="struct_c_r_g_b.html">CRGB</a> entries[16];</div>
-<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>() {};</div>
-<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>( <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c00,<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c01,<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c02,<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c03,</div>
-<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c04,<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c05,<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c06,<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c07,</div>
-<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c08,<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c09,<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c10,<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c11,</div>
-<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c12,<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c13,<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c14,<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c15 )</div>
-<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; {</div>
-<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; entries[0]=c00; entries[1]=c01; entries[2]=c02; entries[3]=c03;</div>
-<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; entries[4]=c04; entries[5]=c05; entries[6]=c06; entries[7]=c07;</div>
-<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; entries[8]=c08; entries[9]=c09; entries[10]=c10; entries[11]=c11;</div>
-<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; entries[12]=c12; entries[13]=c13; entries[14]=c14; entries[15]=c15;</div>
-<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; };</div>
-<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160;</div>
-<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>( <span class="keyword">const</span> <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>&amp; rhs)</div>
-<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; {</div>
-<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; memmove8( &amp;(entries[0]), &amp;(rhs.entries[0]), <span class="keyword">sizeof</span>( entries));</div>
-<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; }</div>
-<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>&amp; operator=( <span class="keyword">const</span> <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>&amp; rhs)</div>
-<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; {</div>
-<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; memmove8( &amp;(entries[0]), &amp;(rhs.entries[0]), <span class="keyword">sizeof</span>( entries));</div>
-<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; }</div>
-<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160;</div>
-<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>( <span class="keyword">const</span> <a class="code" href="class_c_h_s_v_palette16.html">CHSVPalette16</a>&amp; rhs)</div>
-<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; {</div>
-<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <span class="keywordflow">for</span>( uint8_t i = 0; i &lt; 16; i++) {</div>
-<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; entries[i] = rhs.entries[i]; <span class="comment">// implicit HSV-to-RGB conversion</span></div>
-<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; }</div>
-<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; }</div>
-<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>&amp; operator=( <span class="keyword">const</span> <a class="code" href="class_c_h_s_v_palette16.html">CHSVPalette16</a>&amp; rhs)</div>
-<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; {</div>
-<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="keywordflow">for</span>( uint8_t i = 0; i &lt; 16; i++) {</div>
-<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; entries[i] = rhs.entries[i]; <span class="comment">// implicit HSV-to-RGB conversion</span></div>
-<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; }</div>
-<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; }</div>
-<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160;</div>
-<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>( <span class="keyword">const</span> TProgmemRGBPalette16&amp; rhs)</div>
-<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; {</div>
-<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="keywordflow">for</span>( uint8_t i = 0; i &lt; 16; i++) {</div>
-<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; entries[i] = FL_PGM_READ_DWORD_NEAR( rhs + i);</div>
-<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; }</div>
-<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; }</div>
-<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>&amp; operator=( <span class="keyword">const</span> TProgmemRGBPalette16&amp; rhs)</div>
-<div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; {</div>
-<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <span class="keywordflow">for</span>( uint8_t i = 0; i &lt; 16; i++) {</div>
-<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; entries[i] = FL_PGM_READ_DWORD_NEAR( rhs + i);</div>
-<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; }</div>
-<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; }</div>
-<div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160;</div>
-<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <span class="keyword">inline</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; operator[] (uint8_t x) <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a>((always_inline))</div>
-<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; {</div>
-<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <span class="keywordflow">return</span> entries[x];</div>
-<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; }</div>
-<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; operator[] (uint8_t x) <span class="keyword">const</span> <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a>((always_inline))</div>
-<div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; {</div>
-<div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <span class="keywordflow">return</span> entries[x];</div>
-<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; }</div>
-<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160;</div>
-<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <span class="keyword">inline</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; operator[] (<span class="keywordtype">int</span> x) <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a>((always_inline))</div>
-<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; {</div>
-<div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="keywordflow">return</span> entries[(uint8_t)x];</div>
-<div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; }</div>
-<div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; operator[] (<span class="keywordtype">int</span> x) <span class="keyword">const</span> <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a>((always_inline))</div>
-<div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; {</div>
-<div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <span class="keywordflow">return</span> entries[(uint8_t)x];</div>
-<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; }</div>
-<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160;</div>
-<div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; <span class="keyword">operator</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>*()</div>
-<div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; {</div>
-<div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; <span class="keywordflow">return</span> &amp;(entries[0]);</div>
-<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; }</div>
-<div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160;</div>
-<div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>( <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c1)</div>
-<div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; {</div>
-<div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <a class="code" href="group___colorutils.html#gac84d8820fd175567ba66413dfb8bc63b">fill_solid</a>( &amp;(entries[0]), 16, c1);</div>
-<div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; }</div>
-<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>( <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c1, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c2)</div>
-<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; {</div>
-<div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; <a class="code" href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98">fill_gradient</a>( &amp;(entries[0]), 16, c1, c2);</div>
-<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; }</div>
-<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>( <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c1, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c2, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c3)</div>
-<div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; {</div>
-<div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; <a class="code" href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98">fill_gradient</a>( &amp;(entries[0]), 16, c1, c2, c3);</div>
-<div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; }</div>
-<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>( <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c1, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c2, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c3, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c4)</div>
-<div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; {</div>
-<div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <a class="code" href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98">fill_gradient</a>( &amp;(entries[0]), 16, c1, c2, c3, c4);</div>
-<div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; }</div>
-<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160;</div>
-<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>( <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c1)</div>
-<div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; {</div>
-<div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <a class="code" href="group___colorutils.html#gac84d8820fd175567ba66413dfb8bc63b">fill_solid</a>( &amp;(entries[0]), 16, c1);</div>
-<div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; }</div>
-<div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>( <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c1, <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c2)</div>
-<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; {</div>
-<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; fill_gradient_RGB( &amp;(entries[0]), 16, c1, c2);</div>
-<div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; }</div>
-<div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>( <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c1, <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c2, <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c3)</div>
-<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; {</div>
-<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; fill_gradient_RGB( &amp;(entries[0]), 16, c1, c2, c3);</div>
-<div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; }</div>
-<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>( <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c1, <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c2, <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c3, <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c4)</div>
-<div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; {</div>
-<div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; fill_gradient_RGB( &amp;(entries[0]), 16, c1, c2, c3, c4);</div>
-<div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; }</div>
-<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160;</div>
-<div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160;</div>
-<div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; <span class="comment">// Gradient palettes are loaded into CRGB16Palettes in such a way</span></div>
-<div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; <span class="comment">// that, if possible, every color represented in the gradient palette</span></div>
-<div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; <span class="comment">// is also represented in the CRGBPalette16.</span></div>
-<div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; <span class="comment">// For example, consider a gradient palette that is all black except</span></div>
-<div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <span class="comment">// for a single, one-element-wide (1/256th!) spike of red in the middle:</span></div>
-<div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <span class="comment">// 0, 0,0,0</span></div>
-<div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; <span class="comment">// 124, 0,0,0</span></div>
-<div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; <span class="comment">// 125, 255,0,0 // one 1/256th-palette-wide red stripe</span></div>
-<div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="comment">// 126, 0,0,0</span></div>
-<div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <span class="comment">// 255, 0,0,0</span></div>
-<div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; <span class="comment">// A naive conversion of this 256-element palette to a 16-element palette</span></div>
-<div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <span class="comment">// might accidentally completely eliminate the red spike, rendering the</span></div>
-<div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; <span class="comment">// palette completely black.</span></div>
-<div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; <span class="comment">// However, the conversions provided here would attempt to include a</span></div>
-<div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; <span class="comment">// the red stripe in the output, more-or-less as faithfully as possible.</span></div>
-<div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; <span class="comment">// So in this case, the resulting CRGBPalette16 palette would have a red</span></div>
-<div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; <span class="comment">// stripe in the middle which was 1/16th of a palette wide -- the</span></div>
-<div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; <span class="comment">// narrowest possible in a CRGBPalette16.</span></div>
-<div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; <span class="comment">// This means that the relative width of stripes in a CRGBPalette16</span></div>
-<div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; <span class="comment">// will be, by definition, different from the widths in the gradient</span></div>
-<div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <span class="comment">// palette. This code attempts to preserve &quot;all the colors&quot;, rather than</span></div>
-<div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; <span class="comment">// the exact stripe widths at the expense of dropping some colors.</span></div>
-<div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>( TProgmemRGBGradientPalette_bytes progpal )</div>
-<div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; {</div>
-<div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; *<span class="keyword">this</span> = progpal;</div>
-<div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; }</div>
-<div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>&amp; operator=( TProgmemRGBGradientPalette_bytes progpal )</div>
-<div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; {</div>
-<div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; <a class="code" href="union_t_r_g_b_gradient_palette_entry_union.html">TRGBGradientPaletteEntryUnion</a>* progent = (<a class="code" href="union_t_r_g_b_gradient_palette_entry_union.html">TRGBGradientPaletteEntryUnion</a>*)(progpal);</div>
-<div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; <a class="code" href="union_t_r_g_b_gradient_palette_entry_union.html">TRGBGradientPaletteEntryUnion</a> u;</div>
-<div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160;</div>
-<div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; <span class="comment">// Count entries</span></div>
-<div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; uint8_t count = 0;</div>
-<div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; <span class="keywordflow">do</span> {</div>
-<div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; u.dword = FL_PGM_READ_DWORD_NEAR(progent + count);</div>
-<div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; count++;;</div>
-<div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; } <span class="keywordflow">while</span> ( u.index != 255);</div>
-<div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160;</div>
-<div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; int8_t lastSlotUsed = -1;</div>
+<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160;};</div>
+<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160;</div>
+<div class="line"><a name="l00512"></a><span class="lineno"><a class="line" href="class_c_h_s_v_palette256.html"> 512</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_c_h_s_v_palette256.html">CHSVPalette256</a> {</div>
+<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; <a class="code" href="struct_c_h_s_v.html">CHSV</a> entries[256];</div>
+<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <a class="code" href="class_c_h_s_v_palette256.html">CHSVPalette256</a>() {};</div>
+<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; <a class="code" href="class_c_h_s_v_palette256.html">CHSVPalette256</a>( <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c00,<span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c01,<span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c02,<span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c03,</div>
+<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c04,<span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c05,<span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c06,<span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c07,</div>
+<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c08,<span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c09,<span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c10,<span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c11,</div>
+<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c12,<span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c13,<span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c14,<span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c15 )</div>
+<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; {</div>
+<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <a class="code" href="class_c_h_s_v_palette16.html">CHSVPalette16</a> p16(c00,c01,c02,c03,c04,c05,c06,c07,</div>
+<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; c08,c09,c10,c11,c12,c13,c14,c15);</div>
+<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; *<span class="keyword">this</span> = p16;</div>
+<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; };</div>
+<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160;</div>
+<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; <a class="code" href="class_c_h_s_v_palette256.html">CHSVPalette256</a>( <span class="keyword">const</span> <a class="code" href="class_c_h_s_v_palette256.html">CHSVPalette256</a>&amp; rhs)</div>
+<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; {</div>
+<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; memmove8( &amp;(entries[0]), &amp;(rhs.entries[0]), <span class="keyword">sizeof</span>( entries));</div>
+<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; }</div>
+<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <a class="code" href="class_c_h_s_v_palette256.html">CHSVPalette256</a>&amp; operator=( <span class="keyword">const</span> <a class="code" href="class_c_h_s_v_palette256.html">CHSVPalette256</a>&amp; rhs)</div>
+<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; {</div>
+<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; memmove8( &amp;(entries[0]), &amp;(rhs.entries[0]), <span class="keyword">sizeof</span>( entries));</div>
+<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
+<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; }</div>
+<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160;</div>
+<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <a class="code" href="class_c_h_s_v_palette256.html">CHSVPalette256</a>( <span class="keyword">const</span> <a class="code" href="class_c_h_s_v_palette16.html">CHSVPalette16</a>&amp; rhs16)</div>
+<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; {</div>
+<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; UpscalePalette( rhs16, *<span class="keyword">this</span>);</div>
+<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; }</div>
+<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <a class="code" href="class_c_h_s_v_palette256.html">CHSVPalette256</a>&amp; operator=( <span class="keyword">const</span> <a class="code" href="class_c_h_s_v_palette16.html">CHSVPalette16</a>&amp; rhs16)</div>
+<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; {</div>
+<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; UpscalePalette( rhs16, *<span class="keyword">this</span>);</div>
+<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
+<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; }</div>
+<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160;</div>
+<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <a class="code" href="class_c_h_s_v_palette256.html">CHSVPalette256</a>( <span class="keyword">const</span> TProgmemRGBPalette16&amp; rhs)</div>
+<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; {</div>
+<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <a class="code" href="class_c_h_s_v_palette16.html">CHSVPalette16</a> p16(rhs);</div>
+<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; *<span class="keyword">this</span> = p16;</div>
+<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; }</div>
+<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <a class="code" href="class_c_h_s_v_palette256.html">CHSVPalette256</a>&amp; operator=( <span class="keyword">const</span> TProgmemRGBPalette16&amp; rhs)</div>
+<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; {</div>
+<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <a class="code" href="class_c_h_s_v_palette16.html">CHSVPalette16</a> p16(rhs);</div>
+<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; *<span class="keyword">this</span> = p16;</div>
+<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
+<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; }</div>
+<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160;</div>
+<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <span class="keyword">inline</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; operator[] (uint8_t x) <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a>((always_inline))</div>
+<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; {</div>
+<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <span class="keywordflow">return</span> entries[x];</div>
+<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; }</div>
+<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; operator[] (uint8_t x) <span class="keyword">const</span> <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a>((always_inline))</div>
+<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; {</div>
+<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <span class="keywordflow">return</span> entries[x];</div>
+<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; }</div>
+<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160;</div>
+<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="keyword">inline</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; operator[] (<span class="keywordtype">int</span> x) <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a>((always_inline))</div>
+<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; {</div>
+<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <span class="keywordflow">return</span> entries[(uint8_t)x];</div>
+<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; }</div>
+<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; operator[] (<span class="keywordtype">int</span> x) <span class="keyword">const</span> <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a>((always_inline))</div>
+<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; {</div>
+<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="keywordflow">return</span> entries[(uint8_t)x];</div>
+<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; }</div>
+<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160;</div>
+<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; <span class="keyword">operator</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>*()</div>
+<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; {</div>
+<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <span class="keywordflow">return</span> &amp;(entries[0]);</div>
+<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; }</div>
+<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160;</div>
+<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <a class="code" href="class_c_h_s_v_palette256.html">CHSVPalette256</a>( <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c1)</div>
+<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; {</div>
+<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <a class="code" href="group___colorutils.html#gac84d8820fd175567ba66413dfb8bc63b">fill_solid</a>( &amp;(entries[0]), 256, c1);</div>
+<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; }</div>
+<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <a class="code" href="class_c_h_s_v_palette256.html">CHSVPalette256</a>( <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c1, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c2)</div>
+<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; {</div>
+<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; <a class="code" href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98">fill_gradient</a>( &amp;(entries[0]), 256, c1, c2);</div>
+<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; }</div>
+<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <a class="code" href="class_c_h_s_v_palette256.html">CHSVPalette256</a>( <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c1, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c2, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c3)</div>
+<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; {</div>
+<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <a class="code" href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98">fill_gradient</a>( &amp;(entries[0]), 256, c1, c2, c3);</div>
+<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; }</div>
+<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; <a class="code" href="class_c_h_s_v_palette256.html">CHSVPalette256</a>( <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c1, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c2, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c3, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c4)</div>
+<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; {</div>
+<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <a class="code" href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98">fill_gradient</a>( &amp;(entries[0]), 256, c1, c2, c3, c4);</div>
+<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; }</div>
+<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160;};</div>
+<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160;</div>
+<div class="line"><a name="l00599"></a><span class="lineno"><a class="line" href="class_c_r_g_b_palette16.html"> 599</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a> {</div>
+<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <a class="code" href="struct_c_r_g_b.html">CRGB</a> entries[16];</div>
+<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>() {};</div>
+<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>( <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c00,<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c01,<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c02,<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c03,</div>
+<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c04,<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c05,<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c06,<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c07,</div>
+<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c08,<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c09,<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c10,<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c11,</div>
+<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c12,<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c13,<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c14,<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c15 )</div>
+<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; {</div>
+<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; entries[0]=c00; entries[1]=c01; entries[2]=c02; entries[3]=c03;</div>
+<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; entries[4]=c04; entries[5]=c05; entries[6]=c06; entries[7]=c07;</div>
+<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; entries[8]=c08; entries[9]=c09; entries[10]=c10; entries[11]=c11;</div>
+<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; entries[12]=c12; entries[13]=c13; entries[14]=c14; entries[15]=c15;</div>
+<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; };</div>
+<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160;</div>
+<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>( <span class="keyword">const</span> <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>&amp; rhs)</div>
+<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; {</div>
+<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; memmove8( &amp;(entries[0]), &amp;(rhs.entries[0]), <span class="keyword">sizeof</span>( entries));</div>
+<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; }</div>
+<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>&amp; operator=( <span class="keyword">const</span> <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>&amp; rhs)</div>
+<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; {</div>
+<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; memmove8( &amp;(entries[0]), &amp;(rhs.entries[0]), <span class="keyword">sizeof</span>( entries));</div>
+<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
+<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; }</div>
+<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160;</div>
+<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>( <span class="keyword">const</span> <a class="code" href="class_c_h_s_v_palette16.html">CHSVPalette16</a>&amp; rhs)</div>
+<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; {</div>
+<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; <span class="keywordflow">for</span>( uint8_t i = 0; i &lt; 16; i++) {</div>
+<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; entries[i] = rhs.entries[i]; <span class="comment">// implicit HSV-to-RGB conversion</span></div>
+<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; }</div>
+<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; }</div>
+<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>&amp; operator=( <span class="keyword">const</span> <a class="code" href="class_c_h_s_v_palette16.html">CHSVPalette16</a>&amp; rhs)</div>
+<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; {</div>
+<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <span class="keywordflow">for</span>( uint8_t i = 0; i &lt; 16; i++) {</div>
+<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; entries[i] = rhs.entries[i]; <span class="comment">// implicit HSV-to-RGB conversion</span></div>
+<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; }</div>
+<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
+<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; }</div>
+<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160;</div>
+<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>( <span class="keyword">const</span> TProgmemRGBPalette16&amp; rhs)</div>
+<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; {</div>
+<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <span class="keywordflow">for</span>( uint8_t i = 0; i &lt; 16; i++) {</div>
+<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; entries[i] = FL_PGM_READ_DWORD_NEAR( rhs + i);</div>
+<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; }</div>
+<div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; }</div>
+<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>&amp; operator=( <span class="keyword">const</span> TProgmemRGBPalette16&amp; rhs)</div>
+<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; {</div>
+<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <span class="keywordflow">for</span>( uint8_t i = 0; i &lt; 16; i++) {</div>
+<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; entries[i] = FL_PGM_READ_DWORD_NEAR( rhs + i);</div>
+<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; }</div>
+<div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
+<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; }</div>
+<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160;</div>
+<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <span class="keyword">inline</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; operator[] (uint8_t x) <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a>((always_inline))</div>
+<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; {</div>
+<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <span class="keywordflow">return</span> entries[x];</div>
+<div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; }</div>
+<div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; operator[] (uint8_t x) <span class="keyword">const</span> <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a>((always_inline))</div>
+<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; {</div>
+<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <span class="keywordflow">return</span> entries[x];</div>
+<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; }</div>
+<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160;</div>
+<div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="keyword">inline</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; operator[] (<span class="keywordtype">int</span> x) <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a>((always_inline))</div>
+<div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; {</div>
+<div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keywordflow">return</span> entries[(uint8_t)x];</div>
+<div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; }</div>
+<div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; operator[] (<span class="keywordtype">int</span> x) <span class="keyword">const</span> <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a>((always_inline))</div>
+<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; {</div>
+<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <span class="keywordflow">return</span> entries[(uint8_t)x];</div>
+<div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; }</div>
+<div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160;</div>
+<div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; <span class="keyword">operator</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>*()</div>
+<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; {</div>
+<div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; <span class="keywordflow">return</span> &amp;(entries[0]);</div>
+<div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; }</div>
+<div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160;</div>
+<div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>( <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c1)</div>
+<div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; {</div>
+<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <a class="code" href="group___colorutils.html#gac84d8820fd175567ba66413dfb8bc63b">fill_solid</a>( &amp;(entries[0]), 16, c1);</div>
+<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; }</div>
+<div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>( <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c1, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c2)</div>
+<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; {</div>
+<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; <a class="code" href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98">fill_gradient</a>( &amp;(entries[0]), 16, c1, c2);</div>
+<div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; }</div>
+<div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>( <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c1, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c2, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c3)</div>
+<div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; {</div>
+<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; <a class="code" href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98">fill_gradient</a>( &amp;(entries[0]), 16, c1, c2, c3);</div>
+<div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; }</div>
+<div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>( <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c1, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c2, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c3, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c4)</div>
+<div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; {</div>
+<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; <a class="code" href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98">fill_gradient</a>( &amp;(entries[0]), 16, c1, c2, c3, c4);</div>
+<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; }</div>
+<div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160;</div>
+<div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>( <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c1)</div>
+<div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; {</div>
+<div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; <a class="code" href="group___colorutils.html#gac84d8820fd175567ba66413dfb8bc63b">fill_solid</a>( &amp;(entries[0]), 16, c1);</div>
+<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; }</div>
+<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>( <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c1, <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c2)</div>
+<div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; {</div>
+<div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; fill_gradient_RGB( &amp;(entries[0]), 16, c1, c2);</div>
+<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; }</div>
+<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>( <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c1, <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c2, <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c3)</div>
+<div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; {</div>
+<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; fill_gradient_RGB( &amp;(entries[0]), 16, c1, c2, c3);</div>
+<div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; }</div>
+<div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>( <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c1, <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c2, <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c3, <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c4)</div>
+<div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; {</div>
+<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; fill_gradient_RGB( &amp;(entries[0]), 16, c1, c2, c3, c4);</div>
+<div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; }</div>
+<div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160;</div>
+<div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160;</div>
+<div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; <span class="comment">// Gradient palettes are loaded into CRGB16Palettes in such a way</span></div>
+<div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; <span class="comment">// that, if possible, every color represented in the gradient palette</span></div>
+<div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <span class="comment">// is also represented in the CRGBPalette16.</span></div>
+<div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <span class="comment">// For example, consider a gradient palette that is all black except</span></div>
+<div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; <span class="comment">// for a single, one-element-wide (1/256th!) spike of red in the middle:</span></div>
+<div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; <span class="comment">// 0, 0,0,0</span></div>
+<div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="comment">// 124, 0,0,0</span></div>
+<div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <span class="comment">// 125, 255,0,0 // one 1/256th-palette-wide red stripe</span></div>
+<div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; <span class="comment">// 126, 0,0,0</span></div>
+<div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <span class="comment">// 255, 0,0,0</span></div>
+<div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; <span class="comment">// A naive conversion of this 256-element palette to a 16-element palette</span></div>
+<div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; <span class="comment">// might accidentally completely eliminate the red spike, rendering the</span></div>
+<div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; <span class="comment">// palette completely black.</span></div>
+<div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; <span class="comment">// However, the conversions provided here would attempt to include a</span></div>
+<div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; <span class="comment">// the red stripe in the output, more-or-less as faithfully as possible.</span></div>
+<div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; <span class="comment">// So in this case, the resulting CRGBPalette16 palette would have a red</span></div>
+<div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; <span class="comment">// stripe in the middle which was 1/16th of a palette wide -- the</span></div>
+<div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; <span class="comment">// narrowest possible in a CRGBPalette16.</span></div>
+<div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <span class="comment">// This means that the relative width of stripes in a CRGBPalette16</span></div>
+<div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; <span class="comment">// will be, by definition, different from the widths in the gradient</span></div>
+<div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; <span class="comment">// palette. This code attempts to preserve &quot;all the colors&quot;, rather than</span></div>
+<div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; <span class="comment">// the exact stripe widths at the expense of dropping some colors.</span></div>
+<div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>( TProgmemRGBGradientPalette_bytes progpal )</div>
+<div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; {</div>
+<div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; *<span class="keyword">this</span> = progpal;</div>
+<div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; }</div>
+<div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>&amp; operator=( TProgmemRGBGradientPalette_bytes progpal )</div>
+<div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; {</div>
+<div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; <a class="code" href="union_t_r_g_b_gradient_palette_entry_union.html">TRGBGradientPaletteEntryUnion</a>* progent = (<a class="code" href="union_t_r_g_b_gradient_palette_entry_union.html">TRGBGradientPaletteEntryUnion</a>*)(progpal);</div>
+<div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; <a class="code" href="union_t_r_g_b_gradient_palette_entry_union.html">TRGBGradientPaletteEntryUnion</a> u;</div>
+<div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160;</div>
+<div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; <span class="comment">// Count entries</span></div>
+<div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; uint8_t count = 0;</div>
+<div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; u.dword = FL_PGM_READ_DWORD_NEAR(progent + count);</div>
+<div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; count++;;</div>
+<div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; } <span class="keywordflow">while</span> ( u.index != 255);</div>
<div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160;</div>
-<div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; u.dword = FL_PGM_READ_DWORD_NEAR( progent);</div>
-<div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; <a class="code" href="struct_c_r_g_b.html">CRGB</a> rgbstart( u.r, u.g, u.b);</div>
-<div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160;</div>
-<div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; <span class="keywordtype">int</span> indexstart = 0;</div>
-<div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; uint8_t istart8 = 0;</div>
-<div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; uint8_t iend8 = 0;</div>
-<div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; <span class="keywordflow">while</span>( indexstart &lt; 255) {</div>
-<div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; progent++;</div>
-<div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; u.dword = FL_PGM_READ_DWORD_NEAR( progent);</div>
-<div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; <span class="keywordtype">int</span> indexend = u.index;</div>
-<div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; <a class="code" href="struct_c_r_g_b.html">CRGB</a> rgbend( u.r, u.g, u.b);</div>
-<div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; istart8 = indexstart / 16;</div>
-<div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; iend8 = indexend / 16;</div>
-<div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; <span class="keywordflow">if</span>( count &lt; 16) {</div>
-<div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; <span class="keywordflow">if</span>( (istart8 &lt;= lastSlotUsed) &amp;&amp; (lastSlotUsed &lt; 15)) {</div>
-<div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; istart8 = lastSlotUsed + 1;</div>
-<div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; <span class="keywordflow">if</span>( iend8 &lt; istart8) {</div>
-<div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; iend8 = istart8;</div>
-<div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; }</div>
-<div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; }</div>
-<div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; lastSlotUsed = iend8;</div>
-<div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; }</div>
-<div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; fill_gradient_RGB( &amp;(entries[0]), istart8, rgbstart, iend8, rgbend);</div>
-<div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; indexstart = indexend;</div>
-<div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; rgbstart = rgbend;</div>
-<div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; }</div>
-<div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; }</div>
-<div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>&amp; loadDynamicGradientPalette( TDynamicRGBGradientPalette_bytes gpal )</div>
-<div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; {</div>
-<div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; <a class="code" href="union_t_r_g_b_gradient_palette_entry_union.html">TRGBGradientPaletteEntryUnion</a>* ent = (<a class="code" href="union_t_r_g_b_gradient_palette_entry_union.html">TRGBGradientPaletteEntryUnion</a>*)(gpal);</div>
-<div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <a class="code" href="union_t_r_g_b_gradient_palette_entry_union.html">TRGBGradientPaletteEntryUnion</a> u;</div>
-<div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160;</div>
-<div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; <span class="comment">// Count entries</span></div>
-<div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; uint8_t count = 0;</div>
-<div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; <span class="keywordflow">do</span> {</div>
-<div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; u = *(ent + count);</div>
-<div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; count++;;</div>
-<div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; } <span class="keywordflow">while</span> ( u.index != 255);</div>
-<div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160;</div>
-<div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; int8_t lastSlotUsed = -1;</div>
+<div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; int8_t lastSlotUsed = -1;</div>
+<div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160;</div>
+<div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; u.dword = FL_PGM_READ_DWORD_NEAR( progent);</div>
+<div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; <a class="code" href="struct_c_r_g_b.html">CRGB</a> rgbstart( u.r, u.g, u.b);</div>
+<div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160;</div>
+<div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; <span class="keywordtype">int</span> indexstart = 0;</div>
+<div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; uint8_t istart8 = 0;</div>
+<div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; uint8_t iend8 = 0;</div>
+<div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; <span class="keywordflow">while</span>( indexstart &lt; 255) {</div>
+<div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; progent++;</div>
+<div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; u.dword = FL_PGM_READ_DWORD_NEAR( progent);</div>
+<div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; <span class="keywordtype">int</span> indexend = u.index;</div>
+<div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; <a class="code" href="struct_c_r_g_b.html">CRGB</a> rgbend( u.r, u.g, u.b);</div>
+<div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; istart8 = indexstart / 16;</div>
+<div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; iend8 = indexend / 16;</div>
+<div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; <span class="keywordflow">if</span>( count &lt; 16) {</div>
+<div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; <span class="keywordflow">if</span>( (istart8 &lt;= lastSlotUsed) &amp;&amp; (lastSlotUsed &lt; 15)) {</div>
+<div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; istart8 = lastSlotUsed + 1;</div>
+<div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; <span class="keywordflow">if</span>( iend8 &lt; istart8) {</div>
+<div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; iend8 = istart8;</div>
+<div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; }</div>
+<div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; }</div>
+<div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; lastSlotUsed = iend8;</div>
+<div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; }</div>
+<div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; fill_gradient_RGB( &amp;(entries[0]), istart8, rgbstart, iend8, rgbend);</div>
+<div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; indexstart = indexend;</div>
+<div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; rgbstart = rgbend;</div>
+<div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; }</div>
+<div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
+<div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; }</div>
+<div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>&amp; loadDynamicGradientPalette( TDynamicRGBGradientPalette_bytes gpal )</div>
+<div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; {</div>
+<div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; <a class="code" href="union_t_r_g_b_gradient_palette_entry_union.html">TRGBGradientPaletteEntryUnion</a>* ent = (<a class="code" href="union_t_r_g_b_gradient_palette_entry_union.html">TRGBGradientPaletteEntryUnion</a>*)(gpal);</div>
+<div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; <a class="code" href="union_t_r_g_b_gradient_palette_entry_union.html">TRGBGradientPaletteEntryUnion</a> u;</div>
+<div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160;</div>
+<div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; <span class="comment">// Count entries</span></div>
+<div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; uint8_t count = 0;</div>
+<div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; u = *(ent + count);</div>
+<div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; count++;;</div>
+<div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; } <span class="keywordflow">while</span> ( u.index != 255);</div>
<div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160;</div>
-<div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160;</div>
-<div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; u = *ent;</div>
-<div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; <a class="code" href="struct_c_r_g_b.html">CRGB</a> rgbstart( u.r, u.g, u.b);</div>
-<div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160;</div>
-<div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; <span class="keywordtype">int</span> indexstart = 0;</div>
-<div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; uint8_t istart8 = 0;</div>
-<div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; uint8_t iend8 = 0;</div>
-<div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; <span class="keywordflow">while</span>( indexstart &lt; 255) {</div>
-<div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; ent++;</div>
-<div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; u = *ent;</div>
-<div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; <span class="keywordtype">int</span> indexend = u.index;</div>
-<div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; <a class="code" href="struct_c_r_g_b.html">CRGB</a> rgbend( u.r, u.g, u.b);</div>
-<div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; istart8 = indexstart / 16;</div>
-<div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; iend8 = indexend / 16;</div>
-<div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; <span class="keywordflow">if</span>( count &lt; 16) {</div>
-<div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; <span class="keywordflow">if</span>( (istart8 &lt;= lastSlotUsed) &amp;&amp; (lastSlotUsed &lt; 15)) {</div>
-<div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; istart8 = lastSlotUsed + 1;</div>
-<div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; <span class="keywordflow">if</span>( iend8 &lt; istart8) {</div>
-<div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; iend8 = istart8;</div>
-<div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; }</div>
-<div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; }</div>
-<div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; lastSlotUsed = iend8;</div>
-<div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; }</div>
-<div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; fill_gradient_RGB( &amp;(entries[0]), istart8, rgbstart, iend8, rgbend);</div>
-<div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; indexstart = indexend;</div>
-<div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; rgbstart = rgbend;</div>
-<div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; }</div>
-<div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; }</div>
-<div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160;</div>
-<div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160;};</div>
+<div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; int8_t lastSlotUsed = -1;</div>
+<div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160;</div>
+<div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160;</div>
+<div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; u = *ent;</div>
+<div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; <a class="code" href="struct_c_r_g_b.html">CRGB</a> rgbstart( u.r, u.g, u.b);</div>
+<div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160;</div>
+<div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; <span class="keywordtype">int</span> indexstart = 0;</div>
+<div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; uint8_t istart8 = 0;</div>
+<div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; uint8_t iend8 = 0;</div>
+<div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; <span class="keywordflow">while</span>( indexstart &lt; 255) {</div>
+<div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; ent++;</div>
+<div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; u = *ent;</div>
+<div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; <span class="keywordtype">int</span> indexend = u.index;</div>
+<div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; <a class="code" href="struct_c_r_g_b.html">CRGB</a> rgbend( u.r, u.g, u.b);</div>
+<div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; istart8 = indexstart / 16;</div>
+<div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; iend8 = indexend / 16;</div>
+<div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; <span class="keywordflow">if</span>( count &lt; 16) {</div>
+<div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; <span class="keywordflow">if</span>( (istart8 &lt;= lastSlotUsed) &amp;&amp; (lastSlotUsed &lt; 15)) {</div>
+<div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; istart8 = lastSlotUsed + 1;</div>
+<div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; <span class="keywordflow">if</span>( iend8 &lt; istart8) {</div>
+<div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; iend8 = istart8;</div>
+<div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; }</div>
+<div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; }</div>
+<div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; lastSlotUsed = iend8;</div>
+<div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; }</div>
+<div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; fill_gradient_RGB( &amp;(entries[0]), istart8, rgbstart, iend8, rgbend);</div>
+<div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; indexstart = indexend;</div>
+<div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; rgbstart = rgbend;</div>
+<div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; }</div>
+<div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
+<div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; }</div>
<div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160;</div>
-<div class="line"><a name="l00822"></a><span class="lineno"><a class="line" href="class_c_r_g_b_palette256.html"> 822</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a> {</div>
-<div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; <a class="code" href="struct_c_r_g_b.html">CRGB</a> entries[256];</div>
-<div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; <a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>() {};</div>
-<div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; <a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>( <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c00,<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c01,<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c02,<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c03,</div>
-<div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c04,<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c05,<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c06,<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c07,</div>
-<div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c08,<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c09,<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c10,<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c11,</div>
-<div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c12,<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c13,<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c14,<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c15 )</div>
-<div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; {</div>
-<div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a> p16(c00,c01,c02,c03,c04,c05,c06,c07,</div>
-<div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; c08,c09,c10,c11,c12,c13,c14,c15);</div>
-<div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; *<span class="keyword">this</span> = p16;</div>
-<div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; };</div>
-<div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160;</div>
-<div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; <a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>( <span class="keyword">const</span> <a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>&amp; rhs)</div>
-<div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; {</div>
-<div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; memmove8( &amp;(entries[0]), &amp;(rhs.entries[0]), <span class="keyword">sizeof</span>( entries));</div>
-<div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; }</div>
-<div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; <a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>&amp; operator=( <span class="keyword">const</span> <a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>&amp; rhs)</div>
-<div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; {</div>
-<div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; memmove8( &amp;(entries[0]), &amp;(rhs.entries[0]), <span class="keyword">sizeof</span>( entries));</div>
-<div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; }</div>
-<div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160;</div>
-<div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; <a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>( <span class="keyword">const</span> <a class="code" href="class_c_h_s_v_palette256.html">CHSVPalette256</a>&amp; rhs)</div>
-<div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; {</div>
-<div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; <span class="keywordflow">for</span>( <span class="keywordtype">int</span> i = 0; i &lt; 256; i++) {</div>
-<div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; entries[i] = rhs.entries[i]; <span class="comment">// implicit HSV-to-RGB conversion</span></div>
-<div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; }</div>
-<div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; }</div>
-<div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; <a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>&amp; operator=( <span class="keyword">const</span> <a class="code" href="class_c_h_s_v_palette256.html">CHSVPalette256</a>&amp; rhs)</div>
-<div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; {</div>
-<div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; <span class="keywordflow">for</span>( <span class="keywordtype">int</span> i = 0; i &lt; 256; i++) {</div>
-<div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; entries[i] = rhs.entries[i]; <span class="comment">// implicit HSV-to-RGB conversion</span></div>
-<div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; }</div>
-<div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; }</div>
-<div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160;</div>
-<div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; <a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>( <span class="keyword">const</span> <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>&amp; rhs16)</div>
-<div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; {</div>
-<div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; UpscalePalette( rhs16, *<span class="keyword">this</span>);</div>
-<div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; }</div>
-<div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; <a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>&amp; operator=( <span class="keyword">const</span> <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>&amp; rhs16)</div>
-<div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; {</div>
-<div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; UpscalePalette( rhs16, *<span class="keyword">this</span>);</div>
-<div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; }</div>
-<div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160;</div>
-<div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; <a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>( <span class="keyword">const</span> TProgmemRGBPalette16&amp; rhs)</div>
-<div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; {</div>
-<div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a> p16(rhs);</div>
-<div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; *<span class="keyword">this</span> = p16;</div>
-<div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; }</div>
-<div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; <a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>&amp; operator=( <span class="keyword">const</span> TProgmemRGBPalette16&amp; rhs)</div>
-<div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; {</div>
-<div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a> p16(rhs);</div>
-<div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; *<span class="keyword">this</span> = p16;</div>
-<div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; }</div>
-<div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160;</div>
-<div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; <span class="keyword">inline</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; operator[] (uint8_t x) <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a>((always_inline))</div>
-<div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; {</div>
-<div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; <span class="keywordflow">return</span> entries[x];</div>
-<div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; }</div>
-<div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; operator[] (uint8_t x) <span class="keyword">const</span> <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a>((always_inline))</div>
-<div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; {</div>
-<div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; <span class="keywordflow">return</span> entries[x];</div>
-<div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; }</div>
-<div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160;</div>
-<div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; <span class="keyword">inline</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; operator[] (<span class="keywordtype">int</span> x) <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a>((always_inline))</div>
-<div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; {</div>
-<div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; <span class="keywordflow">return</span> entries[(uint8_t)x];</div>
-<div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; }</div>
-<div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; operator[] (<span class="keywordtype">int</span> x) <span class="keyword">const</span> <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a>((always_inline))</div>
-<div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; {</div>
-<div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; <span class="keywordflow">return</span> entries[(uint8_t)x];</div>
-<div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; }</div>
-<div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160;</div>
-<div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; <span class="keyword">operator</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>*()</div>
-<div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; {</div>
-<div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; <span class="keywordflow">return</span> &amp;(entries[0]);</div>
-<div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; }</div>
-<div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160;</div>
-<div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; <a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>( <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c1)</div>
-<div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; {</div>
-<div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; <a class="code" href="group___colorutils.html#gac84d8820fd175567ba66413dfb8bc63b">fill_solid</a>( &amp;(entries[0]), 256, c1);</div>
-<div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; }</div>
-<div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; <a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>( <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c1, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c2)</div>
-<div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; {</div>
-<div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; <a class="code" href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98">fill_gradient</a>( &amp;(entries[0]), 256, c1, c2);</div>
-<div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; }</div>
-<div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; <a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>( <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c1, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c2, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c3)</div>
-<div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; {</div>
-<div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; <a class="code" href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98">fill_gradient</a>( &amp;(entries[0]), 256, c1, c2, c3);</div>
-<div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; }</div>
-<div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; <a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>( <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c1, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c2, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c3, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c4)</div>
-<div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; {</div>
-<div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; <a class="code" href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98">fill_gradient</a>( &amp;(entries[0]), 256, c1, c2, c3, c4);</div>
-<div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; }</div>
-<div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160;</div>
-<div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; <a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>( <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c1)</div>
-<div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; {</div>
-<div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; <a class="code" href="group___colorutils.html#gac84d8820fd175567ba66413dfb8bc63b">fill_solid</a>( &amp;(entries[0]), 256, c1);</div>
-<div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; }</div>
-<div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; <a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>( <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c1, <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c2)</div>
-<div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; {</div>
-<div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; fill_gradient_RGB( &amp;(entries[0]), 256, c1, c2);</div>
-<div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; }</div>
-<div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; <a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>( <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c1, <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c2, <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c3)</div>
-<div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; {</div>
-<div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; fill_gradient_RGB( &amp;(entries[0]), 256, c1, c2, c3);</div>
-<div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; }</div>
-<div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; <a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>( <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c1, <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c2, <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c3, <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c4)</div>
-<div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; {</div>
-<div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; fill_gradient_RGB( &amp;(entries[0]), 256, c1, c2, c3, c4);</div>
-<div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; }</div>
-<div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160;</div>
-<div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; <a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>( TProgmemRGBGradientPalette_bytes progpal )</div>
-<div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; {</div>
-<div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; *<span class="keyword">this</span> = progpal;</div>
-<div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; }</div>
-<div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; <a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>&amp; operator=( TProgmemRGBGradientPalette_bytes progpal )</div>
-<div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; {</div>
-<div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; <a class="code" href="union_t_r_g_b_gradient_palette_entry_union.html">TRGBGradientPaletteEntryUnion</a>* progent = (<a class="code" href="union_t_r_g_b_gradient_palette_entry_union.html">TRGBGradientPaletteEntryUnion</a>*)(progpal);</div>
-<div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; <a class="code" href="union_t_r_g_b_gradient_palette_entry_union.html">TRGBGradientPaletteEntryUnion</a> u;</div>
-<div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; u.dword = FL_PGM_READ_DWORD_NEAR( progent);</div>
-<div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; <a class="code" href="struct_c_r_g_b.html">CRGB</a> rgbstart( u.r, u.g, u.b);</div>
-<div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160;</div>
-<div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; <span class="keywordtype">int</span> indexstart = 0;</div>
-<div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; <span class="keywordflow">while</span>( indexstart &lt; 255) {</div>
-<div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; progent++;</div>
-<div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; u.dword = FL_PGM_READ_DWORD_NEAR( progent);</div>
-<div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; <span class="keywordtype">int</span> indexend = u.index;</div>
-<div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; <a class="code" href="struct_c_r_g_b.html">CRGB</a> rgbend( u.r, u.g, u.b);</div>
-<div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; fill_gradient_RGB( &amp;(entries[0]), indexstart, rgbstart, indexend, rgbend);</div>
-<div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; indexstart = indexend;</div>
-<div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; rgbstart = rgbend;</div>
-<div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; }</div>
-<div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; }</div>
-<div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; <a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>&amp; loadDynamicGradientPalette( TDynamicRGBGradientPalette_bytes gpal )</div>
-<div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; {</div>
-<div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; <a class="code" href="union_t_r_g_b_gradient_palette_entry_union.html">TRGBGradientPaletteEntryUnion</a>* ent = (<a class="code" href="union_t_r_g_b_gradient_palette_entry_union.html">TRGBGradientPaletteEntryUnion</a>*)(gpal);</div>
-<div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; <a class="code" href="union_t_r_g_b_gradient_palette_entry_union.html">TRGBGradientPaletteEntryUnion</a> u;</div>
-<div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; u = *ent;</div>
-<div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; <a class="code" href="struct_c_r_g_b.html">CRGB</a> rgbstart( u.r, u.g, u.b);</div>
-<div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160;</div>
-<div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; <span class="keywordtype">int</span> indexstart = 0;</div>
-<div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; <span class="keywordflow">while</span>( indexstart &lt; 255) {</div>
-<div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; ent++;</div>
-<div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; u = *ent;</div>
-<div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; <span class="keywordtype">int</span> indexend = u.index;</div>
-<div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; <a class="code" href="struct_c_r_g_b.html">CRGB</a> rgbend( u.r, u.g, u.b);</div>
-<div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; fill_gradient_RGB( &amp;(entries[0]), indexstart, rgbstart, indexend, rgbend);</div>
-<div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; indexstart = indexend;</div>
-<div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; rgbstart = rgbend;</div>
-<div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; }</div>
-<div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; }</div>
-<div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160;};</div>
-<div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160;</div>
-<div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160;</div>
+<div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160;};</div>
+<div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160;</div>
+<div class="line"><a name="l00824"></a><span class="lineno"><a class="line" href="class_c_r_g_b_palette256.html"> 824</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a> {</div>
+<div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; <a class="code" href="struct_c_r_g_b.html">CRGB</a> entries[256];</div>
+<div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; <a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>() {};</div>
+<div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; <a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>( <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c00,<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c01,<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c02,<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c03,</div>
+<div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c04,<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c05,<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c06,<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c07,</div>
+<div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c08,<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c09,<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c10,<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c11,</div>
+<div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c12,<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c13,<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c14,<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c15 )</div>
+<div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; {</div>
+<div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a> p16(c00,c01,c02,c03,c04,c05,c06,c07,</div>
+<div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; c08,c09,c10,c11,c12,c13,c14,c15);</div>
+<div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; *<span class="keyword">this</span> = p16;</div>
+<div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; };</div>
+<div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160;</div>
+<div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; <a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>( <span class="keyword">const</span> <a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>&amp; rhs)</div>
+<div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; {</div>
+<div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; memmove8( &amp;(entries[0]), &amp;(rhs.entries[0]), <span class="keyword">sizeof</span>( entries));</div>
+<div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; }</div>
+<div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; <a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>&amp; operator=( <span class="keyword">const</span> <a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>&amp; rhs)</div>
+<div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; {</div>
+<div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; memmove8( &amp;(entries[0]), &amp;(rhs.entries[0]), <span class="keyword">sizeof</span>( entries));</div>
+<div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
+<div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; }</div>
+<div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160;</div>
+<div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; <a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>( <span class="keyword">const</span> <a class="code" href="class_c_h_s_v_palette256.html">CHSVPalette256</a>&amp; rhs)</div>
+<div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; {</div>
+<div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; <span class="keywordflow">for</span>( <span class="keywordtype">int</span> i = 0; i &lt; 256; i++) {</div>
+<div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; entries[i] = rhs.entries[i]; <span class="comment">// implicit HSV-to-RGB conversion</span></div>
+<div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; }</div>
+<div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; }</div>
+<div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; <a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>&amp; operator=( <span class="keyword">const</span> <a class="code" href="class_c_h_s_v_palette256.html">CHSVPalette256</a>&amp; rhs)</div>
+<div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; {</div>
+<div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; <span class="keywordflow">for</span>( <span class="keywordtype">int</span> i = 0; i &lt; 256; i++) {</div>
+<div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; entries[i] = rhs.entries[i]; <span class="comment">// implicit HSV-to-RGB conversion</span></div>
+<div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; }</div>
+<div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
+<div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; }</div>
+<div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160;</div>
+<div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; <a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>( <span class="keyword">const</span> <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>&amp; rhs16)</div>
+<div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; {</div>
+<div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; UpscalePalette( rhs16, *<span class="keyword">this</span>);</div>
+<div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; }</div>
+<div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; <a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>&amp; operator=( <span class="keyword">const</span> <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>&amp; rhs16)</div>
+<div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; {</div>
+<div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; UpscalePalette( rhs16, *<span class="keyword">this</span>);</div>
+<div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
+<div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; }</div>
+<div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160;</div>
+<div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; <a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>( <span class="keyword">const</span> TProgmemRGBPalette16&amp; rhs)</div>
+<div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; {</div>
+<div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a> p16(rhs);</div>
+<div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; *<span class="keyword">this</span> = p16;</div>
+<div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; }</div>
+<div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; <a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>&amp; operator=( <span class="keyword">const</span> TProgmemRGBPalette16&amp; rhs)</div>
+<div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; {</div>
+<div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a> p16(rhs);</div>
+<div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; *<span class="keyword">this</span> = p16;</div>
+<div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
+<div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; }</div>
+<div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160;</div>
+<div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; <span class="keyword">inline</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; operator[] (uint8_t x) <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a>((always_inline))</div>
+<div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; {</div>
+<div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; <span class="keywordflow">return</span> entries[x];</div>
+<div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; }</div>
+<div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; operator[] (uint8_t x) <span class="keyword">const</span> <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a>((always_inline))</div>
+<div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; {</div>
+<div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; <span class="keywordflow">return</span> entries[x];</div>
+<div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; }</div>
+<div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160;</div>
+<div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; <span class="keyword">inline</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; operator[] (<span class="keywordtype">int</span> x) <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a>((always_inline))</div>
+<div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; {</div>
+<div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; <span class="keywordflow">return</span> entries[(uint8_t)x];</div>
+<div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; }</div>
+<div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; operator[] (<span class="keywordtype">int</span> x) <span class="keyword">const</span> <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a>((always_inline))</div>
+<div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; {</div>
+<div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; <span class="keywordflow">return</span> entries[(uint8_t)x];</div>
+<div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; }</div>
+<div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160;</div>
+<div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; <span class="keyword">operator</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>*()</div>
+<div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; {</div>
+<div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; <span class="keywordflow">return</span> &amp;(entries[0]);</div>
+<div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; }</div>
+<div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160;</div>
+<div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; <a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>( <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c1)</div>
+<div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; {</div>
+<div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; <a class="code" href="group___colorutils.html#gac84d8820fd175567ba66413dfb8bc63b">fill_solid</a>( &amp;(entries[0]), 256, c1);</div>
+<div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; }</div>
+<div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; <a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>( <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c1, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c2)</div>
+<div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; {</div>
+<div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; <a class="code" href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98">fill_gradient</a>( &amp;(entries[0]), 256, c1, c2);</div>
+<div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; }</div>
+<div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; <a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>( <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c1, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c2, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c3)</div>
+<div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; {</div>
+<div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; <a class="code" href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98">fill_gradient</a>( &amp;(entries[0]), 256, c1, c2, c3);</div>
+<div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; }</div>
+<div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; <a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>( <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c1, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c2, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c3, <span class="keyword">const</span> <a class="code" href="struct_c_h_s_v.html">CHSV</a>&amp; c4)</div>
+<div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; {</div>
+<div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; <a class="code" href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98">fill_gradient</a>( &amp;(entries[0]), 256, c1, c2, c3, c4);</div>
+<div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; }</div>
+<div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160;</div>
+<div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; <a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>( <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c1)</div>
+<div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; {</div>
+<div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; <a class="code" href="group___colorutils.html#gac84d8820fd175567ba66413dfb8bc63b">fill_solid</a>( &amp;(entries[0]), 256, c1);</div>
+<div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; }</div>
+<div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; <a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>( <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c1, <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c2)</div>
+<div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; {</div>
+<div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; fill_gradient_RGB( &amp;(entries[0]), 256, c1, c2);</div>
+<div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; }</div>
+<div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; <a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>( <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c1, <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c2, <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c3)</div>
+<div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; {</div>
+<div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; fill_gradient_RGB( &amp;(entries[0]), 256, c1, c2, c3);</div>
+<div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; }</div>
+<div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; <a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>( <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c1, <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c2, <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c3, <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; c4)</div>
+<div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; {</div>
+<div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; fill_gradient_RGB( &amp;(entries[0]), 256, c1, c2, c3, c4);</div>
+<div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; }</div>
+<div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160;</div>
+<div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; <a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>( TProgmemRGBGradientPalette_bytes progpal )</div>
+<div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; {</div>
+<div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; *<span class="keyword">this</span> = progpal;</div>
+<div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; }</div>
+<div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; <a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>&amp; operator=( TProgmemRGBGradientPalette_bytes progpal )</div>
+<div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; {</div>
+<div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; <a class="code" href="union_t_r_g_b_gradient_palette_entry_union.html">TRGBGradientPaletteEntryUnion</a>* progent = (<a class="code" href="union_t_r_g_b_gradient_palette_entry_union.html">TRGBGradientPaletteEntryUnion</a>*)(progpal);</div>
+<div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; <a class="code" href="union_t_r_g_b_gradient_palette_entry_union.html">TRGBGradientPaletteEntryUnion</a> u;</div>
+<div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; u.dword = FL_PGM_READ_DWORD_NEAR( progent);</div>
+<div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; <a class="code" href="struct_c_r_g_b.html">CRGB</a> rgbstart( u.r, u.g, u.b);</div>
+<div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160;</div>
+<div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; <span class="keywordtype">int</span> indexstart = 0;</div>
+<div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; <span class="keywordflow">while</span>( indexstart &lt; 255) {</div>
+<div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; progent++;</div>
+<div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; u.dword = FL_PGM_READ_DWORD_NEAR( progent);</div>
+<div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; <span class="keywordtype">int</span> indexend = u.index;</div>
+<div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; <a class="code" href="struct_c_r_g_b.html">CRGB</a> rgbend( u.r, u.g, u.b);</div>
+<div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; fill_gradient_RGB( &amp;(entries[0]), indexstart, rgbstart, indexend, rgbend);</div>
+<div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; indexstart = indexend;</div>
+<div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; rgbstart = rgbend;</div>
+<div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; }</div>
+<div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
+<div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; }</div>
+<div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; <a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>&amp; loadDynamicGradientPalette( TDynamicRGBGradientPalette_bytes gpal )</div>
+<div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; {</div>
+<div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; <a class="code" href="union_t_r_g_b_gradient_palette_entry_union.html">TRGBGradientPaletteEntryUnion</a>* ent = (<a class="code" href="union_t_r_g_b_gradient_palette_entry_union.html">TRGBGradientPaletteEntryUnion</a>*)(gpal);</div>
+<div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; <a class="code" href="union_t_r_g_b_gradient_palette_entry_union.html">TRGBGradientPaletteEntryUnion</a> u;</div>
+<div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; u = *ent;</div>
+<div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; <a class="code" href="struct_c_r_g_b.html">CRGB</a> rgbstart( u.r, u.g, u.b);</div>
+<div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160;</div>
+<div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; <span class="keywordtype">int</span> indexstart = 0;</div>
+<div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; <span class="keywordflow">while</span>( indexstart &lt; 255) {</div>
+<div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; ent++;</div>
+<div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; u = *ent;</div>
+<div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; <span class="keywordtype">int</span> indexend = u.index;</div>
+<div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; <a class="code" href="struct_c_r_g_b.html">CRGB</a> rgbend( u.r, u.g, u.b);</div>
+<div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; fill_gradient_RGB( &amp;(entries[0]), indexstart, rgbstart, indexend, rgbend);</div>
+<div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; indexstart = indexend;</div>
+<div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; rgbstart = rgbend;</div>
+<div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; }</div>
+<div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
+<div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; }</div>
+<div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160;};</div>
<div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160;</div>
<div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160;</div>
-<div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span> { NOBLEND=0, LINEARBLEND=1 } TBlendType;</div>
+<div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160;</div>
<div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160;</div>
-<div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160;<a class="code" href="struct_c_r_g_b.html">CRGB</a> ColorFromPalette( <span class="keyword">const</span> <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>&amp; pal,</div>
-<div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; uint8_t index,</div>
-<div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; uint8_t brightness=255,</div>
-<div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; TBlendType blendType=LINEARBLEND);</div>
-<div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160;</div>
-<div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160;<a class="code" href="struct_c_r_g_b.html">CRGB</a> ColorFromPalette( <span class="keyword">const</span> TProgmemRGBPalette16&amp; pal,</div>
-<div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; uint8_t index,</div>
-<div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; uint8_t brightness=255,</div>
-<div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; TBlendType blendType=LINEARBLEND);</div>
-<div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160;</div>
-<div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160;<a class="code" href="struct_c_r_g_b.html">CRGB</a> ColorFromPalette( <span class="keyword">const</span> <a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>&amp; pal,</div>
-<div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; uint8_t index,</div>
-<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; uint8_t brightness=255,</div>
-<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; TBlendType blendType=NOBLEND );</div>
-<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160;</div>
-<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160;<a class="code" href="struct_c_h_s_v.html">CHSV</a> ColorFromPalette( <span class="keyword">const</span> <a class="code" href="class_c_h_s_v_palette16.html">CHSVPalette16</a>&amp; pal,</div>
-<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; uint8_t index,</div>
-<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; uint8_t brightness=255,</div>
-<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; TBlendType blendType=LINEARBLEND);</div>
-<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160;</div>
-<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160;<a class="code" href="struct_c_h_s_v.html">CHSV</a> ColorFromPalette( <span class="keyword">const</span> <a class="code" href="class_c_h_s_v_palette256.html">CHSVPalette256</a>&amp; pal,</div>
-<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; uint8_t index,</div>
-<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; uint8_t brightness=255,</div>
-<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160; TBlendType blendType=NOBLEND );</div>
-<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160;</div>
-<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160;</div>
-<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160;<span class="comment">// Fill a range of LEDs with a sequece of entryies from a palette</span></div>
-<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> PALETTE&gt;</div>
-<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160;<span class="keywordtype">void</span> fill_palette(<a class="code" href="struct_c_r_g_b.html">CRGB</a>* L, uint16_t N, uint8_t startIndex, uint8_t incIndex,</div>
-<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160; <span class="keyword">const</span> PALETTE&amp; pal, uint8_t brightness, TBlendType blendType)</div>
-<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160;{</div>
-<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160; uint8_t colorIndex = startIndex;</div>
-<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160; <span class="keywordflow">for</span>( uint16_t i = 0; i &lt; N; i++) {</div>
-<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160; L[i] = ColorFromPalette( pal, colorIndex, brightness, blendType);</div>
-<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160; colorIndex += incIndex;</div>
-<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; }</div>
-<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160;}</div>
-<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160;</div>
-<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> PALETTE&gt;</div>
-<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160;<span class="keywordtype">void</span> map_data_into_colors_through_palette(</div>
-<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; uint8_t *dataArray, uint16_t dataCount,</div>
-<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160; <a class="code" href="struct_c_r_g_b.html">CRGB</a>* targetColorArray,</div>
-<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160; <span class="keyword">const</span> PALETTE&amp; pal,</div>
-<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160; uint8_t brightness=255,</div>
-<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160; uint8_t opacity=255,</div>
-<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; TBlendType blendType=LINEARBLEND)</div>
-<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160;{</div>
-<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160; <span class="keywordflow">for</span>( uint16_t i = 0; i &lt; dataCount; i++) {</div>
-<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; uint8_t d = dataArray[i];</div>
-<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160; <a class="code" href="struct_c_r_g_b.html">CRGB</a> rgb = ColorFromPalette( pal, d, brightness, blendType);</div>
-<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160; <span class="keywordflow">if</span>( opacity == 255 ) {</div>
-<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160; targetColorArray[i] = rgb;</div>
-<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160; } <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; targetColorArray[i].nscale8( 256 - opacity);</div>
-<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160; rgb.nscale8_video( opacity);</div>
-<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; targetColorArray[i] += rgb;</div>
-<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160; }</div>
-<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; }</div>
-<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160;}</div>
-<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160;</div>
-<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160;<span class="comment">// nblendPaletteTowardPalette:</span></div>
-<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160;<span class="comment">// Alter one palette by making it slightly more like</span></div>
-<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160;<span class="comment">// a &#39;target palette&#39;, used for palette cross-fades.</span></div>
-<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160;<span class="comment">// It does this by comparing each of the R, G, and B channels</span></div>
-<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160;<span class="comment">// of each entry in the current palette to the corresponding</span></div>
-<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160;<span class="comment">// entry in the target palette and making small adjustments:</span></div>
-<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160;<span class="comment">// If the Red channel is too low, it will be increased.</span></div>
-<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160;<span class="comment">// If the Red channel is too high, it will be slightly reduced.</span></div>
-<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160;<span class="comment">// ... and likewise for Green and Blue channels.</span></div>
-<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160;<span class="comment">// Additionally, there are two significant visual improvements</span></div>
-<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160;<span class="comment">// to this algorithm implemented here. First is this:</span></div>
-<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160;<span class="comment">// When increasing a channel, it is stepped up by ONE.</span></div>
-<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160;<span class="comment">// When decreasing a channel, it is stepped down by TWO.</span></div>
-<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160;<span class="comment">// Due to the way the eye perceives light, and the way colors</span></div>
-<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160;<span class="comment">// are represented in RGB, this produces a more uniform apparent</span></div>
-<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160;<span class="comment">// brightness when cross-fading between most palette colors.</span></div>
-<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160;<span class="comment">// The second visual tweak is limiting the number of changes</span></div>
-<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160;<span class="comment">// that will be made to the palette at once. If all the palette</span></div>
-<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160;<span class="comment">// entries are changed at once, it can give a muddled appearance.</span></div>
-<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160;<span class="comment">// However, if only a few palette entries are changed at once,</span></div>
-<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160;<span class="comment">// you get a visually smoother transition: in the middle of the</span></div>
-<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160;<span class="comment">// cross-fade your current palette will actually contain some</span></div>
-<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160;<span class="comment">// colors from the old palette, a few blended colors, and some</span></div>
-<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160;<span class="comment">// colors from the new palette.</span></div>
-<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160;<span class="comment">// The maximum number of possible palette changes per call</span></div>
-<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160;<span class="comment">// is 48 (sixteen color entries time three channels each).</span></div>
-<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160;<span class="comment">// The default &#39;maximim number of changes&#39; here is 12, meaning</span></div>
-<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160;<span class="comment">// that only approximately a quarter of the palette entries</span></div>
-<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160;<span class="comment">// will be changed per call.</span></div>
-<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160;<span class="keywordtype">void</span> nblendPaletteTowardPalette( <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>&amp; currentPalette,</div>
-<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160; <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>&amp; targetPalette,</div>
-<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; uint8_t maxChanges=24);</div>
-<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160;</div>
-<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160;</div>
+<div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span> { NOBLEND=0, LINEARBLEND=1 } TBlendType;</div>
+<div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160;</div>
+<div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160;<a class="code" href="struct_c_r_g_b.html">CRGB</a> ColorFromPalette( <span class="keyword">const</span> <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>&amp; pal,</div>
+<div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; uint8_t index,</div>
+<div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; uint8_t brightness=255,</div>
+<div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; TBlendType blendType=LINEARBLEND);</div>
+<div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160;</div>
+<div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160;<a class="code" href="struct_c_r_g_b.html">CRGB</a> ColorFromPalette( <span class="keyword">const</span> TProgmemRGBPalette16&amp; pal,</div>
+<div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; uint8_t index,</div>
+<div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; uint8_t brightness=255,</div>
+<div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; TBlendType blendType=LINEARBLEND);</div>
+<div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160;</div>
+<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160;<a class="code" href="struct_c_r_g_b.html">CRGB</a> ColorFromPalette( <span class="keyword">const</span> <a class="code" href="class_c_r_g_b_palette256.html">CRGBPalette256</a>&amp; pal,</div>
+<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; uint8_t index,</div>
+<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; uint8_t brightness=255,</div>
+<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; TBlendType blendType=NOBLEND );</div>
+<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160;</div>
+<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160;<a class="code" href="struct_c_h_s_v.html">CHSV</a> ColorFromPalette( <span class="keyword">const</span> <a class="code" href="class_c_h_s_v_palette16.html">CHSVPalette16</a>&amp; pal,</div>
+<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; uint8_t index,</div>
+<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160; uint8_t brightness=255,</div>
+<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160; TBlendType blendType=LINEARBLEND);</div>
+<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160;</div>
+<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160;<a class="code" href="struct_c_h_s_v.html">CHSV</a> ColorFromPalette( <span class="keyword">const</span> <a class="code" href="class_c_h_s_v_palette256.html">CHSVPalette256</a>&amp; pal,</div>
+<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160; uint8_t index,</div>
+<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; uint8_t brightness=255,</div>
+<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; TBlendType blendType=NOBLEND );</div>
+<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160;</div>
+<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160;</div>
+<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160;<span class="comment">// Fill a range of LEDs with a sequece of entryies from a palette</span></div>
+<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> PALETTE&gt;</div>
+<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160;<span class="keywordtype">void</span> fill_palette(<a class="code" href="struct_c_r_g_b.html">CRGB</a>* L, uint16_t N, uint8_t startIndex, uint8_t incIndex,</div>
+<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160; <span class="keyword">const</span> PALETTE&amp; pal, uint8_t brightness, TBlendType blendType)</div>
+<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160;{</div>
+<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160; uint8_t colorIndex = startIndex;</div>
+<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160; <span class="keywordflow">for</span>( uint16_t i = 0; i &lt; N; i++) {</div>
+<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; L[i] = ColorFromPalette( pal, colorIndex, brightness, blendType);</div>
+<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160; colorIndex += incIndex;</div>
+<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160; }</div>
+<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160;}</div>
+<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160;</div>
+<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> PALETTE&gt;</div>
+<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160;<span class="keywordtype">void</span> map_data_into_colors_through_palette(</div>
+<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160; uint8_t *dataArray, uint16_t dataCount,</div>
+<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160; <a class="code" href="struct_c_r_g_b.html">CRGB</a>* targetColorArray,</div>
+<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160; <span class="keyword">const</span> PALETTE&amp; pal,</div>
+<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; uint8_t brightness=255,</div>
+<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160; uint8_t opacity=255,</div>
+<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160; TBlendType blendType=LINEARBLEND)</div>
+<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160;{</div>
+<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160; <span class="keywordflow">for</span>( uint16_t i = 0; i &lt; dataCount; i++) {</div>
+<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160; uint8_t d = dataArray[i];</div>
+<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160; <a class="code" href="struct_c_r_g_b.html">CRGB</a> rgb = ColorFromPalette( pal, d, brightness, blendType);</div>
+<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160; <span class="keywordflow">if</span>( opacity == 255 ) {</div>
+<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; targetColorArray[i] = rgb;</div>
+<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; targetColorArray[i].nscale8( 256 - opacity);</div>
+<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160; rgb.nscale8_video( opacity);</div>
+<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; targetColorArray[i] += rgb;</div>
+<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; }</div>
+<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; }</div>
+<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160;}</div>
+<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160;</div>
+<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160;<span class="comment">// nblendPaletteTowardPalette:</span></div>
+<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160;<span class="comment">// Alter one palette by making it slightly more like</span></div>
+<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160;<span class="comment">// a &#39;target palette&#39;, used for palette cross-fades.</span></div>
+<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160;<span class="comment">// It does this by comparing each of the R, G, and B channels</span></div>
+<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160;<span class="comment">// of each entry in the current palette to the corresponding</span></div>
+<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160;<span class="comment">// entry in the target palette and making small adjustments:</span></div>
+<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160;<span class="comment">// If the Red channel is too low, it will be increased.</span></div>
+<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160;<span class="comment">// If the Red channel is too high, it will be slightly reduced.</span></div>
+<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160;<span class="comment">// ... and likewise for Green and Blue channels.</span></div>
+<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160;<span class="comment">// Additionally, there are two significant visual improvements</span></div>
+<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160;<span class="comment">// to this algorithm implemented here. First is this:</span></div>
+<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160;<span class="comment">// When increasing a channel, it is stepped up by ONE.</span></div>
+<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160;<span class="comment">// When decreasing a channel, it is stepped down by TWO.</span></div>
+<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160;<span class="comment">// Due to the way the eye perceives light, and the way colors</span></div>
+<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160;<span class="comment">// are represented in RGB, this produces a more uniform apparent</span></div>
+<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160;<span class="comment">// brightness when cross-fading between most palette colors.</span></div>
+<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160;<span class="comment">// The second visual tweak is limiting the number of changes</span></div>
+<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160;<span class="comment">// that will be made to the palette at once. If all the palette</span></div>
+<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160;<span class="comment">// entries are changed at once, it can give a muddled appearance.</span></div>
+<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160;<span class="comment">// However, if only a few palette entries are changed at once,</span></div>
+<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160;<span class="comment">// you get a visually smoother transition: in the middle of the</span></div>
+<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160;<span class="comment">// cross-fade your current palette will actually contain some</span></div>
+<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160;<span class="comment">// colors from the old palette, a few blended colors, and some</span></div>
+<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160;<span class="comment">// colors from the new palette.</span></div>
+<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160;<span class="comment">// The maximum number of possible palette changes per call</span></div>
+<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160;<span class="comment">// is 48 (sixteen color entries time three channels each).</span></div>
+<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160;<span class="comment">// The default &#39;maximim number of changes&#39; here is 12, meaning</span></div>
+<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160;<span class="comment">// that only approximately a quarter of the palette entries</span></div>
+<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160;<span class="comment">// will be changed per call.</span></div>
+<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160;<span class="keywordtype">void</span> nblendPaletteTowardPalette( <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>&amp; currentPalette,</div>
+<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; <a class="code" href="class_c_r_g_b_palette16.html">CRGBPalette16</a>&amp; targetPalette,</div>
+<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; uint8_t maxChanges=24);</div>
<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160;</div>
<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160;</div>
-<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160;<span class="comment">// You can also define a static RGB palette very compactly in terms of a series</span></div>
-<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160;<span class="comment">// of connected color gradients.</span></div>
-<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160;<span class="comment">// For example, if you want the first 3/4ths of the palette to be a slow</span></div>
-<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160;<span class="comment">// gradient ramping from black to red, and then the remaining 1/4 of the</span></div>
-<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160;<span class="comment">// palette to be a quicker ramp to white, you specify just three points: the</span></div>
-<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160;<span class="comment">// starting black point (at index 0), the red midpoint (at index 192),</span></div>
-<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160;<span class="comment">// and the final white point (at index 255). It looks like this:</span></div>
-<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160;<span class="comment">// index: 0 192 255</span></div>
-<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160;<span class="comment">// |----------r-r-r-rrrrrrrrRrRrRrRrRRRR-|-RRWRWWRWWW-|</span></div>
-<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160;<span class="comment">// color: (0,0,0) (255,0,0) (255,255,255)</span></div>
-<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160;<span class="comment">// Here&#39;s how you&#39;d define that gradient palette:</span></div>
+<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160;</div>
+<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160;</div>
+<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160;<span class="comment">// You can also define a static RGB palette very compactly in terms of a series</span></div>
+<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160;<span class="comment">// of connected color gradients.</span></div>
+<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160;<span class="comment">// For example, if you want the first 3/4ths of the palette to be a slow</span></div>
+<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160;<span class="comment">// gradient ramping from black to red, and then the remaining 1/4 of the</span></div>
+<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160;<span class="comment">// palette to be a quicker ramp to white, you specify just three points: the</span></div>
+<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160;<span class="comment">// starting black point (at index 0), the red midpoint (at index 192),</span></div>
+<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160;<span class="comment">// and the final white point (at index 255). It looks like this:</span></div>
+<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160;<span class="comment">// index: 0 192 255</span></div>
+<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160;<span class="comment">// |----------r-r-r-rrrrrrrrRrRrRrRrRRRR-|-RRWRWWRWWW-|</span></div>
+<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160;<span class="comment">// color: (0,0,0) (255,0,0) (255,255,255)</span></div>
<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160;<span class="comment">// DEFINE_GRADIENT_PALETTE( black_to_red_to_white_p ) {</span></div>
-<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160;<span class="comment">// 0, 0, 0, 0, /* at index 0, black(0,0,0) */</span></div>
-<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160;<span class="comment">// 192, 255, 0, 0, /* at index 192, red(255,0,0) */</span></div>
-<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160;<span class="comment">// 255, 255,255,255 /* at index 255, white(255,255,255) */</span></div>
-<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160;<span class="comment">// };</span></div>
-<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160;<span class="comment">// This format is designed for compact storage. The example palette here</span></div>
-<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160;<span class="comment">// takes up just 12 bytes of PROGMEM (flash) storage, and zero bytes</span></div>
-<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160;<span class="comment">// of SRAM when not currently in use.</span></div>
-<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160;<span class="comment">// To use one of these gradient palettes, simply assign it into a</span></div>
-<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160;<span class="comment">// CRGBPalette16 or a CRGBPalette256, like this:</span></div>
-<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160;<span class="comment">// CRGBPalette16 pal = black_to_red_to_white_p;</span></div>
+<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160;<span class="comment">// Here&#39;s how you&#39;d define that gradient palette:</span></div>
+<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160;<span class="comment">// DEFINE_GRADIENT_PALETTE( black_to_red_to_white_p ) {</span></div>
+<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160;<span class="comment">// 0, 0, 0, 0, /* at index 0, black(0,0,0) */</span></div>
+<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160;<span class="comment">// 192, 255, 0, 0, /* at index 192, red(255,0,0) */</span></div>
+<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160;<span class="comment">// 255, 255,255,255 /* at index 255, white(255,255,255) */</span></div>
+<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160;<span class="comment">// };</span></div>
+<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160;<span class="comment">// This format is designed for compact storage. The example palette here</span></div>
+<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160;<span class="comment">// takes up just 12 bytes of PROGMEM (flash) storage, and zero bytes</span></div>
+<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160;<span class="comment">// of SRAM when not currently in use.</span></div>
+<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160;<span class="comment">// To use one of these gradient palettes, simply assign it into a</span></div>
+<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160;<span class="comment">// CRGBPalette16 or a CRGBPalette256, like this:</span></div>
<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160;<span class="comment">// When the assignment is made, the gradients are expanded out into</span></div>
-<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160;<span class="comment">// either 16 or 256 palette entries, depending on the kind of palette</span></div>
-<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160;<span class="comment">// object they&#39;re assigned to.</span></div>
-<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160;<span class="comment">// IMPORTANT NOTES &amp; CAVEATS:</span></div>
+<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160;<span class="comment">// CRGBPalette16 pal = black_to_red_to_white_p;</span></div>
+<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160;<span class="comment">// When the assignment is made, the gradients are expanded out into</span></div>
+<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160;<span class="comment">// either 16 or 256 palette entries, depending on the kind of palette</span></div>
+<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160;<span class="comment">// object they&#39;re assigned to.</span></div>
<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160;<span class="comment">// - The last &#39;index&#39; position MUST BE 255! Failure to end with</span></div>
-<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160;<span class="comment">// index 255 will result in program hangs or crashes.</span></div>
-<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160;<span class="comment">// - At this point, these gradient palette definitions MUST BE</span></div>
-<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160;<span class="comment">// stored in PROGMEM on AVR-based Arduinos. If you use the</span></div>
-<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160;<span class="comment">// DEFINE_GRADIENT_PALETTE macro, this is taken care of automatically.</span></div>
-<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160;</div>
-<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160;<span class="preprocessor">#define DEFINE_GRADIENT_PALETTE(X) \</span></div>
-<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160;<span class="preprocessor"> extern const TProgmemRGBGradientPalette_byte X[] FL_PROGMEM =</span></div>
-<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160;</div>
-<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160;<span class="preprocessor">#define DECLARE_GRADIENT_PALETTE(X) \</span></div>
-<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160;<span class="preprocessor"> extern const TProgmemRGBGradientPalette_byte X[] FL_PROGMEM</span></div>
-<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160;</div>
-<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160;</div>
-<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160;<span class="comment">// Functions to apply gamma adjustments, either:</span></div>
-<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160;<span class="comment">// - a single gamma adjustment to a single scalar value,</span></div>
-<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160;<span class="comment">// - a single gamma adjustment to each channel of a CRGB color, or</span></div>
-<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160;<span class="comment">// - different gamma adjustments for each channel of a CRFB color.</span></div>
-<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160;<span class="comment">// Note that the gamma is specified as a traditional floating point value</span></div>
-<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160;<span class="comment">// e.g., &quot;2.5&quot;, and as such these functions should not be called in</span></div>
-<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160;<span class="comment">// your innermost pixel loops, or in animations that are extremely</span></div>
-<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160;<span class="comment">// low on program storage space. Nevertheless, if you need these</span></div>
-<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160;<span class="comment">// functions, here they are.</span></div>
-<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160;<span class="comment">// Furthermore, bear in mind that CRGB leds have only eight bits</span></div>
-<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160;<span class="comment">// per channel of color resolution, and that very small, subtle shadings</span></div>
-<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160;<span class="comment">// may not be visible.</span></div>
-<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160;uint8_t applyGamma_video( uint8_t brightness, <span class="keywordtype">float</span> gamma);</div>
-<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160;<a class="code" href="struct_c_r_g_b.html">CRGB</a> applyGamma_video( <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; orig, <span class="keywordtype">float</span> gamma);</div>
-<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160;<a class="code" href="struct_c_r_g_b.html">CRGB</a> applyGamma_video( <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; orig, <span class="keywordtype">float</span> gammaR, <span class="keywordtype">float</span> gammaG, <span class="keywordtype">float</span> gammaB);</div>
-<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160;<span class="comment">// The &quot;n&quot; versions below modify their arguments in-place.</span></div>
-<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160;<a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; napplyGamma_video( <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; rgb, <span class="keywordtype">float</span> gamma);</div>
-<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160;<a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; napplyGamma_video( <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; rgb, <span class="keywordtype">float</span> gammaR, <span class="keywordtype">float</span> gammaG, <span class="keywordtype">float</span> gammaB);</div>
-<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160;<span class="keywordtype">void</span> napplyGamma_video( <a class="code" href="struct_c_r_g_b.html">CRGB</a>* rgbarray, uint16_t count, <span class="keywordtype">float</span> gamma);</div>
-<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160;<span class="keywordtype">void</span> napplyGamma_video( <a class="code" href="struct_c_r_g_b.html">CRGB</a>* rgbarray, uint16_t count, <span class="keywordtype">float</span> gammaR, <span class="keywordtype">float</span> gammaG, <span class="keywordtype">float</span> gammaB);</div>
-<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160;</div>
-<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160;</div>
-<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160;FASTLED_NAMESPACE_END</div>
+<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160;<span class="comment">// IMPORTANT NOTES &amp; CAVEATS:</span></div>
+<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160;<span class="comment">// - The last &#39;index&#39; position MUST BE 255! Failure to end with</span></div>
+<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160;<span class="comment">// index 255 will result in program hangs or crashes.</span></div>
+<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160;<span class="comment">// - At this point, these gradient palette definitions MUST BE</span></div>
+<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160;<span class="comment">// stored in PROGMEM on AVR-based Arduinos. If you use the</span></div>
+<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160;<span class="comment">// DEFINE_GRADIENT_PALETTE macro, this is taken care of automatically.</span></div>
+<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160;</div>
+<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160;<span class="preprocessor">#define DEFINE_GRADIENT_PALETTE(X) \</span></div>
+<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160;<span class="preprocessor"> extern const TProgmemRGBGradientPalette_byte X[] FL_PROGMEM =</span></div>
+<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160;</div>
+<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160;<span class="preprocessor">#define DECLARE_GRADIENT_PALETTE(X) \</span></div>
+<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160;<span class="preprocessor"> extern const TProgmemRGBGradientPalette_byte X[] FL_PROGMEM</span></div>
+<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160;</div>
+<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160;</div>
+<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160;<span class="comment">// Functions to apply gamma adjustments, either:</span></div>
+<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160;<span class="comment">// - a single gamma adjustment to a single scalar value,</span></div>
+<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160;<span class="comment">// - a single gamma adjustment to each channel of a CRGB color, or</span></div>
+<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160;<span class="comment">// - different gamma adjustments for each channel of a CRFB color.</span></div>
+<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160;<span class="comment">// Note that the gamma is specified as a traditional floating point value</span></div>
+<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160;<span class="comment">// e.g., &quot;2.5&quot;, and as such these functions should not be called in</span></div>
+<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160;<span class="comment">// your innermost pixel loops, or in animations that are extremely</span></div>
+<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160;<span class="comment">// low on program storage space. Nevertheless, if you need these</span></div>
+<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160;<span class="comment">// functions, here they are.</span></div>
+<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160;<span class="comment">// Furthermore, bear in mind that CRGB leds have only eight bits</span></div>
+<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160;<span class="comment">// per channel of color resolution, and that very small, subtle shadings</span></div>
+<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160;<span class="comment">// may not be visible.</span></div>
+<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160;uint8_t applyGamma_video( uint8_t brightness, <span class="keywordtype">float</span> gamma);</div>
+<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160;<a class="code" href="struct_c_r_g_b.html">CRGB</a> applyGamma_video( <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; orig, <span class="keywordtype">float</span> gamma);</div>
+<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160;<a class="code" href="struct_c_r_g_b.html">CRGB</a> applyGamma_video( <span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; orig, <span class="keywordtype">float</span> gammaR, <span class="keywordtype">float</span> gammaG, <span class="keywordtype">float</span> gammaB);</div>
+<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160;<span class="comment">// The &quot;n&quot; versions below modify their arguments in-place.</span></div>
+<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160;<a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; napplyGamma_video( <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; rgb, <span class="keywordtype">float</span> gamma);</div>
+<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160;<a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; napplyGamma_video( <a class="code" href="struct_c_r_g_b.html">CRGB</a>&amp; rgb, <span class="keywordtype">float</span> gammaR, <span class="keywordtype">float</span> gammaG, <span class="keywordtype">float</span> gammaB);</div>
+<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160;<span class="keywordtype">void</span> napplyGamma_video( <a class="code" href="struct_c_r_g_b.html">CRGB</a>* rgbarray, uint16_t count, <span class="keywordtype">float</span> gamma);</div>
+<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160;<span class="keywordtype">void</span> napplyGamma_video( <a class="code" href="struct_c_r_g_b.html">CRGB</a>* rgbarray, uint16_t count, <span class="keywordtype">float</span> gammaR, <span class="keywordtype">float</span> gammaG, <span class="keywordtype">float</span> gammaB);</div>
+<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160;</div>
<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160;</div>
-<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160;FASTLED_NAMESPACE_END</div>
+<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160;</div>
+<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="ttc" id="struct_c_r_g_b_html"><div class="ttname"><a href="struct_c_r_g_b.html">CRGB</a></div><div class="ttdoc">Representation of an RGB pixel (Red, Green, Blue) </div><div class="ttdef"><b>Definition:</b> pixeltypes.h:88</div></div>
<div class="ttc" id="group__lib8tion_html_ga397f872082dbd788e04e8c6e443e563a"><div class="ttname"><a href="group__lib8tion.html#ga397f872082dbd788e04e8c6e443e563a">accum88</a></div><div class="ttdeci">uint16_t accum88</div><div class="ttdoc">ANSI: unsigned short _Accum. 8 bits int, 8 bits fraction. </div><div class="ttdef"><b>Definition:</b> lib8tion.h:343</div></div>
-<div class="ttc" id="class_c_h_s_v_palette256_html"><div class="ttname"><a href="class_c_h_s_v_palette256.html">CHSVPalette256</a></div><div class="ttdef"><b>Definition:</b> colorutils.h:510</div></div>
-<div class="ttc" id="class_c_r_g_b_palette16_html"><div class="ttname"><a href="class_c_r_g_b_palette16.html">CRGBPalette16</a></div><div class="ttdef"><b>Definition:</b> colorutils.h:597</div></div>
+<div class="ttc" id="class_c_h_s_v_palette256_html"><div class="ttname"><a href="class_c_h_s_v_palette256.html">CHSVPalette256</a></div><div class="ttdef"><b>Definition:</b> colorutils.h:512</div></div>
+<div class="ttc" id="class_c_r_g_b_palette16_html"><div class="ttname"><a href="class_c_r_g_b_palette16.html">CRGBPalette16</a></div><div class="ttdef"><b>Definition:</b> colorutils.h:599</div></div>
<div class="ttc" id="group__lib8tion_html_ga5d6d013429a5b8a09d564d6137217644"><div class="ttname"><a href="group__lib8tion.html#ga5d6d013429a5b8a09d564d6137217644">fract8</a></div><div class="ttdeci">uint8_t fract8</div><div class="ttdoc">ANSI unsigned short _Fract. </div><div class="ttdef"><b>Definition:</b> lib8tion.h:324</div></div>
<div class="ttc" id="group___colorutils_html_gafcc7dac88e25736ebc49a9faf2a1c2e2"><div class="ttname"><a href="group___colorutils.html#gafcc7dac88e25736ebc49a9faf2a1c2e2">fill_rainbow</a></div><div class="ttdeci">void fill_rainbow(struct CRGB *pFirstLED, int numToFill, uint8_t initialhue, uint8_t deltahue=5)</div><div class="ttdoc">fill_rainbow - fill a range of LEDs with a rainbow of colors, at full saturation and full value (brig...</div><div class="ttdef"><b>Definition:</b> colorutils.cpp:35</div></div>
-<div class="ttc" id="group___colorutils_html_ga3144bb2bb66aeed33e20f4fdd6cc1a98"><div class="ttname"><a href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98">fill_gradient</a></div><div class="ttdeci">void fill_gradient(T *targetArray, uint16_t startpos, CHSV startcolor, uint16_t endpos, CHSV endcolor, TGradientDirectionCode directionCode=SHORTEST_HUES)</div><div class="ttdoc">fill_gradient - fill an array of colors with a smooth HSV gradient between two specified HSV colors...</div><div class="ttdef"><b>Definition:</b> colorutils.h:91</div></div>
-<div class="ttc" id="class_c_h_s_v_palette16_html"><div class="ttname"><a href="class_c_h_s_v_palette16.html">CHSVPalette16</a></div><div class="ttdef"><b>Definition:</b> colorutils.h:423</div></div>
-<div class="ttc" id="class_c_r_g_b_palette256_html"><div class="ttname"><a href="class_c_r_g_b_palette256.html">CRGBPalette256</a></div><div class="ttdef"><b>Definition:</b> colorutils.h:822</div></div>
-<div class="ttc" id="group___bitswap_html_ga01396a2e40133293c3badab349ac99f0"><div class="ttname"><a href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a></div><div class="ttdeci">__attribute__((always_inline)) inline void swapbits8(bitswap_type in</div><div class="ttdoc">Do an 8byte by 8bit rotation. </div><div class="ttdef"><b>Definition:</b> fastled_delay.h:82</div></div>
+<div class="ttc" id="group___colorutils_html_ga3144bb2bb66aeed33e20f4fdd6cc1a98"><div class="ttname"><a href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98">fill_gradient</a></div><div class="ttdeci">void fill_gradient(T *targetArray, uint16_t startpos, CHSV startcolor, uint16_t endpos, CHSV endcolor, TGradientDirectionCode directionCode=SHORTEST_HUES)</div><div class="ttdoc">fill_gradient - fill an array of colors with a smooth HSV gradient between two specified HSV colors...</div><div class="ttdef"><b>Definition:</b> colorutils.h:93</div></div>
+<div class="ttc" id="class_c_h_s_v_palette16_html"><div class="ttname"><a href="class_c_h_s_v_palette16.html">CHSVPalette16</a></div><div class="ttdef"><b>Definition:</b> colorutils.h:425</div></div>
+<div class="ttc" id="class_c_r_g_b_palette256_html"><div class="ttname"><a href="class_c_r_g_b_palette256.html">CRGBPalette256</a></div><div class="ttdef"><b>Definition:</b> colorutils.h:824</div></div>
+<div class="ttc" id="group___bitswap_html_ga01396a2e40133293c3badab349ac99f0"><div class="ttname"><a href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a></div><div class="ttdeci">__attribute__((always_inline)) inline void swapbits8(bitswap_type in</div><div class="ttdoc">Do an 8byte by 8bit rotation. </div><div class="ttdef"><b>Definition:</b> fastled_delay.h:85</div></div>
<div class="ttc" id="struct_c_h_s_v_html"><div class="ttname"><a href="struct_c_h_s_v.html">CHSV</a></div><div class="ttdoc">Representation of an HSV pixel (hue, saturation, value (aka brightness)). </div><div class="ttdef"><b>Definition:</b> pixeltypes.h:21</div></div>
<div class="ttc" id="group___colorutils_html_gac84d8820fd175567ba66413dfb8bc63b"><div class="ttname"><a href="group___colorutils.html#gac84d8820fd175567ba66413dfb8bc63b">fill_solid</a></div><div class="ttdeci">void fill_solid(struct CRGB *leds, int numToFill, const struct CRGB &amp;color)</div><div class="ttdoc">fill_solid - fill a range of LEDs with a solid color Example: fill_solid( leds, NUM_LEDS, CRGB(50,0,200)); </div><div class="ttdef"><b>Definition:</b> colorutils.cpp:12</div></div>
-<div class="ttc" id="union_t_r_g_b_gradient_palette_entry_union_html"><div class="ttname"><a href="union_t_r_g_b_gradient_palette_entry_union.html">TRGBGradientPaletteEntryUnion</a></div><div class="ttdef"><b>Definition:</b> colorutils.h:402</div></div>
+<div class="ttc" id="fastled__progmem_8h_html"><div class="ttname"><a href="fastled__progmem_8h.html">fastled_progmem.h</a></div><div class="ttdoc">wrapper definitions to allow seamless use of PROGMEM in environmens that have it </div></div>
+<div class="ttc" id="union_t_r_g_b_gradient_palette_entry_union_html"><div class="ttname"><a href="union_t_r_g_b_gradient_palette_entry_union.html">TRGBGradientPaletteEntryUnion</a></div><div class="ttdef"><b>Definition:</b> colorutils.h:404</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:46 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/controller_8h.html b/docs/3.1/controller_8h.html
new file mode 100644
index 00000000..6cc3bf5e
--- /dev/null
+++ b/docs/3.1/controller_8h.html
@@ -0,0 +1,126 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.9.1"/>
+<title>FastLED: controller.h File Reference</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="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { init_search(); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">FastLED
+ &#160;<span id="projectnumber">3.1</span>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.9.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</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>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#typedef-members">Typedefs</a> </div>
+ <div class="headertitle">
+<div class="title">controller.h File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>base definitions used by led controllers for writing out led data
+<a href="#details">More...</a></p>
+
+<p><a href="controller_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_e_d_controller.html">CLEDController</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Base definition for an LED controller. <a href="class_c_l_e_d_controller.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_pixel_controller.html">PixelController&lt; RGB_ORDER &gt;</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pixel controller class. <a href="struct_pixel_controller.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_multi_pixel_controller.html">MultiPixelController&lt; LANES, MASK, RGB_ORDER &gt;</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
+Typedefs</h2></td></tr>
+<tr class="memitem:a685662f0b6e22bfab012e574168ba5c9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a685662f0b6e22bfab012e574168ba5c9"></a>
+typedef uint8_t&#160;</td><td class="memItemRight" valign="bottom"><b>EDitherMode</b></td></tr>
+<tr class="separator:a685662f0b6e22bfab012e574168ba5c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>base definitions used by led controllers for writing out led data </p>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.9.1
+</small></address>
+</body>
+</html>
diff --git a/docs/3.1/controller_8h_source.html b/docs/3.1/controller_8h_source.html
index 039c178f..c4553305 100644
--- a/docs/3.1/controller_8h_source.html
+++ b/docs/3.1/controller_8h_source.html
@@ -87,578 +87,580 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="title">controller.h</div> </div>
</div><!--header-->
<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#ifndef __INC_CONTROLLER_H</span></div>
+<a href="controller_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#ifndef __INC_CONTROLLER_H</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="preprocessor">#define __INC_CONTROLLER_H</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;</div>
-<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#include &quot;led_sysdefs.h&quot;</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="preprocessor">#include &quot;pixeltypes.h&quot;</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="preprocessor">#include &quot;color.h&quot;</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div>
-<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;FASTLED_NAMESPACE_BEGIN</div>
-<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;</div>
-<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#define RO(X) RGB_BYTE(RGB_ORDER, X)</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#define RGB_BYTE(RO,X) (((RO)&gt;&gt;(3*(2-(X)))) &amp; 0x3)</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;</div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="preprocessor">#include &quot;led_sysdefs.h&quot;</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#include &quot;pixeltypes.h&quot;</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="color_8h.html">color.h</a>&quot;</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;</div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;FASTLED_NAMESPACE_BEGIN</div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div>
-<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#define RGB_BYTE0(RO) ((RO&gt;&gt;6) &amp; 0x3)</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#define RGB_BYTE1(RO) ((RO&gt;&gt;3) &amp; 0x3)</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#define RGB_BYTE2(RO) ((RO) &amp; 0x3)</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment">// operator byte *(struct CRGB[] arr) { return (byte*)arr; }</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;</div>
-<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#define DISABLE_DITHER 0x00</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#define BINARY_DITHER 0x01</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="keyword">typedef</span> uint8_t EDitherMode;</div>
-<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div>
-<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment">// LED Controller interface definition</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="class_c_l_e_d_controller.html"> 34</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_c_l_e_d_controller.html">CLEDController</a> {</div>
-<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">protected</span>:</div>
-<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="class_c_fast_l_e_d.html">CFastLED</a>;</div>
-<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <a class="code" href="struct_c_r_g_b.html">CRGB</a> *m_Data;</div>
-<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <a class="code" href="class_c_l_e_d_controller.html">CLEDController</a> *m_pNext;</div>
-<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <a class="code" href="struct_c_r_g_b.html">CRGB</a> m_ColorCorrection;</div>
-<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <a class="code" href="struct_c_r_g_b.html">CRGB</a> m_ColorTemperature;</div>
-<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; EDitherMode m_DitherMode;</div>
-<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordtype">int</span> m_nLeds;</div>
-<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">static</span> <a class="code" href="class_c_l_e_d_controller.html">CLEDController</a> *m_pHead;</div>
-<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">static</span> <a class="code" href="class_c_l_e_d_controller.html">CLEDController</a> *m_pTail;</div>
-<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div>
-<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_c_l_e_d_controller.html#a068fa50d8c7d31bd8537b731eea84c92">showColor</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a> &amp; data, <span class="keywordtype">int</span> nLeds, <a class="code" href="struct_c_r_g_b.html">CRGB</a> scale) = 0;</div>
-<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div>
-<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_c_l_e_d_controller.html#add284627121ffab140e083e84fadc37f">show</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a> *data, <span class="keywordtype">int</span> nLeds, <a class="code" href="struct_c_r_g_b.html">CRGB</a> scale) = 0;</div>
-<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div>
-<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="preprocessor">#ifdef SUPPORT_ARGB</span></div>
-<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="comment">// as above, but every 4th uint8_t is assumed to be alpha channel data, and will be skipped</span></div>
-<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_c_l_e_d_controller.html#add284627121ffab140e083e84fadc37f">show</a>(<span class="keyword">const</span> <span class="keyword">struct</span> CARGB *data, <span class="keywordtype">int</span> nLeds, <a class="code" href="struct_c_r_g_b.html">CRGB</a> scale) = 0;</div>
-<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="class_c_l_e_d_controller.html#a8c560c6d171f117dfd19c0f2ec780a32"> 64</a></span>&#160; <a class="code" href="class_c_l_e_d_controller.html#a8c560c6d171f117dfd19c0f2ec780a32">CLEDController</a>() : m_Data(NULL), m_ColorCorrection(<a class="code" href="group___color_enums.html#ggadf6bcba67c9573665af20788c4431ae8af964ffff5f2977a60a83aa3f9f8b4368">UncorrectedColor</a>), m_ColorTemperature(<a class="code" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9ae3d35275ab8c374612bcfbcce732b39f">UncorrectedTemperature</a>), m_DitherMode(BINARY_DITHER), m_nLeds(0) {</div>
-<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; m_pNext = NULL;</div>
-<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">if</span>(m_pHead==NULL) { m_pHead = <span class="keyword">this</span>; }</div>
-<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">if</span>(m_pTail != NULL) { m_pTail-&gt;m_pNext = <span class="keyword">this</span>; }</div>
-<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; m_pTail = <span class="keyword">this</span>;</div>
-<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; }</div>
-<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div>
-<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_c_l_e_d_controller.html#af877a15a5ec452780fbd1d359b8a9913">init</a>() = 0;</div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#define RO(X) RGB_BYTE(RGB_ORDER, X)</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#define RGB_BYTE(RO,X) (((RO)&gt;&gt;(3*(2-(X)))) &amp; 0x3)</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RGB_BYTE0(RO) ((RO&gt;&gt;6) &amp; 0x3)</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#define RGB_BYTE1(RO) ((RO&gt;&gt;3) &amp; 0x3)</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#define RGB_BYTE2(RO) ((RO) &amp; 0x3)</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">// operator byte *(struct CRGB[] arr) { return (byte*)arr; }</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#define DISABLE_DITHER 0x00</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#define BINARY_DITHER 0x01</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="keyword">typedef</span> uint8_t EDitherMode;</div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment">// LED Controller interface definition</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="class_c_l_e_d_controller.html"> 37</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_c_l_e_d_controller.html">CLEDController</a> {</div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="class_c_fast_l_e_d.html">CFastLED</a>;</div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <a class="code" href="struct_c_r_g_b.html">CRGB</a> *m_Data;</div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <a class="code" href="class_c_l_e_d_controller.html">CLEDController</a> *m_pNext;</div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <a class="code" href="struct_c_r_g_b.html">CRGB</a> m_ColorCorrection;</div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <a class="code" href="struct_c_r_g_b.html">CRGB</a> m_ColorTemperature;</div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; EDitherMode m_DitherMode;</div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordtype">int</span> m_nLeds;</div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">static</span> <a class="code" href="class_c_l_e_d_controller.html">CLEDController</a> *m_pHead;</div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">static</span> <a class="code" href="class_c_l_e_d_controller.html">CLEDController</a> *m_pTail;</div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_c_l_e_d_controller.html#a068fa50d8c7d31bd8537b731eea84c92">showColor</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a> &amp; data, <span class="keywordtype">int</span> nLeds, <a class="code" href="struct_c_r_g_b.html">CRGB</a> scale) = 0;</div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_c_l_e_d_controller.html#add284627121ffab140e083e84fadc37f">show</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a> *data, <span class="keywordtype">int</span> nLeds, <a class="code" href="struct_c_r_g_b.html">CRGB</a> scale) = 0;</div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="preprocessor">#ifdef SUPPORT_ARGB</span></div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="comment">// as above, but every 4th uint8_t is assumed to be alpha channel data, and will be skipped</span></div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_c_l_e_d_controller.html#add284627121ffab140e083e84fadc37f">show</a>(<span class="keyword">const</span> <span class="keyword">struct</span> CARGB *data, <span class="keywordtype">int</span> nLeds, <a class="code" href="struct_c_r_g_b.html">CRGB</a> scale) = 0;</div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="class_c_l_e_d_controller.html#a8c560c6d171f117dfd19c0f2ec780a32"> 67</a></span>&#160; <a class="code" href="class_c_l_e_d_controller.html#a8c560c6d171f117dfd19c0f2ec780a32">CLEDController</a>() : m_Data(NULL), m_ColorCorrection(<a class="code" href="group___color_enums.html#ggadf6bcba67c9573665af20788c4431ae8af964ffff5f2977a60a83aa3f9f8b4368">UncorrectedColor</a>), m_ColorTemperature(<a class="code" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9ae3d35275ab8c374612bcfbcce732b39f">UncorrectedTemperature</a>), m_DitherMode(BINARY_DITHER), m_nLeds(0) {</div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; m_pNext = NULL;</div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">if</span>(m_pHead==NULL) { m_pHead = <span class="keyword">this</span>; }</div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">if</span>(m_pTail != NULL) { m_pTail-&gt;m_pNext = <span class="keyword">this</span>; }</div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; m_pTail = <span class="keyword">this</span>;</div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; }</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div>
-<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_c_l_e_d_controller.html#adfa6601c84fefd733904b32ac98b6dae">clearLeds</a>(<span class="keywordtype">int</span> nLeds) = 0;</div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_c_l_e_d_controller.html#af877a15a5ec452780fbd1d359b8a9913">init</a>() = 0;</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div>
-<div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="class_c_l_e_d_controller.html#abe990b9a65f5bff1f391cc5c28752abb"> 78</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="class_c_l_e_d_controller.html#abe990b9a65f5bff1f391cc5c28752abb">show</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a> *data, <span class="keywordtype">int</span> nLeds, uint8_t brightness) {</div>
-<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <a class="code" href="class_c_l_e_d_controller.html#add284627121ffab140e083e84fadc37f">show</a>(data, nLeds, <a class="code" href="class_c_l_e_d_controller.html#af6173cca91ee446766cc15102990d7bb">getAdjustment</a>(brightness));</div>
-<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; }</div>
-<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;</div>
-<div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="class_c_l_e_d_controller.html#a253069a734075b298da65d59d6efbb3b"> 83</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="class_c_l_e_d_controller.html#a253069a734075b298da65d59d6efbb3b">showColor</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a> &amp;data, <span class="keywordtype">int</span> nLeds, uint8_t brightness) {</div>
-<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <a class="code" href="class_c_l_e_d_controller.html#a068fa50d8c7d31bd8537b731eea84c92">showColor</a>(data, nLeds, <a class="code" href="class_c_l_e_d_controller.html#af6173cca91ee446766cc15102990d7bb">getAdjustment</a>(brightness));</div>
-<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; }</div>
-<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div>
-<div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="class_c_l_e_d_controller.html#aa4124b1cf5546ad028166e7884276076"> 88</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="class_c_l_e_d_controller.html#aa4124b1cf5546ad028166e7884276076">showLeds</a>(uint8_t brightness=255) {</div>
-<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <a class="code" href="class_c_l_e_d_controller.html#add284627121ffab140e083e84fadc37f">show</a>(m_Data, m_nLeds, <a class="code" href="class_c_l_e_d_controller.html#af6173cca91ee446766cc15102990d7bb">getAdjustment</a>(brightness));</div>
-<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</div>
-<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div>
-<div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="class_c_l_e_d_controller.html#a4ccd149ab7282817041a1ae4e586a9d4"> 93</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="class_c_l_e_d_controller.html#a4ccd149ab7282817041a1ae4e586a9d4">showColor</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a> &amp; data, uint8_t brightness=255) {</div>
-<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <a class="code" href="class_c_l_e_d_controller.html#a068fa50d8c7d31bd8537b731eea84c92">showColor</a>(data, m_nLeds, <a class="code" href="class_c_l_e_d_controller.html#af6173cca91ee446766cc15102990d7bb">getAdjustment</a>(brightness));</div>
-<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; }</div>
-<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div>
-<div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="class_c_l_e_d_controller.html#a75a5a6ea50899409d875d72393323ca0"> 98</a></span>&#160; <span class="keyword">static</span> <a class="code" href="class_c_l_e_d_controller.html">CLEDController</a> *<a class="code" href="class_c_l_e_d_controller.html#a75a5a6ea50899409d875d72393323ca0">head</a>() { <span class="keywordflow">return</span> m_pHead; }</div>
-<div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="class_c_l_e_d_controller.html#a06cfb05ad6e0f7982328928051f3f565"> 100</a></span>&#160; <a class="code" href="class_c_l_e_d_controller.html">CLEDController</a> *<a class="code" href="class_c_l_e_d_controller.html#a06cfb05ad6e0f7982328928051f3f565">next</a>() { <span class="keywordflow">return</span> m_pNext; }</div>
-<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;</div>
-<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="preprocessor"> #ifdef SUPPORT_ARGB</span></div>
-<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="comment">// as above, but every 4th uint8_t is assumed to be alpha channel data, and will be skipped</span></div>
-<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordtype">void</span> <a class="code" href="class_c_l_e_d_controller.html#add284627121ffab140e083e84fadc37f">show</a>(<span class="keyword">const</span> <span class="keyword">struct</span> CARGB *data, <span class="keywordtype">int</span> nLeds, uint8_t brightness) {</div>
-<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <a class="code" href="class_c_l_e_d_controller.html#add284627121ffab140e083e84fadc37f">show</a>(data, nLeds, <a class="code" href="class_c_l_e_d_controller.html#af6173cca91ee446766cc15102990d7bb">getAdjustment</a>(brightness))</div>
-<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; }</div>
-<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;</div>
-<div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="class_c_l_e_d_controller.html#a5b08378b29f92c5def65175ec5334037"> 110</a></span>&#160; <a class="code" href="class_c_l_e_d_controller.html">CLEDController</a> &amp; <a class="code" href="class_c_l_e_d_controller.html#a5b08378b29f92c5def65175ec5334037">setLeds</a>(<a class="code" href="struct_c_r_g_b.html">CRGB</a> *data, <span class="keywordtype">int</span> nLeds) {</div>
-<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; m_Data = data;</div>
-<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; m_nLeds = nLeds;</div>
-<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; }</div>
-<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;</div>
-<div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="class_c_l_e_d_controller.html#a7b61c81e004c96ff670a2742057a5a52"> 117</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="class_c_l_e_d_controller.html#a7b61c81e004c96ff670a2742057a5a52">clearLedData</a>() {</div>
-<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">if</span>(m_Data) {</div>
-<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; memset8((<span class="keywordtype">void</span>*)m_Data, 0, <span class="keyword">sizeof</span>(<span class="keyword">struct</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>) * m_nLeds);</div>
-<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; }</div>
-<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; }</div>
-<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;</div>
-<div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="class_c_l_e_d_controller.html#a8840496d231f1fe0fa640970dc14db08"> 124</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="class_c_l_e_d_controller.html#a8840496d231f1fe0fa640970dc14db08">size</a>() { <span class="keywordflow">return</span> m_nLeds; }</div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_c_l_e_d_controller.html#adfa6601c84fefd733904b32ac98b6dae">clearLeds</a>(<span class="keywordtype">int</span> nLeds) = 0;</div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div>
+<div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="class_c_l_e_d_controller.html#abe990b9a65f5bff1f391cc5c28752abb"> 81</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="class_c_l_e_d_controller.html#abe990b9a65f5bff1f391cc5c28752abb">show</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a> *data, <span class="keywordtype">int</span> nLeds, uint8_t brightness) {</div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <a class="code" href="class_c_l_e_d_controller.html#add284627121ffab140e083e84fadc37f">show</a>(data, nLeds, <a class="code" href="class_c_l_e_d_controller.html#af6173cca91ee446766cc15102990d7bb">getAdjustment</a>(brightness));</div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; }</div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;</div>
+<div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="class_c_l_e_d_controller.html#a253069a734075b298da65d59d6efbb3b"> 86</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="class_c_l_e_d_controller.html#a253069a734075b298da65d59d6efbb3b">showColor</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a> &amp;data, <span class="keywordtype">int</span> nLeds, uint8_t brightness) {</div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <a class="code" href="class_c_l_e_d_controller.html#a068fa50d8c7d31bd8537b731eea84c92">showColor</a>(data, nLeds, <a class="code" href="class_c_l_e_d_controller.html#af6173cca91ee446766cc15102990d7bb">getAdjustment</a>(brightness));</div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; }</div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;</div>
+<div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="class_c_l_e_d_controller.html#aa4124b1cf5546ad028166e7884276076"> 91</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="class_c_l_e_d_controller.html#aa4124b1cf5546ad028166e7884276076">showLeds</a>(uint8_t brightness=255) {</div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <a class="code" href="class_c_l_e_d_controller.html#add284627121ffab140e083e84fadc37f">show</a>(m_Data, m_nLeds, <a class="code" href="class_c_l_e_d_controller.html#af6173cca91ee446766cc15102990d7bb">getAdjustment</a>(brightness));</div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; }</div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div>
+<div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="class_c_l_e_d_controller.html#a4ccd149ab7282817041a1ae4e586a9d4"> 96</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="class_c_l_e_d_controller.html#a4ccd149ab7282817041a1ae4e586a9d4">showColor</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a> &amp; data, uint8_t brightness=255) {</div>
+<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <a class="code" href="class_c_l_e_d_controller.html#a068fa50d8c7d31bd8537b731eea84c92">showColor</a>(data, m_nLeds, <a class="code" href="class_c_l_e_d_controller.html#af6173cca91ee446766cc15102990d7bb">getAdjustment</a>(brightness));</div>
+<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div>
+<div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="class_c_l_e_d_controller.html#a75a5a6ea50899409d875d72393323ca0"> 101</a></span>&#160; <span class="keyword">static</span> <a class="code" href="class_c_l_e_d_controller.html">CLEDController</a> *<a class="code" href="class_c_l_e_d_controller.html#a75a5a6ea50899409d875d72393323ca0">head</a>() { <span class="keywordflow">return</span> m_pHead; }</div>
+<div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="class_c_l_e_d_controller.html#a06cfb05ad6e0f7982328928051f3f565"> 103</a></span>&#160; <a class="code" href="class_c_l_e_d_controller.html">CLEDController</a> *<a class="code" href="class_c_l_e_d_controller.html#a06cfb05ad6e0f7982328928051f3f565">next</a>() { <span class="keywordflow">return</span> m_pNext; }</div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div>
+<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="preprocessor"> #ifdef SUPPORT_ARGB</span></div>
+<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="comment">// as above, but every 4th uint8_t is assumed to be alpha channel data, and will be skipped</span></div>
+<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordtype">void</span> <a class="code" href="class_c_l_e_d_controller.html#add284627121ffab140e083e84fadc37f">show</a>(<span class="keyword">const</span> <span class="keyword">struct</span> CARGB *data, <span class="keywordtype">int</span> nLeds, uint8_t brightness) {</div>
+<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <a class="code" href="class_c_l_e_d_controller.html#add284627121ffab140e083e84fadc37f">show</a>(data, nLeds, <a class="code" href="class_c_l_e_d_controller.html#af6173cca91ee446766cc15102990d7bb">getAdjustment</a>(brightness))</div>
+<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; }</div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;</div>
+<div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="class_c_l_e_d_controller.html#a5b08378b29f92c5def65175ec5334037"> 113</a></span>&#160; <a class="code" href="class_c_l_e_d_controller.html">CLEDController</a> &amp; <a class="code" href="class_c_l_e_d_controller.html#a5b08378b29f92c5def65175ec5334037">setLeds</a>(<a class="code" href="struct_c_r_g_b.html">CRGB</a> *data, <span class="keywordtype">int</span> nLeds) {</div>
+<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; m_Data = data;</div>
+<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; m_nLeds = nLeds;</div>
+<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; }</div>
+<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;</div>
+<div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="class_c_l_e_d_controller.html#a7b61c81e004c96ff670a2742057a5a52"> 120</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="class_c_l_e_d_controller.html#a7b61c81e004c96ff670a2742057a5a52">clearLedData</a>() {</div>
+<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">if</span>(m_Data) {</div>
+<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; memset8((<span class="keywordtype">void</span>*)m_Data, 0, <span class="keyword">sizeof</span>(<span class="keyword">struct</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>) * m_nLeds);</div>
+<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; }</div>
+<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; }</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;</div>
-<div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="class_c_l_e_d_controller.html#a5e86c45c89ebfb7b21f9045790302399"> 127</a></span>&#160; <a class="code" href="struct_c_r_g_b.html">CRGB</a>* <a class="code" href="class_c_l_e_d_controller.html#a5e86c45c89ebfb7b21f9045790302399">leds</a>() { <span class="keywordflow">return</span> m_Data; }</div>
+<div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="class_c_l_e_d_controller.html#a8840496d231f1fe0fa640970dc14db08"> 127</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="class_c_l_e_d_controller.html#a8840496d231f1fe0fa640970dc14db08">size</a>() { <span class="keywordflow">return</span> m_nLeds; }</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;</div>
-<div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="class_c_l_e_d_controller.html#a278a429964bec69b3c91486665e61c0a"> 130</a></span>&#160; <a class="code" href="struct_c_r_g_b.html">CRGB</a> &amp;<a class="code" href="class_c_l_e_d_controller.html#a278a429964bec69b3c91486665e61c0a">operator[]</a>(<span class="keywordtype">int</span> x) { <span class="keywordflow">return</span> m_Data[x]; }</div>
+<div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="class_c_l_e_d_controller.html#a5e86c45c89ebfb7b21f9045790302399"> 130</a></span>&#160; <a class="code" href="struct_c_r_g_b.html">CRGB</a>* <a class="code" href="class_c_l_e_d_controller.html#a5e86c45c89ebfb7b21f9045790302399">leds</a>() { <span class="keywordflow">return</span> m_Data; }</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;</div>
-<div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="class_c_l_e_d_controller.html#a0703d15ea35deaf94eed59ae27bc3517"> 133</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="class_c_l_e_d_controller.html">CLEDController</a> &amp; <a class="code" href="class_c_l_e_d_controller.html#a0703d15ea35deaf94eed59ae27bc3517">setDither</a>(uint8_t ditherMode = BINARY_DITHER) { m_DitherMode = ditherMode; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
-<div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="class_c_l_e_d_controller.html#a676f705adf93898739a405b85150a3e7"> 135</a></span>&#160; <span class="keyword">inline</span> uint8_t <a class="code" href="class_c_l_e_d_controller.html#a676f705adf93898739a405b85150a3e7">getDither</a>() { <span class="keywordflow">return</span> m_DitherMode; }</div>
-<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;</div>
-<div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="class_c_l_e_d_controller.html#a9620d0a629a6a3294c71f5f8dbfe91b8"> 138</a></span>&#160; <a class="code" href="class_c_l_e_d_controller.html">CLEDController</a> &amp; <a class="code" href="class_c_l_e_d_controller.html#a9620d0a629a6a3294c71f5f8dbfe91b8">setCorrection</a>(<a class="code" href="struct_c_r_g_b.html">CRGB</a> correction) { m_ColorCorrection = correction; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
-<div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="class_c_l_e_d_controller.html#a74c43977660742e8185fd666e5d66bf9"> 140</a></span>&#160; <a class="code" href="class_c_l_e_d_controller.html">CLEDController</a> &amp; <a class="code" href="class_c_l_e_d_controller.html#a74c43977660742e8185fd666e5d66bf9">setCorrection</a>(<a class="code" href="group___color_enums.html#gadf6bcba67c9573665af20788c4431ae8">LEDColorCorrection</a> correction) { m_ColorCorrection = correction; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
-<div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="class_c_l_e_d_controller.html#a168c661bb9b4a5dfc797b69d3900b26c"> 142</a></span>&#160; <a class="code" href="struct_c_r_g_b.html">CRGB</a> <a class="code" href="class_c_l_e_d_controller.html#a168c661bb9b4a5dfc797b69d3900b26c">getCorrection</a>() { <span class="keywordflow">return</span> m_ColorCorrection; }</div>
-<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;</div>
-<div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="class_c_l_e_d_controller.html#a69ac4a882bdc4a813ae957ddedb5a883"> 145</a></span>&#160; <a class="code" href="class_c_l_e_d_controller.html">CLEDController</a> &amp; <a class="code" href="class_c_l_e_d_controller.html#a69ac4a882bdc4a813ae957ddedb5a883">setTemperature</a>(<a class="code" href="struct_c_r_g_b.html">CRGB</a> temperature) { m_ColorTemperature = temperature; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
-<div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="class_c_l_e_d_controller.html#a1e6d35be39f9f67aacdb4709ea914ab4"> 147</a></span>&#160; <a class="code" href="class_c_l_e_d_controller.html">CLEDController</a> &amp; <a class="code" href="class_c_l_e_d_controller.html#a1e6d35be39f9f67aacdb4709ea914ab4">setTemperature</a>(<a class="code" href="group___color_enums.html#ga251e9e8dc2c7b981786b71706522b2a9">ColorTemperature</a> temperature) { m_ColorTemperature = temperature; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
-<div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="class_c_l_e_d_controller.html#afc94e9d029d7e59f56a4ab845f3de32d"> 149</a></span>&#160; <a class="code" href="struct_c_r_g_b.html">CRGB</a> <a class="code" href="class_c_l_e_d_controller.html#afc94e9d029d7e59f56a4ab845f3de32d">getTemperature</a>() { <span class="keywordflow">return</span> m_ColorTemperature; }</div>
-<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;</div>
-<div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="class_c_l_e_d_controller.html#af6173cca91ee446766cc15102990d7bb"> 152</a></span>&#160; <a class="code" href="struct_c_r_g_b.html">CRGB</a> <a class="code" href="class_c_l_e_d_controller.html#af6173cca91ee446766cc15102990d7bb">getAdjustment</a>(uint8_t scale) {</div>
-<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="preprocessor">#if defined(NO_CORRECTION) &amp;&amp; (NO_CORRECTION==1)</span></div>
-<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordflow">return</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>(scale,scale,scale);</div>
-<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;<span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <a class="code" href="struct_c_r_g_b.html">CRGB</a> adj(0,0,0);</div>
-<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;</div>
-<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">if</span>(scale &gt; 0) {</div>
-<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">for</span>(uint8_t i = 0; i &lt; 3; i++) {</div>
-<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; uint8_t cc = m_ColorCorrection.raw[i];</div>
-<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; uint8_t ct = m_ColorTemperature.raw[i];</div>
-<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">if</span>(cc &gt; 0 &amp;&amp; ct &gt; 0) {</div>
-<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; uint32_t work = (((uint32_t)cc)+1) * (((uint32_t)ct)+1) * scale;</div>
-<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; work /= 0x10000L;</div>
-<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; adj.raw[i] = work &amp; 0xFF;</div>
-<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; }</div>
-<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; }</div>
-<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; }</div>
-<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;</div>
-<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">return</span> adj;</div>
-<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; }</div>
-<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;</div>
-<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keyword">virtual</span> uint16_t getMaxRefreshRate()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> 0; }</div>
-<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;};</div>
+<div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="class_c_l_e_d_controller.html#a278a429964bec69b3c91486665e61c0a"> 133</a></span>&#160; <a class="code" href="struct_c_r_g_b.html">CRGB</a> &amp;<a class="code" href="class_c_l_e_d_controller.html#a278a429964bec69b3c91486665e61c0a">operator[]</a>(<span class="keywordtype">int</span> x) { <span class="keywordflow">return</span> m_Data[x]; }</div>
+<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;</div>
+<div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="class_c_l_e_d_controller.html#a0703d15ea35deaf94eed59ae27bc3517"> 136</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="class_c_l_e_d_controller.html">CLEDController</a> &amp; <a class="code" href="class_c_l_e_d_controller.html#a0703d15ea35deaf94eed59ae27bc3517">setDither</a>(uint8_t ditherMode = BINARY_DITHER) { m_DitherMode = ditherMode; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
+<div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="class_c_l_e_d_controller.html#a676f705adf93898739a405b85150a3e7"> 138</a></span>&#160; <span class="keyword">inline</span> uint8_t <a class="code" href="class_c_l_e_d_controller.html#a676f705adf93898739a405b85150a3e7">getDither</a>() { <span class="keywordflow">return</span> m_DitherMode; }</div>
+<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;</div>
+<div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="class_c_l_e_d_controller.html#a9620d0a629a6a3294c71f5f8dbfe91b8"> 141</a></span>&#160; <a class="code" href="class_c_l_e_d_controller.html">CLEDController</a> &amp; <a class="code" href="class_c_l_e_d_controller.html#a9620d0a629a6a3294c71f5f8dbfe91b8">setCorrection</a>(<a class="code" href="struct_c_r_g_b.html">CRGB</a> correction) { m_ColorCorrection = correction; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
+<div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="class_c_l_e_d_controller.html#a74c43977660742e8185fd666e5d66bf9"> 143</a></span>&#160; <a class="code" href="class_c_l_e_d_controller.html">CLEDController</a> &amp; <a class="code" href="class_c_l_e_d_controller.html#a74c43977660742e8185fd666e5d66bf9">setCorrection</a>(<a class="code" href="group___color_enums.html#gadf6bcba67c9573665af20788c4431ae8">LEDColorCorrection</a> correction) { m_ColorCorrection = correction; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
+<div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="class_c_l_e_d_controller.html#a168c661bb9b4a5dfc797b69d3900b26c"> 145</a></span>&#160; <a class="code" href="struct_c_r_g_b.html">CRGB</a> <a class="code" href="class_c_l_e_d_controller.html#a168c661bb9b4a5dfc797b69d3900b26c">getCorrection</a>() { <span class="keywordflow">return</span> m_ColorCorrection; }</div>
+<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;</div>
+<div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="class_c_l_e_d_controller.html#a69ac4a882bdc4a813ae957ddedb5a883"> 148</a></span>&#160; <a class="code" href="class_c_l_e_d_controller.html">CLEDController</a> &amp; <a class="code" href="class_c_l_e_d_controller.html#a69ac4a882bdc4a813ae957ddedb5a883">setTemperature</a>(<a class="code" href="struct_c_r_g_b.html">CRGB</a> temperature) { m_ColorTemperature = temperature; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
+<div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="class_c_l_e_d_controller.html#a1e6d35be39f9f67aacdb4709ea914ab4"> 150</a></span>&#160; <a class="code" href="class_c_l_e_d_controller.html">CLEDController</a> &amp; <a class="code" href="class_c_l_e_d_controller.html#a1e6d35be39f9f67aacdb4709ea914ab4">setTemperature</a>(<a class="code" href="group___color_enums.html#ga251e9e8dc2c7b981786b71706522b2a9">ColorTemperature</a> temperature) { m_ColorTemperature = temperature; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
+<div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="class_c_l_e_d_controller.html#afc94e9d029d7e59f56a4ab845f3de32d"> 152</a></span>&#160; <a class="code" href="struct_c_r_g_b.html">CRGB</a> <a class="code" href="class_c_l_e_d_controller.html#afc94e9d029d7e59f56a4ab845f3de32d">getTemperature</a>() { <span class="keywordflow">return</span> m_ColorTemperature; }</div>
+<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;</div>
+<div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="class_c_l_e_d_controller.html#af6173cca91ee446766cc15102990d7bb"> 155</a></span>&#160; <a class="code" href="struct_c_r_g_b.html">CRGB</a> <a class="code" href="class_c_l_e_d_controller.html#af6173cca91ee446766cc15102990d7bb">getAdjustment</a>(uint8_t scale) {</div>
+<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;<span class="preprocessor">#if defined(NO_CORRECTION) &amp;&amp; (NO_CORRECTION==1)</span></div>
+<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">return</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a>(scale,scale,scale);</div>
+<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;<span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <a class="code" href="struct_c_r_g_b.html">CRGB</a> adj(0,0,0);</div>
+<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;</div>
+<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">if</span>(scale &gt; 0) {</div>
+<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">for</span>(uint8_t i = 0; i &lt; 3; i++) {</div>
+<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; uint8_t cc = m_ColorCorrection.raw[i];</div>
+<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; uint8_t ct = m_ColorTemperature.raw[i];</div>
+<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">if</span>(cc &gt; 0 &amp;&amp; ct &gt; 0) {</div>
+<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; uint32_t work = (((uint32_t)cc)+1) * (((uint32_t)ct)+1) * scale;</div>
+<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; work /= 0x10000L;</div>
+<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; adj.raw[i] = work &amp; 0xFF;</div>
+<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; }</div>
+<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; }</div>
+<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; }</div>
+<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;</div>
+<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">return</span> adj;</div>
+<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; }</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;</div>
-<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="keyword">template</span>&lt;EOrder RGB_ORDER&gt;</div>
-<div class="line"><a name="l00181"></a><span class="lineno"><a class="line" href="struct_pixel_controller.html"> 181</a></span>&#160;<span class="keyword">struct </span><a class="code" href="struct_pixel_controller.html">PixelController</a> {</div>
-<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keyword">const</span> uint8_t *mData;</div>
-<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordtype">int</span> mLen;</div>
-<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; uint8_t d[3];</div>
-<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; uint8_t e[3];</div>
-<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <a class="code" href="struct_c_r_g_b.html">CRGB</a> mScale;</div>
-<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; uint8_t mAdvance;</div>
-<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;</div>
-<div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="struct_pixel_controller.html#aec44f7bfc391ebf4874f678a994eff71"> 190</a></span>&#160; <a class="code" href="struct_pixel_controller.html#aec44f7bfc391ebf4874f678a994eff71">PixelController</a>(<span class="keyword">const</span> <a class="code" href="struct_pixel_controller.html">PixelController</a> &amp; other) {</div>
-<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; d[0] = other.d[0];</div>
-<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; d[1] = other.d[1];</div>
-<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; d[2] = other.d[2];</div>
-<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; e[0] = other.e[0];</div>
-<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; e[1] = other.e[1];</div>
-<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; e[2] = other.e[2];</div>
-<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; mData = other.mData;</div>
-<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; mScale = other.mScale;</div>
-<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; mAdvance = other.mAdvance;</div>
-<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; mLen = other.mLen;</div>
-<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; }</div>
-<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;</div>
-<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;</div>
-<div class="line"><a name="l00212"></a><span class="lineno"><a class="line" href="struct_pixel_controller.html#a81403c8810658d3c41cb210703bbfc00"> 212</a></span>&#160; <a class="code" href="struct_pixel_controller.html#a81403c8810658d3c41cb210703bbfc00">PixelController</a>(<span class="keyword">const</span> uint8_t *d, <span class="keywordtype">int</span> len, <a class="code" href="struct_c_r_g_b.html">CRGB</a> &amp; s, EDitherMode dither = BINARY_DITHER, <span class="keywordtype">bool</span> advance=<span class="keyword">true</span>, uint8_t skip=0) : mData(d), mLen(len), mScale(s) {</div>
-<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <a class="code" href="struct_pixel_controller.html#a3e923be6212346c5ae98f7731d74c2e3">enable_dithering</a>(dither);</div>
-<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; mData += skip;</div>
-<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; mAdvance = (advance) ? 3+skip : 0;</div>
-<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; }</div>
-<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;</div>
-<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <a class="code" href="struct_pixel_controller.html#aec44f7bfc391ebf4874f678a994eff71">PixelController</a>(<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a> *d, <span class="keywordtype">int</span> len, <a class="code" href="struct_c_r_g_b.html">CRGB</a> &amp; s, EDitherMode dither = BINARY_DITHER) : mData((const uint8_t*)d), mLen(len), mScale(s) {</div>
-<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <a class="code" href="struct_pixel_controller.html#a3e923be6212346c5ae98f7731d74c2e3">enable_dithering</a>(dither);</div>
-<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; mAdvance = 3;</div>
-<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; }</div>
-<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;</div>
-<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <a class="code" href="struct_pixel_controller.html#aec44f7bfc391ebf4874f678a994eff71">PixelController</a>(<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a> &amp;d, <span class="keywordtype">int</span> len, <a class="code" href="struct_c_r_g_b.html">CRGB</a> &amp; s, EDitherMode dither = BINARY_DITHER) : mData((const uint8_t*)&amp;d), mLen(len), mScale(s) {</div>
-<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <a class="code" href="struct_pixel_controller.html#a3e923be6212346c5ae98f7731d74c2e3">enable_dithering</a>(dither);</div>
-<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; mAdvance = 0;</div>
-<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; }</div>
-<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;</div>
-<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;<span class="preprocessor">#ifdef SUPPORT_ARGB</span></div>
-<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <a class="code" href="struct_pixel_controller.html#aec44f7bfc391ebf4874f678a994eff71">PixelController</a>(<span class="keyword">const</span> CARGB &amp;d, <span class="keywordtype">int</span> len, <a class="code" href="struct_c_r_g_b.html">CRGB</a> &amp; s, EDitherMode dither = BINARY_DITHER) : mData((const uint8_t*)&amp;d), mLen(len), mScale(s) {</div>
-<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <a class="code" href="struct_pixel_controller.html#a3e923be6212346c5ae98f7731d74c2e3">enable_dithering</a>(dither);</div>
-<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="comment">// skip the A in CARGB</span></div>
-<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; mData += 1;</div>
-<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; mAdvance = 0;</div>
-<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; }</div>
-<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;</div>
-<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <a class="code" href="struct_pixel_controller.html#aec44f7bfc391ebf4874f678a994eff71">PixelController</a>(<span class="keyword">const</span> CARGB *d, <span class="keywordtype">int</span> len, <a class="code" href="struct_c_r_g_b.html">CRGB</a> &amp; s, EDitherMode dither = BINARY_DITHER) : mData((const uint8_t*)d), mLen(len), mScale(s) {</div>
-<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <a class="code" href="struct_pixel_controller.html#a3e923be6212346c5ae98f7731d74c2e3">enable_dithering</a>(dither);</div>
-<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="comment">// skip the A in CARGB</span></div>
-<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; mData += 1;</div>
-<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; mAdvance = 4;</div>
-<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; }</div>
-<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; </div>
-<div class="line"><a name="l00246"></a><span class="lineno"><a class="line" href="struct_pixel_controller.html#accb48b27c47c742a8b13f97ae1d82d32"> 246</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="struct_pixel_controller.html#accb48b27c47c742a8b13f97ae1d82d32">init_binary_dithering</a>() {</div>
-<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;<span class="preprocessor">#if !defined(NO_DITHERING) || (NO_DITHERING != 1)</span></div>
-<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;</div>
-<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="comment">// Set &#39;virtual bits&#39; of dithering to the highest level</span></div>
-<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="comment">// that is not likely to cause excessive flickering at</span></div>
-<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="comment">// low brightness levels + low update rates.</span></div>
-<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="comment">// These pre-set values are a little ambitious, since</span></div>
-<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="comment">// a 400Hz update rate for WS2811-family LEDs is only</span></div>
-<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="comment">// possible with 85 pixels or fewer.</span></div>
-<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="comment">// Once we have a &#39;number of milliseconds since last update&#39;</span></div>
-<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="comment">// value available here, we can quickly calculate the correct</span></div>
-<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="comment">// number of &#39;virtual bits&#39; on the fly with a couple of &#39;if&#39;</span></div>
-<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="comment">// statements -- no division required. At this point,</span></div>
-<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="comment">// the division is done at compile time, so there&#39;s no runtime</span></div>
-<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="comment">// cost, but the values are still hard-coded.</span></div>
-<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;<span class="preprocessor">#define MAX_LIKELY_UPDATE_RATE_HZ 400</span></div>
-<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;<span class="preprocessor">#define MIN_ACCEPTABLE_DITHER_RATE_HZ 50</span></div>
-<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;<span class="preprocessor">#define UPDATES_PER_FULL_DITHER_CYCLE (MAX_LIKELY_UPDATE_RATE_HZ / MIN_ACCEPTABLE_DITHER_RATE_HZ)</span></div>
-<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;<span class="preprocessor">#define RECOMMENDED_VIRTUAL_BITS ((UPDATES_PER_FULL_DITHER_CYCLE&gt;1) + \</span></div>
-<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;<span class="preprocessor"> (UPDATES_PER_FULL_DITHER_CYCLE&gt;2) + \</span></div>
-<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;<span class="preprocessor"> (UPDATES_PER_FULL_DITHER_CYCLE&gt;4) + \</span></div>
-<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;<span class="preprocessor"> (UPDATES_PER_FULL_DITHER_CYCLE&gt;8) + \</span></div>
-<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;<span class="preprocessor"> (UPDATES_PER_FULL_DITHER_CYCLE&gt;16) + \</span></div>
-<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;<span class="preprocessor"> (UPDATES_PER_FULL_DITHER_CYCLE&gt;32) + \</span></div>
-<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;<span class="preprocessor"> (UPDATES_PER_FULL_DITHER_CYCLE&gt;64) + \</span></div>
-<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;<span class="preprocessor"> (UPDATES_PER_FULL_DITHER_CYCLE&gt;128) )</span></div>
-<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;<span class="preprocessor">#define VIRTUAL_BITS RECOMMENDED_VIRTUAL_BITS</span></div>
-<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;</div>
-<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="comment">// R is the digther signal &#39;counter&#39;.</span></div>
-<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keyword">static</span> byte R = 0;</div>
-<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; R++;</div>
-<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;</div>
-<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="comment">// R is wrapped around at 2^ditherBits,</span></div>
-<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="comment">// so if ditherBits is 2, R will cycle through (0,1,2,3)</span></div>
-<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; byte ditherBits = VIRTUAL_BITS;</div>
-<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; R &amp;= (0x01 &lt;&lt; ditherBits) - 1;</div>
-<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;</div>
-<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="comment">// Q is the &quot;unscaled dither signal&quot; itself.</span></div>
-<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="comment">// It&#39;s initialized to the reversed bits of R.</span></div>
-<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="comment">// If &#39;ditherBits&#39; is 2, Q here will cycle through (0,128,64,192)</span></div>
-<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; byte Q = 0;</div>
-<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;</div>
-<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="comment">// Reverse bits in a byte</span></div>
-<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; {</div>
-<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">if</span>(R &amp; 0x01) { Q |= 0x80; }</div>
-<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">if</span>(R &amp; 0x02) { Q |= 0x40; }</div>
-<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keywordflow">if</span>(R &amp; 0x04) { Q |= 0x20; }</div>
-<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">if</span>(R &amp; 0x08) { Q |= 0x10; }</div>
-<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">if</span>(R &amp; 0x10) { Q |= 0x08; }</div>
-<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordflow">if</span>(R &amp; 0x20) { Q |= 0x04; }</div>
-<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordflow">if</span>(R &amp; 0x40) { Q |= 0x02; }</div>
-<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordflow">if</span>(R &amp; 0x80) { Q |= 0x01; }</div>
-<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; }</div>
-<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;</div>
-<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="comment">// Now we adjust Q to fall in the center of each range,</span></div>
-<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="comment">// instead of at the start of the range.</span></div>
-<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="comment">// If ditherBits is 2, Q will be (0, 128, 64, 192) at first,</span></div>
-<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="comment">// and this adjustment makes it (31, 159, 95, 223).</span></div>
-<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keywordflow">if</span>( ditherBits &lt; 8) {</div>
-<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; Q += 0x01 &lt;&lt; (7 - ditherBits);</div>
-<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; }</div>
-<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;</div>
-<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="comment">// D and E form the &quot;scaled dither signal&quot;</span></div>
-<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="comment">// which is added to pixel values to affect the</span></div>
-<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="comment">// actual dithering.</span></div>
-<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;</div>
-<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="comment">// Setup the initial D and E values</span></div>
-<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; 3; i++) {</div>
-<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; byte s = mScale.raw[i];</div>
-<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; e[i] = s ? (256/s) + 1 : 0;</div>
-<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; d[i] = <a class="code" href="group___scaling.html#ga6c160f8c36ce9b3c5eda68e4992010af">scale8</a>(Q, e[i]);</div>
-<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordflow">if</span>(e[i]) e[i]--;</div>
-<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; }</div>
-<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; }</div>
-<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;</div>
-<div class="line"><a name="l00323"></a><span class="lineno"><a class="line" href="struct_pixel_controller.html#a11aef85a0ef8a9276cd2e729d57aa49b"> 323</a></span>&#160; <a class="code" href="struct_pixel_controller.html#a11aef85a0ef8a9276cd2e729d57aa49b">__attribute__</a>((always_inline)) inline <span class="keywordtype">bool</span> has(<span class="keywordtype">int</span> n) {</div>
-<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="keywordflow">return</span> mLen &gt;= n;</div>
-<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; }</div>
-<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;</div>
-<div class="line"><a name="l00328"></a><span class="lineno"><a class="line" href="struct_pixel_controller.html#a3e923be6212346c5ae98f7731d74c2e3"> 328</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="struct_pixel_controller.html#a3e923be6212346c5ae98f7731d74c2e3">enable_dithering</a>(EDitherMode dither) {</div>
-<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="keywordflow">switch</span>(dither) {</div>
-<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordflow">case</span> BINARY_DITHER: <a class="code" href="struct_pixel_controller.html#accb48b27c47c742a8b13f97ae1d82d32">init_binary_dithering</a>(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keywordflow">default</span>: d[0]=d[1]=d[2]=e[0]=e[1]=e[2]=0; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; }</div>
-<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; }</div>
-<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;</div>
-<div class="line"><a name="l00336"></a><span class="lineno"><a class="line" href="struct_pixel_controller.html#afbe76a814e6bec02854dd4df167567b4"> 336</a></span>&#160; <a class="code" href="struct_pixel_controller.html#afbe76a814e6bec02854dd4df167567b4">__attribute__</a>((always_inline)) inline <span class="keywordtype">int</span> advanceBy() { <span class="keywordflow">return</span> mAdvance; }</div>
+<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keyword">virtual</span> uint16_t getMaxRefreshRate()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> 0; }</div>
+<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;};</div>
+<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;</div>
+<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;<span class="keyword">template</span>&lt;EOrder RGB_ORDER&gt;</div>
+<div class="line"><a name="l00184"></a><span class="lineno"><a class="line" href="struct_pixel_controller.html"> 184</a></span>&#160;<span class="keyword">struct </span><a class="code" href="struct_pixel_controller.html">PixelController</a> {</div>
+<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keyword">const</span> uint8_t *mData;</div>
+<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordtype">int</span> mLen;</div>
+<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; uint8_t d[3];</div>
+<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; uint8_t e[3];</div>
+<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <a class="code" href="struct_c_r_g_b.html">CRGB</a> mScale;</div>
+<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; uint8_t mAdvance;</div>
+<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;</div>
+<div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="struct_pixel_controller.html#aec44f7bfc391ebf4874f678a994eff71"> 193</a></span>&#160; <a class="code" href="struct_pixel_controller.html#aec44f7bfc391ebf4874f678a994eff71">PixelController</a>(<span class="keyword">const</span> <a class="code" href="struct_pixel_controller.html">PixelController</a> &amp; other) {</div>
+<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; d[0] = other.d[0];</div>
+<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; d[1] = other.d[1];</div>
+<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; d[2] = other.d[2];</div>
+<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; e[0] = other.e[0];</div>
+<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; e[1] = other.e[1];</div>
+<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; e[2] = other.e[2];</div>
+<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; mData = other.mData;</div>
+<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; mScale = other.mScale;</div>
+<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; mAdvance = other.mAdvance;</div>
+<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; mLen = other.mLen;</div>
+<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; }</div>
+<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;</div>
+<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;</div>
+<div class="line"><a name="l00215"></a><span class="lineno"><a class="line" href="struct_pixel_controller.html#a81403c8810658d3c41cb210703bbfc00"> 215</a></span>&#160; <a class="code" href="struct_pixel_controller.html#a81403c8810658d3c41cb210703bbfc00">PixelController</a>(<span class="keyword">const</span> uint8_t *d, <span class="keywordtype">int</span> len, <a class="code" href="struct_c_r_g_b.html">CRGB</a> &amp; s, EDitherMode dither = BINARY_DITHER, <span class="keywordtype">bool</span> advance=<span class="keyword">true</span>, uint8_t skip=0) : mData(d), mLen(len), mScale(s) {</div>
+<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <a class="code" href="struct_pixel_controller.html#a3e923be6212346c5ae98f7731d74c2e3">enable_dithering</a>(dither);</div>
+<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; mData += skip;</div>
+<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; mAdvance = (advance) ? 3+skip : 0;</div>
+<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; }</div>
+<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;</div>
+<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <a class="code" href="struct_pixel_controller.html#aec44f7bfc391ebf4874f678a994eff71">PixelController</a>(<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a> *d, <span class="keywordtype">int</span> len, <a class="code" href="struct_c_r_g_b.html">CRGB</a> &amp; s, EDitherMode dither = BINARY_DITHER) : mData((const uint8_t*)d), mLen(len), mScale(s) {</div>
+<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <a class="code" href="struct_pixel_controller.html#a3e923be6212346c5ae98f7731d74c2e3">enable_dithering</a>(dither);</div>
+<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; mAdvance = 3;</div>
+<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; }</div>
+<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;</div>
+<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <a class="code" href="struct_pixel_controller.html#aec44f7bfc391ebf4874f678a994eff71">PixelController</a>(<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a> &amp;d, <span class="keywordtype">int</span> len, <a class="code" href="struct_c_r_g_b.html">CRGB</a> &amp; s, EDitherMode dither = BINARY_DITHER) : mData((const uint8_t*)&amp;d), mLen(len), mScale(s) {</div>
+<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <a class="code" href="struct_pixel_controller.html#a3e923be6212346c5ae98f7731d74c2e3">enable_dithering</a>(dither);</div>
+<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; mAdvance = 0;</div>
+<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; }</div>
+<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;</div>
+<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;<span class="preprocessor">#ifdef SUPPORT_ARGB</span></div>
+<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <a class="code" href="struct_pixel_controller.html#aec44f7bfc391ebf4874f678a994eff71">PixelController</a>(<span class="keyword">const</span> CARGB &amp;d, <span class="keywordtype">int</span> len, <a class="code" href="struct_c_r_g_b.html">CRGB</a> &amp; s, EDitherMode dither = BINARY_DITHER) : mData((const uint8_t*)&amp;d), mLen(len), mScale(s) {</div>
+<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <a class="code" href="struct_pixel_controller.html#a3e923be6212346c5ae98f7731d74c2e3">enable_dithering</a>(dither);</div>
+<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="comment">// skip the A in CARGB</span></div>
+<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; mData += 1;</div>
+<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; mAdvance = 0;</div>
+<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; }</div>
+<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;</div>
+<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <a class="code" href="struct_pixel_controller.html#aec44f7bfc391ebf4874f678a994eff71">PixelController</a>(<span class="keyword">const</span> CARGB *d, <span class="keywordtype">int</span> len, <a class="code" href="struct_c_r_g_b.html">CRGB</a> &amp; s, EDitherMode dither = BINARY_DITHER) : mData((const uint8_t*)d), mLen(len), mScale(s) {</div>
+<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <a class="code" href="struct_pixel_controller.html#a3e923be6212346c5ae98f7731d74c2e3">enable_dithering</a>(dither);</div>
+<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="comment">// skip the A in CARGB</span></div>
+<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; mData += 1;</div>
+<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; mAdvance = 4;</div>
+<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; }</div>
+<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;</div>
+<div class="line"><a name="l00249"></a><span class="lineno"><a class="line" href="struct_pixel_controller.html#accb48b27c47c742a8b13f97ae1d82d32"> 249</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="struct_pixel_controller.html#accb48b27c47c742a8b13f97ae1d82d32">init_binary_dithering</a>() {</div>
+<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;<span class="preprocessor">#if !defined(NO_DITHERING) || (NO_DITHERING != 1)</span></div>
+<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;</div>
+<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="comment">// Set &#39;virtual bits&#39; of dithering to the highest level</span></div>
+<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="comment">// that is not likely to cause excessive flickering at</span></div>
+<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="comment">// low brightness levels + low update rates.</span></div>
+<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="comment">// These pre-set values are a little ambitious, since</span></div>
+<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="comment">// a 400Hz update rate for WS2811-family LEDs is only</span></div>
+<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="comment">// possible with 85 pixels or fewer.</span></div>
+<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="comment">// Once we have a &#39;number of milliseconds since last update&#39;</span></div>
+<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="comment">// value available here, we can quickly calculate the correct</span></div>
+<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="comment">// number of &#39;virtual bits&#39; on the fly with a couple of &#39;if&#39;</span></div>
+<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="comment">// statements -- no division required. At this point,</span></div>
+<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="comment">// the division is done at compile time, so there&#39;s no runtime</span></div>
+<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="comment">// cost, but the values are still hard-coded.</span></div>
+<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;<span class="preprocessor">#define MAX_LIKELY_UPDATE_RATE_HZ 400</span></div>
+<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;<span class="preprocessor">#define MIN_ACCEPTABLE_DITHER_RATE_HZ 50</span></div>
+<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;<span class="preprocessor">#define UPDATES_PER_FULL_DITHER_CYCLE (MAX_LIKELY_UPDATE_RATE_HZ / MIN_ACCEPTABLE_DITHER_RATE_HZ)</span></div>
+<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;<span class="preprocessor">#define RECOMMENDED_VIRTUAL_BITS ((UPDATES_PER_FULL_DITHER_CYCLE&gt;1) + \</span></div>
+<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;<span class="preprocessor"> (UPDATES_PER_FULL_DITHER_CYCLE&gt;2) + \</span></div>
+<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;<span class="preprocessor"> (UPDATES_PER_FULL_DITHER_CYCLE&gt;4) + \</span></div>
+<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;<span class="preprocessor"> (UPDATES_PER_FULL_DITHER_CYCLE&gt;8) + \</span></div>
+<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;<span class="preprocessor"> (UPDATES_PER_FULL_DITHER_CYCLE&gt;16) + \</span></div>
+<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;<span class="preprocessor"> (UPDATES_PER_FULL_DITHER_CYCLE&gt;32) + \</span></div>
+<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;<span class="preprocessor"> (UPDATES_PER_FULL_DITHER_CYCLE&gt;64) + \</span></div>
+<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;<span class="preprocessor"> (UPDATES_PER_FULL_DITHER_CYCLE&gt;128) )</span></div>
+<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;<span class="preprocessor">#define VIRTUAL_BITS RECOMMENDED_VIRTUAL_BITS</span></div>
+<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;</div>
+<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="comment">// R is the digther signal &#39;counter&#39;.</span></div>
+<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keyword">static</span> byte R = 0;</div>
+<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; R++;</div>
+<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;</div>
+<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="comment">// R is wrapped around at 2^ditherBits,</span></div>
+<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="comment">// so if ditherBits is 2, R will cycle through (0,1,2,3)</span></div>
+<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; byte ditherBits = VIRTUAL_BITS;</div>
+<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; R &amp;= (0x01 &lt;&lt; ditherBits) - 1;</div>
+<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;</div>
+<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="comment">// Q is the &quot;unscaled dither signal&quot; itself.</span></div>
+<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="comment">// It&#39;s initialized to the reversed bits of R.</span></div>
+<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="comment">// If &#39;ditherBits&#39; is 2, Q here will cycle through (0,128,64,192)</span></div>
+<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; byte Q = 0;</div>
+<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;</div>
+<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="comment">// Reverse bits in a byte</span></div>
+<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; {</div>
+<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">if</span>(R &amp; 0x01) { Q |= 0x80; }</div>
+<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">if</span>(R &amp; 0x02) { Q |= 0x40; }</div>
+<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordflow">if</span>(R &amp; 0x04) { Q |= 0x20; }</div>
+<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordflow">if</span>(R &amp; 0x08) { Q |= 0x10; }</div>
+<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordflow">if</span>(R &amp; 0x10) { Q |= 0x08; }</div>
+<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordflow">if</span>(R &amp; 0x20) { Q |= 0x04; }</div>
+<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">if</span>(R &amp; 0x40) { Q |= 0x02; }</div>
+<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">if</span>(R &amp; 0x80) { Q |= 0x01; }</div>
+<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; }</div>
+<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;</div>
+<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="comment">// Now we adjust Q to fall in the center of each range,</span></div>
+<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="comment">// instead of at the start of the range.</span></div>
+<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="comment">// If ditherBits is 2, Q will be (0, 128, 64, 192) at first,</span></div>
+<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="comment">// and this adjustment makes it (31, 159, 95, 223).</span></div>
+<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">if</span>( ditherBits &lt; 8) {</div>
+<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; Q += 0x01 &lt;&lt; (7 - ditherBits);</div>
+<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; }</div>
+<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;</div>
+<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="comment">// D and E form the &quot;scaled dither signal&quot;</span></div>
+<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="comment">// which is added to pixel values to affect the</span></div>
+<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="comment">// actual dithering.</span></div>
+<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;</div>
+<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="comment">// Setup the initial D and E values</span></div>
+<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; 3; i++) {</div>
+<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; byte s = mScale.raw[i];</div>
+<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; e[i] = s ? (256/s) + 1 : 0;</div>
+<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; d[i] = <a class="code" href="group___scaling.html#ga6c160f8c36ce9b3c5eda68e4992010af">scale8</a>(Q, e[i]);</div>
+<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keywordflow">if</span>(e[i]) e[i]--;</div>
+<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; }</div>
+<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; }</div>
+<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;</div>
+<div class="line"><a name="l00326"></a><span class="lineno"><a class="line" href="struct_pixel_controller.html#a11aef85a0ef8a9276cd2e729d57aa49b"> 326</a></span>&#160; <a class="code" href="struct_pixel_controller.html#a11aef85a0ef8a9276cd2e729d57aa49b">__attribute__</a>((always_inline)) inline <span class="keywordtype">bool</span> has(<span class="keywordtype">int</span> n) {</div>
+<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keywordflow">return</span> mLen &gt;= n;</div>
+<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; }</div>
+<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;</div>
+<div class="line"><a name="l00331"></a><span class="lineno"><a class="line" href="struct_pixel_controller.html#a3e923be6212346c5ae98f7731d74c2e3"> 331</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="struct_pixel_controller.html#a3e923be6212346c5ae98f7731d74c2e3">enable_dithering</a>(EDitherMode dither) {</div>
+<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordflow">switch</span>(dither) {</div>
+<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="keywordflow">case</span> BINARY_DITHER: <a class="code" href="struct_pixel_controller.html#accb48b27c47c742a8b13f97ae1d82d32">init_binary_dithering</a>(); <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keywordflow">default</span>: d[0]=d[1]=d[2]=e[0]=e[1]=e[2]=0; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; }</div>
+<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; }</div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;</div>
-<div class="line"><a name="l00339"></a><span class="lineno"><a class="line" href="struct_pixel_controller.html#a404558c7da7f3f6fae768bc45af9dc03"> 339</a></span>&#160; <a class="code" href="struct_pixel_controller.html#a404558c7da7f3f6fae768bc45af9dc03">__attribute__</a>((always_inline)) inline <span class="keywordtype">void</span> advanceData() { mData += mAdvance; mLen--;}</div>
+<div class="line"><a name="l00339"></a><span class="lineno"><a class="line" href="struct_pixel_controller.html#afbe76a814e6bec02854dd4df167567b4"> 339</a></span>&#160; <a class="code" href="struct_pixel_controller.html#afbe76a814e6bec02854dd4df167567b4">__attribute__</a>((always_inline)) inline <span class="keywordtype">int</span> advanceBy() { <span class="keywordflow">return</span> mAdvance; }</div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;</div>
-<div class="line"><a name="l00342"></a><span class="lineno"><a class="line" href="struct_pixel_controller.html#a900493d7e9e345d0cb6e602186151e73"> 342</a></span>&#160; <a class="code" href="struct_pixel_controller.html#a900493d7e9e345d0cb6e602186151e73">__attribute__</a>((always_inline)) inline <span class="keywordtype">void</span> stepDithering() {</div>
-<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="comment">// IF UPDATING HERE, BE SURE TO UPDATE THE ASM VERSION IN</span></div>
-<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="comment">// clockless_trinket.h!</span></div>
-<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; d[0] = e[0] - d[0];</div>
-<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; d[1] = e[1] - d[1];</div>
-<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; d[2] = e[2] - d[2];</div>
-<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; }</div>
-<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;</div>
-<div class="line"><a name="l00351"></a><span class="lineno"><a class="line" href="struct_pixel_controller.html#a9b0bc80097821046dbda7bbbf38dd7df"> 351</a></span>&#160; <a class="code" href="struct_pixel_controller.html#a9b0bc80097821046dbda7bbbf38dd7df">__attribute__</a>((always_inline)) inline <span class="keywordtype">void</span> preStepFirstByteDithering() {</div>
-<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; d[RO(0)] = e[RO(0)] - d[RO(0)];</div>
-<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; }</div>
-<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;</div>
-<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> SLOT&gt; <a class="code" href="struct_pixel_controller.html#a11aef85a0ef8a9276cd2e729d57aa49b">__attribute__</a>((always_inline)) inline static uint8_t loadByte(<a class="code" href="struct_pixel_controller.html">PixelController</a> &amp; pc) { <span class="keywordflow">return</span> pc.mData[RO(SLOT)]; }</div>
-<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> SLOT&gt; <a class="code" href="struct_pixel_controller.html#a11aef85a0ef8a9276cd2e729d57aa49b">__attribute__</a>((always_inline)) inline static uint8_t dither(<a class="code" href="struct_pixel_controller.html">PixelController</a> &amp; pc, uint8_t b) { <span class="keywordflow">return</span> b ? <a class="code" href="group___math.html#ga38e9f9a8830353f9cbfecad7c8758b1f">qadd8</a>(b, pc.d[RO(SLOT)]) : 0; }</div>
-<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> SLOT&gt; <a class="code" href="struct_pixel_controller.html#a11aef85a0ef8a9276cd2e729d57aa49b">__attribute__</a>((always_inline)) inline static uint8_t scale(<a class="code" href="struct_pixel_controller.html">PixelController</a> &amp; pc, uint8_t b) { <span class="keywordflow">return</span> <a class="code" href="group___scaling.html#ga6c160f8c36ce9b3c5eda68e4992010af">scale8</a>(b, pc.mScale.raw[RO(SLOT)]); }</div>
-<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;</div>
-<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="comment">// composite shortcut functions for loading, dithering, and scaling</span></div>
-<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> SLOT&gt; <a class="code" href="struct_pixel_controller.html#a11aef85a0ef8a9276cd2e729d57aa49b">__attribute__</a>((always_inline)) inline static uint8_t loadAndScale(<a class="code" href="struct_pixel_controller.html">PixelController</a> &amp; pc) { <span class="keywordflow">return</span> scale&lt;SLOT&gt;(pc, pc.dither&lt;SLOT&gt;(pc, pc.loadByte&lt;SLOT&gt;(pc))); }</div>
-<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> SLOT&gt; <a class="code" href="struct_pixel_controller.html#a11aef85a0ef8a9276cd2e729d57aa49b">__attribute__</a>((always_inline)) inline static uint8_t advanceAndLoadAndScale(<a class="code" href="struct_pixel_controller.html">PixelController</a> &amp; pc) { pc.advanceData(); <span class="keywordflow">return</span> pc.loadAndScale&lt;SLOT&gt;(pc); }</div>
-<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160;</div>
-<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="comment">// Helper functions to get around gcc stupidities</span></div>
-<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <a class="code" href="struct_pixel_controller.html#a11aef85a0ef8a9276cd2e729d57aa49b">__attribute__</a>((always_inline)) inline uint8_t loadAndScale0() { <span class="keywordflow">return</span> loadAndScale&lt;0&gt;(*this); }</div>
-<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <a class="code" href="struct_pixel_controller.html#a11aef85a0ef8a9276cd2e729d57aa49b">__attribute__</a>((always_inline)) inline uint8_t loadAndScale1() { <span class="keywordflow">return</span> loadAndScale&lt;1&gt;(*this); }</div>
-<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <a class="code" href="struct_pixel_controller.html#a11aef85a0ef8a9276cd2e729d57aa49b">__attribute__</a>((always_inline)) inline uint8_t loadAndScale2() { <span class="keywordflow">return</span> loadAndScale&lt;2&gt;(*this); }</div>
-<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <a class="code" href="struct_pixel_controller.html#a11aef85a0ef8a9276cd2e729d57aa49b">__attribute__</a>((always_inline)) inline uint8_t advanceAndLoadAndScale0() { <span class="keywordflow">return</span> advanceAndLoadAndScale&lt;0&gt;(*this); }</div>
-<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <a class="code" href="struct_pixel_controller.html#a11aef85a0ef8a9276cd2e729d57aa49b">__attribute__</a>((always_inline)) inline uint8_t stepAdvanceAndLoadAndScale0() { stepDithering(); <span class="keywordflow">return</span> advanceAndLoadAndScale&lt;0&gt;(*this); }</div>
-<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160;};</div>
-<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160;</div>
-<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;<span class="comment">// Pixel controller class. This is the class that we use to centralize pixel access in a block of data, including</span></div>
-<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;<span class="comment">// support for things like RGB reordering, scaling, dithering, skipping (for ARGB data), and eventually, we will</span></div>
-<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;<span class="comment">// centralize 8/12/16 conversions here as well.</span></div>
-<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160;<span class="keyword">template</span>&lt;<span class="keywordtype">int</span> LANES,<span class="keywordtype">int</span> MASK, EOrder RGB_ORDER&gt;</div>
-<div class="line"><a name="l00375"></a><span class="lineno"><a class="line" href="struct_multi_pixel_controller.html"> 375</a></span>&#160;<span class="keyword">struct </span><a class="code" href="struct_multi_pixel_controller.html">MultiPixelController</a> {</div>
-<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keyword">const</span> uint8_t *mData;</div>
-<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keywordtype">int</span> mLen;</div>
-<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; uint8_t d[3];</div>
-<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; uint8_t e[3];</div>
-<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <a class="code" href="struct_c_r_g_b.html">CRGB</a> mScale;</div>
-<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; int8_t mAdvance;</div>
-<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="keywordtype">int</span> mOffsets[LANES];</div>
-<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;</div>
-<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <a class="code" href="struct_multi_pixel_controller.html">MultiPixelController</a>(<span class="keyword">const</span> <a class="code" href="struct_multi_pixel_controller.html">MultiPixelController</a> &amp; other) {</div>
-<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; d[0] = other.d[0];</div>
-<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; d[1] = other.d[1];</div>
-<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; d[2] = other.d[2];</div>
-<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; e[0] = other.e[0];</div>
-<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; e[1] = other.e[1];</div>
-<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; e[2] = other.e[2];</div>
-<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; mData = other.mData;</div>
-<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; mScale = other.mScale;</div>
-<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; mAdvance = other.mAdvance;</div>
-<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; mLen = other.mLen;</div>
-<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; LANES; i++) { mOffsets[i] = other.mOffsets[i]; }</div>
-<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;</div>
-<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; }</div>
-<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160;</div>
-<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keywordtype">void</span> initOffsets(<span class="keywordtype">int</span> len) {</div>
-<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="keywordtype">int</span> nOffset = 0;</div>
-<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; LANES; i++) {</div>
-<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; mOffsets[i] = nOffset;</div>
-<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keywordflow">if</span>((1&lt;&lt;i) &amp; MASK) { nOffset += (len * mAdvance); }</div>
-<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; }</div>
-<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; }</div>
-<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160;</div>
-<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <a class="code" href="struct_multi_pixel_controller.html">MultiPixelController</a>(<span class="keyword">const</span> uint8_t *d, <span class="keywordtype">int</span> len, <a class="code" href="struct_c_r_g_b.html">CRGB</a> &amp; s, EDitherMode dither = BINARY_DITHER, <span class="keywordtype">bool</span> advance=<span class="keyword">true</span>, uint8_t skip=0) : mData(d), mLen(len), mScale(s) {</div>
-<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; enable_dithering(dither);</div>
-<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; mData += skip;</div>
-<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; mAdvance = (advance) ? 3+skip : 0;</div>
-<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; initOffsets(len);</div>
-<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; }</div>
-<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160;</div>
-<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <a class="code" href="struct_multi_pixel_controller.html">MultiPixelController</a>(<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a> *d, <span class="keywordtype">int</span> len, <a class="code" href="struct_c_r_g_b.html">CRGB</a> &amp; s, EDitherMode dither = BINARY_DITHER) : mData((<span class="keyword">const</span> uint8_t*)d), mLen(len), mScale(s) {</div>
-<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; enable_dithering(dither);</div>
-<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; mAdvance = 3;</div>
-<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; initOffsets(len);</div>
-<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; }</div>
-<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;</div>
-<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <a class="code" href="struct_multi_pixel_controller.html">MultiPixelController</a>(<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a> &amp;d, <span class="keywordtype">int</span> len, <a class="code" href="struct_c_r_g_b.html">CRGB</a> &amp; s, EDitherMode dither = BINARY_DITHER) : mData((<span class="keyword">const</span> uint8_t*)&amp;d), mLen(len), mScale(s) {</div>
-<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; enable_dithering(dither);</div>
-<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; mAdvance = 0;</div>
-<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; initOffsets(len);</div>
-<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; }</div>
-<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160;</div>
-<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160;<span class="preprocessor">#ifdef SUPPORT_ARGB</span></div>
-<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <a class="code" href="struct_multi_pixel_controller.html">MultiPixelController</a>(<span class="keyword">const</span> CARGB &amp;d, <span class="keywordtype">int</span> len, <a class="code" href="struct_c_r_g_b.html">CRGB</a> &amp; s, EDitherMode dither = BINARY_DITHER) : mData((<span class="keyword">const</span> uint8_t*)&amp;d), mLen(len), mScale(s) {</div>
-<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; enable_dithering(dither);</div>
-<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="comment">// skip the A in CARGB</span></div>
-<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; mData += 1;</div>
-<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; mAdvance = 0;</div>
-<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; initOffsets(len);</div>
-<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; }</div>
-<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160;</div>
-<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <a class="code" href="struct_multi_pixel_controller.html">MultiPixelController</a>(<span class="keyword">const</span> CARGB *d, <span class="keywordtype">int</span> len, <a class="code" href="struct_c_r_g_b.html">CRGB</a> &amp; s, EDitherMode dither = BINARY_DITHER) : mData((<span class="keyword">const</span> uint8_t*)d), mLen(len), mScale(s) {</div>
-<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; enable_dithering(dither);</div>
-<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="comment">// skip the A in CARGB</span></div>
-<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; mData += 1;</div>
-<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; mAdvance = 4;</div>
-<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; initOffsets(len);</div>
-<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; }</div>
-<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160;</div>
-<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <span class="keywordtype">void</span> init_binary_dithering() {</div>
-<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;<span class="preprocessor">#if !defined(NO_DITHERING) || (NO_DITHERING != 1)</span></div>
+<div class="line"><a name="l00342"></a><span class="lineno"><a class="line" href="struct_pixel_controller.html#a404558c7da7f3f6fae768bc45af9dc03"> 342</a></span>&#160; <a class="code" href="struct_pixel_controller.html#a404558c7da7f3f6fae768bc45af9dc03">__attribute__</a>((always_inline)) inline <span class="keywordtype">void</span> advanceData() { mData += mAdvance; mLen--;}</div>
+<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;</div>
+<div class="line"><a name="l00345"></a><span class="lineno"><a class="line" href="struct_pixel_controller.html#a900493d7e9e345d0cb6e602186151e73"> 345</a></span>&#160; <a class="code" href="struct_pixel_controller.html#a900493d7e9e345d0cb6e602186151e73">__attribute__</a>((always_inline)) inline <span class="keywordtype">void</span> stepDithering() {</div>
+<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="comment">// IF UPDATING HERE, BE SURE TO UPDATE THE ASM VERSION IN</span></div>
+<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="comment">// clockless_trinket.h!</span></div>
+<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; d[0] = e[0] - d[0];</div>
+<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; d[1] = e[1] - d[1];</div>
+<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; d[2] = e[2] - d[2];</div>
+<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; }</div>
+<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;</div>
+<div class="line"><a name="l00354"></a><span class="lineno"><a class="line" href="struct_pixel_controller.html#a9b0bc80097821046dbda7bbbf38dd7df"> 354</a></span>&#160; <a class="code" href="struct_pixel_controller.html#a9b0bc80097821046dbda7bbbf38dd7df">__attribute__</a>((always_inline)) inline <span class="keywordtype">void</span> preStepFirstByteDithering() {</div>
+<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; d[RO(0)] = e[RO(0)] - d[RO(0)];</div>
+<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; }</div>
+<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160;</div>
+<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> SLOT&gt; <a class="code" href="struct_pixel_controller.html#a11aef85a0ef8a9276cd2e729d57aa49b">__attribute__</a>((always_inline)) inline static uint8_t loadByte(<a class="code" href="struct_pixel_controller.html">PixelController</a> &amp; pc) { <span class="keywordflow">return</span> pc.mData[RO(SLOT)]; }</div>
+<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> SLOT&gt; <a class="code" href="struct_pixel_controller.html#a11aef85a0ef8a9276cd2e729d57aa49b">__attribute__</a>((always_inline)) inline static uint8_t dither(<a class="code" href="struct_pixel_controller.html">PixelController</a> &amp; pc, uint8_t b) { <span class="keywordflow">return</span> b ? <a class="code" href="group___math.html#ga38e9f9a8830353f9cbfecad7c8758b1f">qadd8</a>(b, pc.d[RO(SLOT)]) : 0; }</div>
+<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> SLOT&gt; <a class="code" href="struct_pixel_controller.html#a11aef85a0ef8a9276cd2e729d57aa49b">__attribute__</a>((always_inline)) inline static uint8_t scale(<a class="code" href="struct_pixel_controller.html">PixelController</a> &amp; pc, uint8_t b) { <span class="keywordflow">return</span> <a class="code" href="group___scaling.html#ga6c160f8c36ce9b3c5eda68e4992010af">scale8</a>(b, pc.mScale.raw[RO(SLOT)]); }</div>
+<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;</div>
+<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="comment">// composite shortcut functions for loading, dithering, and scaling</span></div>
+<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> SLOT&gt; <a class="code" href="struct_pixel_controller.html#a11aef85a0ef8a9276cd2e729d57aa49b">__attribute__</a>((always_inline)) inline static uint8_t loadAndScale(<a class="code" href="struct_pixel_controller.html">PixelController</a> &amp; pc) { <span class="keywordflow">return</span> scale&lt;SLOT&gt;(pc, pc.dither&lt;SLOT&gt;(pc, pc.loadByte&lt;SLOT&gt;(pc))); }</div>
+<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> SLOT&gt; <a class="code" href="struct_pixel_controller.html#a11aef85a0ef8a9276cd2e729d57aa49b">__attribute__</a>((always_inline)) inline static uint8_t advanceAndLoadAndScale(<a class="code" href="struct_pixel_controller.html">PixelController</a> &amp; pc) { pc.advanceData(); <span class="keywordflow">return</span> pc.loadAndScale&lt;SLOT&gt;(pc); }</div>
+<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;</div>
+<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="comment">// Helper functions to get around gcc stupidities</span></div>
+<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <a class="code" href="struct_pixel_controller.html#a11aef85a0ef8a9276cd2e729d57aa49b">__attribute__</a>((always_inline)) inline uint8_t loadAndScale0() { <span class="keywordflow">return</span> loadAndScale&lt;0&gt;(*this); }</div>
+<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <a class="code" href="struct_pixel_controller.html#a11aef85a0ef8a9276cd2e729d57aa49b">__attribute__</a>((always_inline)) inline uint8_t loadAndScale1() { <span class="keywordflow">return</span> loadAndScale&lt;1&gt;(*this); }</div>
+<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <a class="code" href="struct_pixel_controller.html#a11aef85a0ef8a9276cd2e729d57aa49b">__attribute__</a>((always_inline)) inline uint8_t loadAndScale2() { <span class="keywordflow">return</span> loadAndScale&lt;2&gt;(*this); }</div>
+<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <a class="code" href="struct_pixel_controller.html#a11aef85a0ef8a9276cd2e729d57aa49b">__attribute__</a>((always_inline)) inline uint8_t advanceAndLoadAndScale0() { <span class="keywordflow">return</span> advanceAndLoadAndScale&lt;0&gt;(*this); }</div>
+<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <a class="code" href="struct_pixel_controller.html#a11aef85a0ef8a9276cd2e729d57aa49b">__attribute__</a>((always_inline)) inline uint8_t stepAdvanceAndLoadAndScale0() { stepDithering(); <span class="keywordflow">return</span> advanceAndLoadAndScale&lt;0&gt;(*this); }</div>
+<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;};</div>
+<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;</div>
+<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160;<span class="comment">// Pixel controller class. This is the class that we use to centralize pixel access in a block of data, including</span></div>
+<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;<span class="comment">// support for things like RGB reordering, scaling, dithering, skipping (for ARGB data), and eventually, we will</span></div>
+<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160;<span class="comment">// centralize 8/12/16 conversions here as well.</span></div>
+<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160;<span class="keyword">template</span>&lt;<span class="keywordtype">int</span> LANES,<span class="keywordtype">int</span> MASK, EOrder RGB_ORDER&gt;</div>
+<div class="line"><a name="l00378"></a><span class="lineno"><a class="line" href="struct_multi_pixel_controller.html"> 378</a></span>&#160;<span class="keyword">struct </span><a class="code" href="struct_multi_pixel_controller.html">MultiPixelController</a> {</div>
+<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keyword">const</span> uint8_t *mData;</div>
+<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keywordtype">int</span> mLen;</div>
+<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; uint8_t d[3];</div>
+<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; uint8_t e[3];</div>
+<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <a class="code" href="struct_c_r_g_b.html">CRGB</a> mScale;</div>
+<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; int8_t mAdvance;</div>
+<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keywordtype">int</span> mOffsets[LANES];</div>
+<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;</div>
+<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <a class="code" href="struct_multi_pixel_controller.html">MultiPixelController</a>(<span class="keyword">const</span> <a class="code" href="struct_multi_pixel_controller.html">MultiPixelController</a> &amp; other) {</div>
+<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; d[0] = other.d[0];</div>
+<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; d[1] = other.d[1];</div>
+<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; d[2] = other.d[2];</div>
+<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; e[0] = other.e[0];</div>
+<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; e[1] = other.e[1];</div>
+<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; e[2] = other.e[2];</div>
+<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; mData = other.mData;</div>
+<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; mScale = other.mScale;</div>
+<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; mAdvance = other.mAdvance;</div>
+<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; mLen = other.mLen;</div>
+<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; LANES; i++) { mOffsets[i] = other.mOffsets[i]; }</div>
+<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160;</div>
+<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; }</div>
+<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160;</div>
+<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordtype">void</span> initOffsets(<span class="keywordtype">int</span> len) {</div>
+<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keywordtype">int</span> nOffset = 0;</div>
+<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; LANES; i++) {</div>
+<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; mOffsets[i] = nOffset;</div>
+<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keywordflow">if</span>((1&lt;&lt;i) &amp; MASK) { nOffset += (len * mAdvance); }</div>
+<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; }</div>
+<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; }</div>
+<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;</div>
+<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <a class="code" href="struct_multi_pixel_controller.html">MultiPixelController</a>(<span class="keyword">const</span> uint8_t *d, <span class="keywordtype">int</span> len, <a class="code" href="struct_c_r_g_b.html">CRGB</a> &amp; s, EDitherMode dither = BINARY_DITHER, <span class="keywordtype">bool</span> advance=<span class="keyword">true</span>, uint8_t skip=0) : mData(d), mLen(len), mScale(s) {</div>
+<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; enable_dithering(dither);</div>
+<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; mData += skip;</div>
+<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; mAdvance = (advance) ? 3+skip : 0;</div>
+<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; initOffsets(len);</div>
+<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; }</div>
+<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160;</div>
+<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <a class="code" href="struct_multi_pixel_controller.html">MultiPixelController</a>(<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a> *d, <span class="keywordtype">int</span> len, <a class="code" href="struct_c_r_g_b.html">CRGB</a> &amp; s, EDitherMode dither = BINARY_DITHER) : mData((<span class="keyword">const</span> uint8_t*)d), mLen(len), mScale(s) {</div>
+<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; enable_dithering(dither);</div>
+<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; mAdvance = 3;</div>
+<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; initOffsets(len);</div>
+<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; }</div>
+<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;</div>
+<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <a class="code" href="struct_multi_pixel_controller.html">MultiPixelController</a>(<span class="keyword">const</span> <a class="code" href="struct_c_r_g_b.html">CRGB</a> &amp;d, <span class="keywordtype">int</span> len, <a class="code" href="struct_c_r_g_b.html">CRGB</a> &amp; s, EDitherMode dither = BINARY_DITHER) : mData((<span class="keyword">const</span> uint8_t*)&amp;d), mLen(len), mScale(s) {</div>
+<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; enable_dithering(dither);</div>
+<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; mAdvance = 0;</div>
+<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; initOffsets(len);</div>
+<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; }</div>
+<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;</div>
+<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160;<span class="preprocessor">#ifdef SUPPORT_ARGB</span></div>
+<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <a class="code" href="struct_multi_pixel_controller.html">MultiPixelController</a>(<span class="keyword">const</span> CARGB &amp;d, <span class="keywordtype">int</span> len, <a class="code" href="struct_c_r_g_b.html">CRGB</a> &amp; s, EDitherMode dither = BINARY_DITHER) : mData((<span class="keyword">const</span> uint8_t*)&amp;d), mLen(len), mScale(s) {</div>
+<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; enable_dithering(dither);</div>
+<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="comment">// skip the A in CARGB</span></div>
+<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; mData += 1;</div>
+<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; mAdvance = 0;</div>
+<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; initOffsets(len);</div>
+<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; }</div>
+<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160;</div>
+<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <a class="code" href="struct_multi_pixel_controller.html">MultiPixelController</a>(<span class="keyword">const</span> CARGB *d, <span class="keywordtype">int</span> len, <a class="code" href="struct_c_r_g_b.html">CRGB</a> &amp; s, EDitherMode dither = BINARY_DITHER) : mData((<span class="keyword">const</span> uint8_t*)d), mLen(len), mScale(s) {</div>
+<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; enable_dithering(dither);</div>
+<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="comment">// skip the A in CARGB</span></div>
+<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; mData += 1;</div>
+<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; mAdvance = 4;</div>
+<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; initOffsets(len);</div>
+<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; }</div>
+<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160;</div>
-<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="comment">// Set &#39;virtual bits&#39; of dithering to the highest level</span></div>
-<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <span class="comment">// that is not likely to cause excessive flickering at</span></div>
-<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="comment">// low brightness levels + low update rates.</span></div>
-<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <span class="comment">// These pre-set values are a little ambitious, since</span></div>
-<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="comment">// a 400Hz update rate for WS2811-family LEDs is only</span></div>
-<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="comment">// possible with 85 pixels or fewer.</span></div>
-<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="comment">// Once we have a &#39;number of milliseconds since last update&#39;</span></div>
-<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="comment">// value available here, we can quickly calculate the correct</span></div>
-<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <span class="comment">// number of &#39;virtual bits&#39; on the fly with a couple of &#39;if&#39;</span></div>
-<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <span class="comment">// statements -- no division required. At this point,</span></div>
-<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="comment">// the division is done at compile time, so there&#39;s no runtime</span></div>
-<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <span class="comment">// cost, but the values are still hard-coded.</span></div>
-<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;<span class="preprocessor">#define MAX_LIKELY_UPDATE_RATE_HZ 400</span></div>
-<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160;<span class="preprocessor">#define MIN_ACCEPTABLE_DITHER_RATE_HZ 50</span></div>
-<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160;<span class="preprocessor">#define UPDATES_PER_FULL_DITHER_CYCLE (MAX_LIKELY_UPDATE_RATE_HZ / MIN_ACCEPTABLE_DITHER_RATE_HZ)</span></div>
-<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;<span class="preprocessor">#define RECOMMENDED_VIRTUAL_BITS ((UPDATES_PER_FULL_DITHER_CYCLE&gt;1) + \</span></div>
-<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;<span class="preprocessor"> (UPDATES_PER_FULL_DITHER_CYCLE&gt;2) + \</span></div>
-<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160;<span class="preprocessor"> (UPDATES_PER_FULL_DITHER_CYCLE&gt;4) + \</span></div>
-<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;<span class="preprocessor"> (UPDATES_PER_FULL_DITHER_CYCLE&gt;8) + \</span></div>
-<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;<span class="preprocessor"> (UPDATES_PER_FULL_DITHER_CYCLE&gt;16) + \</span></div>
-<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160;<span class="preprocessor"> (UPDATES_PER_FULL_DITHER_CYCLE&gt;32) + \</span></div>
-<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;<span class="preprocessor"> (UPDATES_PER_FULL_DITHER_CYCLE&gt;64) + \</span></div>
-<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160;<span class="preprocessor"> (UPDATES_PER_FULL_DITHER_CYCLE&gt;128) )</span></div>
-<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160;<span class="preprocessor">#define VIRTUAL_BITS RECOMMENDED_VIRTUAL_BITS</span></div>
-<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160;</div>
-<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="comment">// R is the digther signal &#39;counter&#39;.</span></div>
-<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keyword">static</span> byte R = 0;</div>
-<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; R++;</div>
-<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;</div>
-<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="comment">// R is wrapped around at 2^ditherBits,</span></div>
-<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="comment">// so if ditherBits is 2, R will cycle through (0,1,2,3)</span></div>
-<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; byte ditherBits = VIRTUAL_BITS;</div>
-<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; R &amp;= (0x01 &lt;&lt; ditherBits) - 1;</div>
-<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160;</div>
-<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <span class="comment">// Q is the &quot;unscaled dither signal&quot; itself.</span></div>
-<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="comment">// It&#39;s initialized to the reversed bits of R.</span></div>
-<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="comment">// If &#39;ditherBits&#39; is 2, Q here will cycle through (0,128,64,192)</span></div>
-<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; byte Q = 0;</div>
-<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160;</div>
-<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="comment">// Reverse bits in a byte</span></div>
-<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; {</div>
-<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keywordflow">if</span>(R &amp; 0x01) { Q |= 0x80; }</div>
-<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <span class="keywordflow">if</span>(R &amp; 0x02) { Q |= 0x40; }</div>
-<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="keywordflow">if</span>(R &amp; 0x04) { Q |= 0x20; }</div>
-<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keywordflow">if</span>(R &amp; 0x08) { Q |= 0x10; }</div>
-<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="keywordflow">if</span>(R &amp; 0x10) { Q |= 0x08; }</div>
-<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keywordflow">if</span>(R &amp; 0x20) { Q |= 0x04; }</div>
-<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keywordflow">if</span>(R &amp; 0x40) { Q |= 0x02; }</div>
-<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="keywordflow">if</span>(R &amp; 0x80) { Q |= 0x01; }</div>
-<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; }</div>
-<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160;</div>
-<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="comment">// Now we adjust Q to fall in the center of each range,</span></div>
-<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="comment">// instead of at the start of the range.</span></div>
-<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <span class="comment">// If ditherBits is 2, Q will be (0, 128, 64, 192) at first,</span></div>
-<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="comment">// and this adjustment makes it (31, 159, 95, 223).</span></div>
-<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="keywordflow">if</span>( ditherBits &lt; 8) {</div>
-<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; Q += 0x01 &lt;&lt; (7 - ditherBits);</div>
-<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; }</div>
-<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160;</div>
-<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="comment">// D and E form the &quot;scaled dither signal&quot;</span></div>
-<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; <span class="comment">// which is added to pixel values to affect the</span></div>
-<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <span class="comment">// actual dithering.</span></div>
-<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;</div>
-<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <span class="comment">// Setup the initial D and E values</span></div>
-<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; 3; i++) {</div>
-<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; byte s = mScale.raw[i];</div>
-<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; e[i] = s ? (256/s) + 1 : 0;</div>
-<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; d[i] = <a class="code" href="group___scaling.html#ga6c160f8c36ce9b3c5eda68e4992010af">scale8</a>(Q, e[i]);</div>
-<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="keywordflow">if</span>(e[i]) e[i]--;</div>
-<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; }</div>
-<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; }</div>
-<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160;</div>
-<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="comment">// Do we have n pixels left to process?</span></div>
-<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; __attribute__((always_inline)) <span class="keyword">inline</span> <span class="keywordtype">bool</span> has(<span class="keywordtype">int</span> n) {</div>
-<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="keywordflow">return</span> mLen &gt;= n;</div>
-<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; }</div>
-<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160;</div>
-<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <span class="comment">// toggle dithering enable</span></div>
-<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; <span class="keywordtype">void</span> enable_dithering(EDitherMode dither) {</div>
-<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <span class="keywordflow">switch</span>(dither) {</div>
-<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <span class="keywordflow">case</span> BINARY_DITHER: init_binary_dithering(); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="keywordflow">default</span>: d[0]=d[1]=d[2]=e[0]=e[1]=e[2]=0; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; }</div>
-<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; }</div>
-<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160;</div>
-<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <span class="comment">// get the amount to advance the pointer by</span></div>
-<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; __attribute__((always_inline)) <span class="keyword">inline</span> <span class="keywordtype">int</span> advanceBy() { <span class="keywordflow">return</span> mAdvance; }</div>
+<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="keywordtype">void</span> init_binary_dithering() {</div>
+<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160;<span class="preprocessor">#if !defined(NO_DITHERING) || (NO_DITHERING != 1)</span></div>
+<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160;</div>
+<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <span class="comment">// Set &#39;virtual bits&#39; of dithering to the highest level</span></div>
+<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="comment">// that is not likely to cause excessive flickering at</span></div>
+<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="comment">// low brightness levels + low update rates.</span></div>
+<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="comment">// These pre-set values are a little ambitious, since</span></div>
+<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="comment">// a 400Hz update rate for WS2811-family LEDs is only</span></div>
+<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <span class="comment">// possible with 85 pixels or fewer.</span></div>
+<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <span class="comment">// Once we have a &#39;number of milliseconds since last update&#39;</span></div>
+<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="comment">// value available here, we can quickly calculate the correct</span></div>
+<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <span class="comment">// number of &#39;virtual bits&#39; on the fly with a couple of &#39;if&#39;</span></div>
+<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="comment">// statements -- no division required. At this point,</span></div>
+<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <span class="comment">// the division is done at compile time, so there&#39;s no runtime</span></div>
+<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="comment">// cost, but the values are still hard-coded.</span></div>
+<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;<span class="preprocessor">#define MAX_LIKELY_UPDATE_RATE_HZ 400</span></div>
+<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;<span class="preprocessor">#define MIN_ACCEPTABLE_DITHER_RATE_HZ 50</span></div>
+<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160;<span class="preprocessor">#define UPDATES_PER_FULL_DITHER_CYCLE (MAX_LIKELY_UPDATE_RATE_HZ / MIN_ACCEPTABLE_DITHER_RATE_HZ)</span></div>
+<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;<span class="preprocessor">#define RECOMMENDED_VIRTUAL_BITS ((UPDATES_PER_FULL_DITHER_CYCLE&gt;1) + \</span></div>
+<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;<span class="preprocessor"> (UPDATES_PER_FULL_DITHER_CYCLE&gt;2) + \</span></div>
+<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160;<span class="preprocessor"> (UPDATES_PER_FULL_DITHER_CYCLE&gt;4) + \</span></div>
+<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;<span class="preprocessor"> (UPDATES_PER_FULL_DITHER_CYCLE&gt;8) + \</span></div>
+<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160;<span class="preprocessor"> (UPDATES_PER_FULL_DITHER_CYCLE&gt;16) + \</span></div>
+<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160;<span class="preprocessor"> (UPDATES_PER_FULL_DITHER_CYCLE&gt;32) + \</span></div>
+<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160;<span class="preprocessor"> (UPDATES_PER_FULL_DITHER_CYCLE&gt;64) + \</span></div>
+<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;<span class="preprocessor"> (UPDATES_PER_FULL_DITHER_CYCLE&gt;128) )</span></div>
+<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160;<span class="preprocessor">#define VIRTUAL_BITS RECOMMENDED_VIRTUAL_BITS</span></div>
+<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160;</div>
+<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="comment">// R is the digther signal &#39;counter&#39;.</span></div>
+<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keyword">static</span> byte R = 0;</div>
+<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; R++;</div>
+<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160;</div>
+<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="comment">// R is wrapped around at 2^ditherBits,</span></div>
+<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="comment">// so if ditherBits is 2, R will cycle through (0,1,2,3)</span></div>
+<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; byte ditherBits = VIRTUAL_BITS;</div>
+<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; R &amp;= (0x01 &lt;&lt; ditherBits) - 1;</div>
+<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160;</div>
+<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="comment">// Q is the &quot;unscaled dither signal&quot; itself.</span></div>
+<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="comment">// It&#39;s initialized to the reversed bits of R.</span></div>
+<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="comment">// If &#39;ditherBits&#39; is 2, Q here will cycle through (0,128,64,192)</span></div>
+<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; byte Q = 0;</div>
+<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160;</div>
+<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <span class="comment">// Reverse bits in a byte</span></div>
+<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; {</div>
+<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keywordflow">if</span>(R &amp; 0x01) { Q |= 0x80; }</div>
+<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="keywordflow">if</span>(R &amp; 0x02) { Q |= 0x40; }</div>
+<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keywordflow">if</span>(R &amp; 0x04) { Q |= 0x20; }</div>
+<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keywordflow">if</span>(R &amp; 0x08) { Q |= 0x10; }</div>
+<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="keywordflow">if</span>(R &amp; 0x10) { Q |= 0x08; }</div>
+<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="keywordflow">if</span>(R &amp; 0x20) { Q |= 0x04; }</div>
+<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keywordflow">if</span>(R &amp; 0x40) { Q |= 0x02; }</div>
+<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keywordflow">if</span>(R &amp; 0x80) { Q |= 0x01; }</div>
+<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; }</div>
+<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;</div>
+<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="comment">// Now we adjust Q to fall in the center of each range,</span></div>
+<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="comment">// instead of at the start of the range.</span></div>
+<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="comment">// If ditherBits is 2, Q will be (0, 128, 64, 192) at first,</span></div>
+<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <span class="comment">// and this adjustment makes it (31, 159, 95, 223).</span></div>
+<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keywordflow">if</span>( ditherBits &lt; 8) {</div>
+<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; Q += 0x01 &lt;&lt; (7 - ditherBits);</div>
+<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; }</div>
+<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160;</div>
+<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <span class="comment">// D and E form the &quot;scaled dither signal&quot;</span></div>
+<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <span class="comment">// which is added to pixel values to affect the</span></div>
+<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="comment">// actual dithering.</span></div>
+<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160;</div>
+<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="comment">// Setup the initial D and E values</span></div>
+<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; 3; i++) {</div>
+<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; byte s = mScale.raw[i];</div>
+<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; e[i] = s ? (256/s) + 1 : 0;</div>
+<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; d[i] = <a class="code" href="group___scaling.html#ga6c160f8c36ce9b3c5eda68e4992010af">scale8</a>(Q, e[i]);</div>
+<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <span class="keywordflow">if</span>(e[i]) e[i]--;</div>
+<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; }</div>
+<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; }</div>
+<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160;</div>
+<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="comment">// Do we have n pixels left to process?</span></div>
+<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; __attribute__((always_inline)) <span class="keyword">inline</span> <span class="keywordtype">bool</span> has(<span class="keywordtype">int</span> n) {</div>
+<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <span class="keywordflow">return</span> mLen &gt;= n;</div>
+<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; }</div>
+<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160;</div>
+<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <span class="comment">// toggle dithering enable</span></div>
+<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="keywordtype">void</span> enable_dithering(EDitherMode dither) {</div>
+<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <span class="keywordflow">switch</span>(dither) {</div>
+<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="keywordflow">case</span> BINARY_DITHER: init_binary_dithering(); <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="keywordflow">default</span>: d[0]=d[1]=d[2]=e[0]=e[1]=e[2]=0; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; }</div>
+<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; }</div>
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160;</div>
-<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <span class="comment">// advance the data pointer forward, adjust position counter</span></div>
-<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; __attribute__((always_inline)) <span class="keyword">inline</span> <span class="keywordtype">void</span> advanceData() { mData += mAdvance; mLen--;}</div>
+<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <span class="comment">// get the amount to advance the pointer by</span></div>
+<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; __attribute__((always_inline)) <span class="keyword">inline</span> <span class="keywordtype">int</span> advanceBy() { <span class="keywordflow">return</span> mAdvance; }</div>
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160;</div>
-<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <span class="comment">// step the dithering forward</span></div>
-<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; __attribute__((always_inline)) <span class="keyword">inline</span> <span class="keywordtype">void</span> stepDithering() {</div>
-<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; <span class="comment">// IF UPDATING HERE, BE SURE TO UPDATE THE ASM VERSION IN</span></div>
-<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <span class="comment">// clockless_trinket.h!</span></div>
-<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; d[0] = e[0] - d[0];</div>
-<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; d[1] = e[1] - d[1];</div>
-<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; d[2] = e[2] - d[2];</div>
-<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; }</div>
-<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160;</div>
-<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <span class="comment">// Some chipsets pre-cycle the first byte, which means we want to cycle byte 0&#39;s dithering separately</span></div>
-<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; __attribute__((always_inline)) <span class="keyword">inline</span> <span class="keywordtype">void</span> preStepFirstByteDithering() {</div>
-<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; d[RO(0)] = e[RO(0)] - d[RO(0)];</div>
-<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; }</div>
-<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160;</div>
-<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> SLOT&gt; __attribute__((always_inline)) <span class="keyword">inline</span> <span class="keyword">static</span> uint8_t loadByte(<a class="code" href="struct_multi_pixel_controller.html">MultiPixelController</a> &amp; pc, <span class="keywordtype">int</span> lane) { <span class="keywordflow">return</span> pc.mData[pc.mOffsets[lane] + RO(SLOT)]; }</div>
-<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> SLOT&gt; __attribute__((always_inline)) <span class="keyword">inline</span> <span class="keyword">static</span> uint8_t dither(<a class="code" href="struct_multi_pixel_controller.html">MultiPixelController</a> &amp; pc, uint8_t b) { <span class="keywordflow">return</span> b ? <a class="code" href="group___math.html#ga38e9f9a8830353f9cbfecad7c8758b1f">qadd8</a>(b, pc.d[RO(SLOT)]) : 0; }</div>
-<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> SLOT&gt; __attribute__((always_inline)) <span class="keyword">inline</span> <span class="keyword">static</span> uint8_t dither(<a class="code" href="struct_multi_pixel_controller.html">MultiPixelController</a> &amp; pc, uint8_t b, uint8_t d) { <span class="keywordflow">return</span> b ? <a class="code" href="group___math.html#ga38e9f9a8830353f9cbfecad7c8758b1f">qadd8</a>(b,d) : 0; }</div>
-<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> SLOT&gt; __attribute__((always_inline)) <span class="keyword">inline</span> <span class="keyword">static</span> uint8_t scale(<a class="code" href="struct_multi_pixel_controller.html">MultiPixelController</a> &amp; pc, uint8_t b) { <span class="keywordflow">return</span> <a class="code" href="group___scaling.html#ga6c160f8c36ce9b3c5eda68e4992010af">scale8</a>(b, pc.mScale.raw[RO(SLOT)]); }</div>
-<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> SLOT&gt; __attribute__((always_inline)) <span class="keyword">inline</span> <span class="keyword">static</span> uint8_t scale(<a class="code" href="struct_multi_pixel_controller.html">MultiPixelController</a> &amp; pc, uint8_t b, uint8_t scale) { <span class="keywordflow">return</span> <a class="code" href="group___scaling.html#ga6c160f8c36ce9b3c5eda68e4992010af">scale8</a>(b, scale); }</div>
-<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160;</div>
-<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="comment">// composite shortcut functions for loading, dithering, and scaling</span></div>
-<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> SLOT&gt; __attribute__((always_inline)) <span class="keyword">inline</span> <span class="keyword">static</span> uint8_t loadAndScale(<a class="code" href="struct_multi_pixel_controller.html">MultiPixelController</a> &amp; pc, <span class="keywordtype">int</span> lane) { <span class="keywordflow">return</span> scale&lt;SLOT&gt;(pc, pc.dither&lt;SLOT&gt;(pc, pc.loadByte&lt;SLOT&gt;(pc, lane))); }</div>
-<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> SLOT&gt; __attribute__((always_inline)) <span class="keyword">inline</span> <span class="keyword">static</span> uint8_t loadAndScale(<a class="code" href="struct_multi_pixel_controller.html">MultiPixelController</a> &amp; pc, <span class="keywordtype">int</span> lane, uint8_t d, uint8_t scale) { <span class="keywordflow">return</span> <a class="code" href="group___scaling.html#ga6c160f8c36ce9b3c5eda68e4992010af">scale8</a>(pc.dither&lt;SLOT&gt;(pc, pc.loadByte&lt;SLOT&gt;(pc, lane), d), scale); }</div>
-<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> SLOT&gt; __attribute__((always_inline)) <span class="keyword">inline</span> <span class="keyword">static</span> uint8_t loadAndScale(<a class="code" href="struct_multi_pixel_controller.html">MultiPixelController</a> &amp; pc, <span class="keywordtype">int</span> lane, uint8_t scale) { <span class="keywordflow">return</span> <a class="code" href="group___scaling.html#ga6c160f8c36ce9b3c5eda68e4992010af">scale8</a>(pc.loadByte&lt;SLOT&gt;(pc, lane), scale); }</div>
-<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> SLOT&gt; __attribute__((always_inline)) <span class="keyword">inline</span> <span class="keyword">static</span> uint8_t advanceAndLoadAndScale(<a class="code" href="struct_multi_pixel_controller.html">MultiPixelController</a> &amp; pc, <span class="keywordtype">int</span> lane) { pc.advanceData(); <span class="keywordflow">return</span> pc.loadAndScale&lt;SLOT&gt;(pc, lane); }</div>
-<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160;</div>
-<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> SLOT&gt; __attribute__((always_inline)) <span class="keyword">inline</span> <span class="keyword">static</span> uint8_t getd(<a class="code" href="struct_multi_pixel_controller.html">MultiPixelController</a> &amp; pc) { <span class="keywordflow">return</span> pc.d[RO(SLOT)]; }</div>
-<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> SLOT&gt; __attribute__((always_inline)) <span class="keyword">inline</span> <span class="keyword">static</span> uint8_t getscale(<a class="code" href="struct_multi_pixel_controller.html">MultiPixelController</a> &amp; pc) { <span class="keywordflow">return</span> pc.mScale.raw[RO(SLOT)]; }</div>
+<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <span class="comment">// advance the data pointer forward, adjust position counter</span></div>
+<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; __attribute__((always_inline)) <span class="keyword">inline</span> <span class="keywordtype">void</span> advanceData() { mData += mAdvance; mLen--;}</div>
+<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160;</div>
+<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <span class="comment">// step the dithering forward</span></div>
+<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; __attribute__((always_inline)) <span class="keyword">inline</span> <span class="keywordtype">void</span> stepDithering() {</div>
+<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <span class="comment">// IF UPDATING HERE, BE SURE TO UPDATE THE ASM VERSION IN</span></div>
+<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="comment">// clockless_trinket.h!</span></div>
+<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; d[0] = e[0] - d[0];</div>
+<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; d[1] = e[1] - d[1];</div>
+<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; d[2] = e[2] - d[2];</div>
+<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; }</div>
+<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160;</div>
+<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <span class="comment">// Some chipsets pre-cycle the first byte, which means we want to cycle byte 0&#39;s dithering separately</span></div>
+<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; __attribute__((always_inline)) <span class="keyword">inline</span> <span class="keywordtype">void</span> preStepFirstByteDithering() {</div>
+<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; d[RO(0)] = e[RO(0)] - d[RO(0)];</div>
+<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; }</div>
+<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160;</div>
+<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> SLOT&gt; __attribute__((always_inline)) <span class="keyword">inline</span> <span class="keyword">static</span> uint8_t loadByte(<a class="code" href="struct_multi_pixel_controller.html">MultiPixelController</a> &amp; pc, <span class="keywordtype">int</span> lane) { <span class="keywordflow">return</span> pc.mData[pc.mOffsets[lane] + RO(SLOT)]; }</div>
+<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> SLOT&gt; __attribute__((always_inline)) <span class="keyword">inline</span> <span class="keyword">static</span> uint8_t dither(<a class="code" href="struct_multi_pixel_controller.html">MultiPixelController</a> &amp; pc, uint8_t b) { <span class="keywordflow">return</span> b ? <a class="code" href="group___math.html#ga38e9f9a8830353f9cbfecad7c8758b1f">qadd8</a>(b, pc.d[RO(SLOT)]) : 0; }</div>
+<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> SLOT&gt; __attribute__((always_inline)) <span class="keyword">inline</span> <span class="keyword">static</span> uint8_t dither(<a class="code" href="struct_multi_pixel_controller.html">MultiPixelController</a> &amp; pc, uint8_t b, uint8_t d) { <span class="keywordflow">return</span> b ? <a class="code" href="group___math.html#ga38e9f9a8830353f9cbfecad7c8758b1f">qadd8</a>(b,d) : 0; }</div>
+<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> SLOT&gt; __attribute__((always_inline)) <span class="keyword">inline</span> <span class="keyword">static</span> uint8_t scale(<a class="code" href="struct_multi_pixel_controller.html">MultiPixelController</a> &amp; pc, uint8_t b) { <span class="keywordflow">return</span> <a class="code" href="group___scaling.html#ga6c160f8c36ce9b3c5eda68e4992010af">scale8</a>(b, pc.mScale.raw[RO(SLOT)]); }</div>
+<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> SLOT&gt; __attribute__((always_inline)) <span class="keyword">inline</span> <span class="keyword">static</span> uint8_t scale(<a class="code" href="struct_multi_pixel_controller.html">MultiPixelController</a> &amp; pc, uint8_t b, uint8_t scale) { <span class="keywordflow">return</span> <a class="code" href="group___scaling.html#ga6c160f8c36ce9b3c5eda68e4992010af">scale8</a>(b, scale); }</div>
+<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160;</div>
+<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="comment">// composite shortcut functions for loading, dithering, and scaling</span></div>
+<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> SLOT&gt; __attribute__((always_inline)) <span class="keyword">inline</span> <span class="keyword">static</span> uint8_t loadAndScale(<a class="code" href="struct_multi_pixel_controller.html">MultiPixelController</a> &amp; pc, <span class="keywordtype">int</span> lane) { <span class="keywordflow">return</span> scale&lt;SLOT&gt;(pc, pc.dither&lt;SLOT&gt;(pc, pc.loadByte&lt;SLOT&gt;(pc, lane))); }</div>
+<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> SLOT&gt; __attribute__((always_inline)) <span class="keyword">inline</span> <span class="keyword">static</span> uint8_t loadAndScale(<a class="code" href="struct_multi_pixel_controller.html">MultiPixelController</a> &amp; pc, <span class="keywordtype">int</span> lane, uint8_t d, uint8_t scale) { <span class="keywordflow">return</span> <a class="code" href="group___scaling.html#ga6c160f8c36ce9b3c5eda68e4992010af">scale8</a>(pc.dither&lt;SLOT&gt;(pc, pc.loadByte&lt;SLOT&gt;(pc, lane), d), scale); }</div>
+<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> SLOT&gt; __attribute__((always_inline)) <span class="keyword">inline</span> <span class="keyword">static</span> uint8_t loadAndScale(<a class="code" href="struct_multi_pixel_controller.html">MultiPixelController</a> &amp; pc, <span class="keywordtype">int</span> lane, uint8_t scale) { <span class="keywordflow">return</span> <a class="code" href="group___scaling.html#ga6c160f8c36ce9b3c5eda68e4992010af">scale8</a>(pc.loadByte&lt;SLOT&gt;(pc, lane), scale); }</div>
+<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> SLOT&gt; __attribute__((always_inline)) <span class="keyword">inline</span> <span class="keyword">static</span> uint8_t advanceAndLoadAndScale(<a class="code" href="struct_multi_pixel_controller.html">MultiPixelController</a> &amp; pc, <span class="keywordtype">int</span> lane) { pc.advanceData(); <span class="keywordflow">return</span> pc.loadAndScale&lt;SLOT&gt;(pc, lane); }</div>
<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160;</div>
-<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <span class="comment">// Helper functions to get around gcc stupidities</span></div>
-<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; __attribute__((always_inline)) <span class="keyword">inline</span> uint8_t loadAndScale0(<span class="keywordtype">int</span> lane) { <span class="keywordflow">return</span> loadAndScale&lt;0&gt;(*<span class="keyword">this</span>, lane); }</div>
-<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; __attribute__((always_inline)) <span class="keyword">inline</span> uint8_t loadAndScale1(<span class="keywordtype">int</span> lane) { <span class="keywordflow">return</span> loadAndScale&lt;1&gt;(*<span class="keyword">this</span>, lane); }</div>
-<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; __attribute__((always_inline)) <span class="keyword">inline</span> uint8_t loadAndScale2(<span class="keywordtype">int</span> lane) { <span class="keywordflow">return</span> loadAndScale&lt;2&gt;(*<span class="keyword">this</span>, lane); }</div>
-<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; __attribute__((always_inline)) <span class="keyword">inline</span> uint8_t loadAndScale0(<span class="keywordtype">int</span> lane, uint8_t d, uint8_t scale) { <span class="keywordflow">return</span> loadAndScale&lt;0&gt;(*<span class="keyword">this</span>, lane, d, scale); }</div>
-<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; __attribute__((always_inline)) <span class="keyword">inline</span> uint8_t loadAndScale1(<span class="keywordtype">int</span> lane, uint8_t d, uint8_t scale) { <span class="keywordflow">return</span> loadAndScale&lt;1&gt;(*<span class="keyword">this</span>, lane, d, scale); }</div>
-<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; __attribute__((always_inline)) <span class="keyword">inline</span> uint8_t loadAndScale2(<span class="keywordtype">int</span> lane, uint8_t d, uint8_t scale) { <span class="keywordflow">return</span> loadAndScale&lt;2&gt;(*<span class="keyword">this</span>, lane, d, scale); }</div>
-<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; __attribute__((always_inline)) <span class="keyword">inline</span> uint8_t advanceAndLoadAndScale0(<span class="keywordtype">int</span> lane) { <span class="keywordflow">return</span> advanceAndLoadAndScale&lt;0&gt;(*<span class="keyword">this</span>, lane); }</div>
-<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; __attribute__((always_inline)) <span class="keyword">inline</span> uint8_t stepAdvanceAndLoadAndScale0(<span class="keywordtype">int</span> lane) { stepDithering(); <span class="keywordflow">return</span> advanceAndLoadAndScale&lt;0&gt;(*<span class="keyword">this</span>, lane); }</div>
-<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160;};</div>
-<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160;</div>
-<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160;FASTLED_NAMESPACE_END</div>
-<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160;</div>
-<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="ttc" id="class_c_l_e_d_controller_html_af6173cca91ee446766cc15102990d7bb"><div class="ttname"><a href="class_c_l_e_d_controller.html#af6173cca91ee446766cc15102990d7bb">CLEDController::getAdjustment</a></div><div class="ttdeci">CRGB getAdjustment(uint8_t scale)</div><div class="ttdoc">Get the combined brightness/color adjustment for this controller. </div><div class="ttdef"><b>Definition:</b> controller.h:152</div></div>
-<div class="ttc" id="class_c_l_e_d_controller_html_aa4124b1cf5546ad028166e7884276076"><div class="ttname"><a href="class_c_l_e_d_controller.html#aa4124b1cf5546ad028166e7884276076">CLEDController::showLeds</a></div><div class="ttdeci">void showLeds(uint8_t brightness=255)</div><div class="ttdoc">show function using the "attached to this controller" led data </div><div class="ttdef"><b>Definition:</b> controller.h:88</div></div>
+<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> SLOT&gt; __attribute__((always_inline)) <span class="keyword">inline</span> <span class="keyword">static</span> uint8_t getd(<a class="code" href="struct_multi_pixel_controller.html">MultiPixelController</a> &amp; pc) { <span class="keywordflow">return</span> pc.d[RO(SLOT)]; }</div>
+<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> SLOT&gt; __attribute__((always_inline)) <span class="keyword">inline</span> <span class="keyword">static</span> uint8_t getscale(<a class="code" href="struct_multi_pixel_controller.html">MultiPixelController</a> &amp; pc) { <span class="keywordflow">return</span> pc.mScale.raw[RO(SLOT)]; }</div>
+<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160;</div>
+<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <span class="comment">// Helper functions to get around gcc stupidities</span></div>
+<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; __attribute__((always_inline)) <span class="keyword">inline</span> uint8_t loadAndScale0(<span class="keywordtype">int</span> lane) { <span class="keywordflow">return</span> loadAndScale&lt;0&gt;(*<span class="keyword">this</span>, lane); }</div>
+<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; __attribute__((always_inline)) <span class="keyword">inline</span> uint8_t loadAndScale1(<span class="keywordtype">int</span> lane) { <span class="keywordflow">return</span> loadAndScale&lt;1&gt;(*<span class="keyword">this</span>, lane); }</div>
+<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; __attribute__((always_inline)) <span class="keyword">inline</span> uint8_t loadAndScale2(<span class="keywordtype">int</span> lane) { <span class="keywordflow">return</span> loadAndScale&lt;2&gt;(*<span class="keyword">this</span>, lane); }</div>
+<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; __attribute__((always_inline)) <span class="keyword">inline</span> uint8_t loadAndScale0(<span class="keywordtype">int</span> lane, uint8_t d, uint8_t scale) { <span class="keywordflow">return</span> loadAndScale&lt;0&gt;(*<span class="keyword">this</span>, lane, d, scale); }</div>
+<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; __attribute__((always_inline)) <span class="keyword">inline</span> uint8_t loadAndScale1(<span class="keywordtype">int</span> lane, uint8_t d, uint8_t scale) { <span class="keywordflow">return</span> loadAndScale&lt;1&gt;(*<span class="keyword">this</span>, lane, d, scale); }</div>
+<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; __attribute__((always_inline)) <span class="keyword">inline</span> uint8_t loadAndScale2(<span class="keywordtype">int</span> lane, uint8_t d, uint8_t scale) { <span class="keywordflow">return</span> loadAndScale&lt;2&gt;(*<span class="keyword">this</span>, lane, d, scale); }</div>
+<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; __attribute__((always_inline)) <span class="keyword">inline</span> uint8_t advanceAndLoadAndScale0(<span class="keywordtype">int</span> lane) { <span class="keywordflow">return</span> advanceAndLoadAndScale&lt;0&gt;(*<span class="keyword">this</span>, lane); }</div>
+<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; __attribute__((always_inline)) <span class="keyword">inline</span> uint8_t stepAdvanceAndLoadAndScale0(<span class="keywordtype">int</span> lane) { stepDithering(); <span class="keywordflow">return</span> advanceAndLoadAndScale&lt;0&gt;(*<span class="keyword">this</span>, lane); }</div>
+<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160;};</div>
+<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160;</div>
+<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160;FASTLED_NAMESPACE_END</div>
+<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160;</div>
+<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="ttc" id="class_c_l_e_d_controller_html_af6173cca91ee446766cc15102990d7bb"><div class="ttname"><a href="class_c_l_e_d_controller.html#af6173cca91ee446766cc15102990d7bb">CLEDController::getAdjustment</a></div><div class="ttdeci">CRGB getAdjustment(uint8_t scale)</div><div class="ttdoc">Get the combined brightness/color adjustment for this controller. </div><div class="ttdef"><b>Definition:</b> controller.h:155</div></div>
+<div class="ttc" id="class_c_l_e_d_controller_html_aa4124b1cf5546ad028166e7884276076"><div class="ttname"><a href="class_c_l_e_d_controller.html#aa4124b1cf5546ad028166e7884276076">CLEDController::showLeds</a></div><div class="ttdeci">void showLeds(uint8_t brightness=255)</div><div class="ttdoc">show function using the "attached to this controller" led data </div><div class="ttdef"><b>Definition:</b> controller.h:91</div></div>
<div class="ttc" id="struct_c_r_g_b_html"><div class="ttname"><a href="struct_c_r_g_b.html">CRGB</a></div><div class="ttdoc">Representation of an RGB pixel (Red, Green, Blue) </div><div class="ttdef"><b>Definition:</b> pixeltypes.h:88</div></div>
-<div class="ttc" id="class_c_l_e_d_controller_html_a168c661bb9b4a5dfc797b69d3900b26c"><div class="ttname"><a href="class_c_l_e_d_controller.html#a168c661bb9b4a5dfc797b69d3900b26c">CLEDController::getCorrection</a></div><div class="ttdeci">CRGB getCorrection()</div><div class="ttdoc">get the correction value used by this controller </div><div class="ttdef"><b>Definition:</b> controller.h:142</div></div>
-<div class="ttc" id="group___color_enums_html_ggadf6bcba67c9573665af20788c4431ae8af964ffff5f2977a60a83aa3f9f8b4368"><div class="ttname"><a href="group___color_enums.html#ggadf6bcba67c9573665af20788c4431ae8af964ffff5f2977a60a83aa3f9f8b4368">UncorrectedColor</a></div><div class="ttdoc">uncorrected color </div><div class="ttdef"><b>Definition:</b> color.h:26</div></div>
-<div class="ttc" id="class_c_l_e_d_controller_html"><div class="ttname"><a href="class_c_l_e_d_controller.html">CLEDController</a></div><div class="ttdoc">Base definition for an LED controller. </div><div class="ttdef"><b>Definition:</b> controller.h:34</div></div>
-<div class="ttc" id="struct_pixel_controller_html_a900493d7e9e345d0cb6e602186151e73"><div class="ttname"><a href="struct_pixel_controller.html#a900493d7e9e345d0cb6e602186151e73">PixelController::__attribute__</a></div><div class="ttdeci">__attribute__((always_inline)) inline void stepDithering()</div><div class="ttdoc">step the dithering forward </div><div class="ttdef"><b>Definition:</b> controller.h:342</div></div>
-<div class="ttc" id="class_c_l_e_d_controller_html_a7b61c81e004c96ff670a2742057a5a52"><div class="ttname"><a href="class_c_l_e_d_controller.html#a7b61c81e004c96ff670a2742057a5a52">CLEDController::clearLedData</a></div><div class="ttdeci">void clearLedData()</div><div class="ttdoc">zero out the led data managed by this controller </div><div class="ttdef"><b>Definition:</b> controller.h:117</div></div>
-<div class="ttc" id="class_c_l_e_d_controller_html_a69ac4a882bdc4a813ae957ddedb5a883"><div class="ttname"><a href="class_c_l_e_d_controller.html#a69ac4a882bdc4a813ae957ddedb5a883">CLEDController::setTemperature</a></div><div class="ttdeci">CLEDController &amp; setTemperature(CRGB temperature)</div><div class="ttdoc">set the color temperature, aka white point, for this controller </div><div class="ttdef"><b>Definition:</b> controller.h:145</div></div>
+<div class="ttc" id="class_c_l_e_d_controller_html_a168c661bb9b4a5dfc797b69d3900b26c"><div class="ttname"><a href="class_c_l_e_d_controller.html#a168c661bb9b4a5dfc797b69d3900b26c">CLEDController::getCorrection</a></div><div class="ttdeci">CRGB getCorrection()</div><div class="ttdoc">get the correction value used by this controller </div><div class="ttdef"><b>Definition:</b> controller.h:145</div></div>
+<div class="ttc" id="group___color_enums_html_ggadf6bcba67c9573665af20788c4431ae8af964ffff5f2977a60a83aa3f9f8b4368"><div class="ttname"><a href="group___color_enums.html#ggadf6bcba67c9573665af20788c4431ae8af964ffff5f2977a60a83aa3f9f8b4368">UncorrectedColor</a></div><div class="ttdoc">uncorrected color </div><div class="ttdef"><b>Definition:</b> color.h:28</div></div>
+<div class="ttc" id="class_c_l_e_d_controller_html"><div class="ttname"><a href="class_c_l_e_d_controller.html">CLEDController</a></div><div class="ttdoc">Base definition for an LED controller. </div><div class="ttdef"><b>Definition:</b> controller.h:37</div></div>
+<div class="ttc" id="struct_pixel_controller_html_a900493d7e9e345d0cb6e602186151e73"><div class="ttname"><a href="struct_pixel_controller.html#a900493d7e9e345d0cb6e602186151e73">PixelController::__attribute__</a></div><div class="ttdeci">__attribute__((always_inline)) inline void stepDithering()</div><div class="ttdoc">step the dithering forward </div><div class="ttdef"><b>Definition:</b> controller.h:345</div></div>
+<div class="ttc" id="class_c_l_e_d_controller_html_a7b61c81e004c96ff670a2742057a5a52"><div class="ttname"><a href="class_c_l_e_d_controller.html#a7b61c81e004c96ff670a2742057a5a52">CLEDController::clearLedData</a></div><div class="ttdeci">void clearLedData()</div><div class="ttdoc">zero out the led data managed by this controller </div><div class="ttdef"><b>Definition:</b> controller.h:120</div></div>
+<div class="ttc" id="class_c_l_e_d_controller_html_a69ac4a882bdc4a813ae957ddedb5a883"><div class="ttname"><a href="class_c_l_e_d_controller.html#a69ac4a882bdc4a813ae957ddedb5a883">CLEDController::setTemperature</a></div><div class="ttdeci">CLEDController &amp; setTemperature(CRGB temperature)</div><div class="ttdoc">set the color temperature, aka white point, for this controller </div><div class="ttdef"><b>Definition:</b> controller.h:148</div></div>
<div class="ttc" id="group___scaling_html_ga6c160f8c36ce9b3c5eda68e4992010af"><div class="ttname"><a href="group___scaling.html#ga6c160f8c36ce9b3c5eda68e4992010af">scale8</a></div><div class="ttdeci">LIB8STATIC uint8_t scale8(uint8_t i, fract8 scale)</div><div class="ttdoc">scale one byte by a second one, which is treated as the numerator of a fraction whose denominator is ...</div><div class="ttdef"><b>Definition:</b> scale8.h:20</div></div>
-<div class="ttc" id="class_c_l_e_d_controller_html_a5b08378b29f92c5def65175ec5334037"><div class="ttname"><a href="class_c_l_e_d_controller.html#a5b08378b29f92c5def65175ec5334037">CLEDController::setLeds</a></div><div class="ttdeci">CLEDController &amp; setLeds(CRGB *data, int nLeds)</div><div class="ttdoc">set the default array of leds to be used by this controller </div><div class="ttdef"><b>Definition:</b> controller.h:110</div></div>
-<div class="ttc" id="struct_pixel_controller_html_a9b0bc80097821046dbda7bbbf38dd7df"><div class="ttname"><a href="struct_pixel_controller.html#a9b0bc80097821046dbda7bbbf38dd7df">PixelController::__attribute__</a></div><div class="ttdeci">__attribute__((always_inline)) inline void preStepFirstByteDithering()</div><div class="ttdoc">Some chipsets pre-cycle the first byte, which means we want to cycle byte 0&#39;s dithering separately...</div><div class="ttdef"><b>Definition:</b> controller.h:351</div></div>
-<div class="ttc" id="struct_multi_pixel_controller_html"><div class="ttname"><a href="struct_multi_pixel_controller.html">MultiPixelController</a></div><div class="ttdef"><b>Definition:</b> controller.h:375</div></div>
-<div class="ttc" id="struct_pixel_controller_html_aec44f7bfc391ebf4874f678a994eff71"><div class="ttname"><a href="struct_pixel_controller.html#aec44f7bfc391ebf4874f678a994eff71">PixelController::PixelController</a></div><div class="ttdeci">PixelController(const PixelController &amp;other)</div><div class="ttdoc">copy constructor for the pixel controller object </div><div class="ttdef"><b>Definition:</b> controller.h:190</div></div>
-<div class="ttc" id="class_c_l_e_d_controller_html_a8840496d231f1fe0fa640970dc14db08"><div class="ttname"><a href="class_c_l_e_d_controller.html#a8840496d231f1fe0fa640970dc14db08">CLEDController::size</a></div><div class="ttdeci">int size()</div><div class="ttdoc">How many leds does this controller manage? </div><div class="ttdef"><b>Definition:</b> controller.h:124</div></div>
+<div class="ttc" id="class_c_l_e_d_controller_html_a5b08378b29f92c5def65175ec5334037"><div class="ttname"><a href="class_c_l_e_d_controller.html#a5b08378b29f92c5def65175ec5334037">CLEDController::setLeds</a></div><div class="ttdeci">CLEDController &amp; setLeds(CRGB *data, int nLeds)</div><div class="ttdoc">set the default array of leds to be used by this controller </div><div class="ttdef"><b>Definition:</b> controller.h:113</div></div>
+<div class="ttc" id="struct_pixel_controller_html_a9b0bc80097821046dbda7bbbf38dd7df"><div class="ttname"><a href="struct_pixel_controller.html#a9b0bc80097821046dbda7bbbf38dd7df">PixelController::__attribute__</a></div><div class="ttdeci">__attribute__((always_inline)) inline void preStepFirstByteDithering()</div><div class="ttdoc">Some chipsets pre-cycle the first byte, which means we want to cycle byte 0&#39;s dithering separately...</div><div class="ttdef"><b>Definition:</b> controller.h:354</div></div>
+<div class="ttc" id="struct_multi_pixel_controller_html"><div class="ttname"><a href="struct_multi_pixel_controller.html">MultiPixelController</a></div><div class="ttdef"><b>Definition:</b> controller.h:378</div></div>
+<div class="ttc" id="struct_pixel_controller_html_aec44f7bfc391ebf4874f678a994eff71"><div class="ttname"><a href="struct_pixel_controller.html#aec44f7bfc391ebf4874f678a994eff71">PixelController::PixelController</a></div><div class="ttdeci">PixelController(const PixelController &amp;other)</div><div class="ttdoc">copy constructor for the pixel controller object </div><div class="ttdef"><b>Definition:</b> controller.h:193</div></div>
+<div class="ttc" id="class_c_l_e_d_controller_html_a8840496d231f1fe0fa640970dc14db08"><div class="ttname"><a href="class_c_l_e_d_controller.html#a8840496d231f1fe0fa640970dc14db08">CLEDController::size</a></div><div class="ttdeci">int size()</div><div class="ttdoc">How many leds does this controller manage? </div><div class="ttdef"><b>Definition:</b> controller.h:127</div></div>
<div class="ttc" id="class_c_fast_l_e_d_html"><div class="ttname"><a href="class_c_fast_l_e_d.html">CFastLED</a></div><div class="ttdoc">High level controller interface for FastLED. </div><div class="ttdef"><b>Definition:</b> FastLED.h:130</div></div>
-<div class="ttc" id="class_c_l_e_d_controller_html_a253069a734075b298da65d59d6efbb3b"><div class="ttname"><a href="class_c_l_e_d_controller.html#a253069a734075b298da65d59d6efbb3b">CLEDController::showColor</a></div><div class="ttdeci">void showColor(const struct CRGB &amp;data, int nLeds, uint8_t brightness)</div><div class="ttdoc">show function w/integer brightness, will scale for color correction and temperature ...</div><div class="ttdef"><b>Definition:</b> controller.h:83</div></div>
-<div class="ttc" id="class_c_l_e_d_controller_html_a9620d0a629a6a3294c71f5f8dbfe91b8"><div class="ttname"><a href="class_c_l_e_d_controller.html#a9620d0a629a6a3294c71f5f8dbfe91b8">CLEDController::setCorrection</a></div><div class="ttdeci">CLEDController &amp; setCorrection(CRGB correction)</div><div class="ttdoc">the the color corrction to use for this controller, expressed as an rgb object </div><div class="ttdef"><b>Definition:</b> controller.h:138</div></div>
+<div class="ttc" id="class_c_l_e_d_controller_html_a253069a734075b298da65d59d6efbb3b"><div class="ttname"><a href="class_c_l_e_d_controller.html#a253069a734075b298da65d59d6efbb3b">CLEDController::showColor</a></div><div class="ttdeci">void showColor(const struct CRGB &amp;data, int nLeds, uint8_t brightness)</div><div class="ttdoc">show function w/integer brightness, will scale for color correction and temperature ...</div><div class="ttdef"><b>Definition:</b> controller.h:86</div></div>
+<div class="ttc" id="class_c_l_e_d_controller_html_a9620d0a629a6a3294c71f5f8dbfe91b8"><div class="ttname"><a href="class_c_l_e_d_controller.html#a9620d0a629a6a3294c71f5f8dbfe91b8">CLEDController::setCorrection</a></div><div class="ttdeci">CLEDController &amp; setCorrection(CRGB correction)</div><div class="ttdoc">the the color corrction to use for this controller, expressed as an rgb object </div><div class="ttdef"><b>Definition:</b> controller.h:141</div></div>
<div class="ttc" id="class_c_l_e_d_controller_html_af877a15a5ec452780fbd1d359b8a9913"><div class="ttname"><a href="class_c_l_e_d_controller.html#af877a15a5ec452780fbd1d359b8a9913">CLEDController::init</a></div><div class="ttdeci">virtual void init()=0</div><div class="ttdoc">initialize the LED controller </div></div>
-<div class="ttc" id="class_c_l_e_d_controller_html_afc94e9d029d7e59f56a4ab845f3de32d"><div class="ttname"><a href="class_c_l_e_d_controller.html#afc94e9d029d7e59f56a4ab845f3de32d">CLEDController::getTemperature</a></div><div class="ttdeci">CRGB getTemperature()</div><div class="ttdoc">get the color temperature, aka whipe point, for this controller </div><div class="ttdef"><b>Definition:</b> controller.h:149</div></div>
-<div class="ttc" id="struct_pixel_controller_html"><div class="ttname"><a href="struct_pixel_controller.html">PixelController</a></div><div class="ttdoc">Pixel controller class. </div><div class="ttdef"><b>Definition:</b> controller.h:181</div></div>
+<div class="ttc" id="class_c_l_e_d_controller_html_afc94e9d029d7e59f56a4ab845f3de32d"><div class="ttname"><a href="class_c_l_e_d_controller.html#afc94e9d029d7e59f56a4ab845f3de32d">CLEDController::getTemperature</a></div><div class="ttdeci">CRGB getTemperature()</div><div class="ttdoc">get the color temperature, aka whipe point, for this controller </div><div class="ttdef"><b>Definition:</b> controller.h:152</div></div>
+<div class="ttc" id="struct_pixel_controller_html"><div class="ttname"><a href="struct_pixel_controller.html">PixelController</a></div><div class="ttdoc">Pixel controller class. </div><div class="ttdef"><b>Definition:</b> controller.h:184</div></div>
<div class="ttc" id="group___math_html_ga38e9f9a8830353f9cbfecad7c8758b1f"><div class="ttname"><a href="group___math.html#ga38e9f9a8830353f9cbfecad7c8758b1f">qadd8</a></div><div class="ttdeci">LIB8STATIC uint8_t qadd8(uint8_t i, uint8_t j)</div><div class="ttdoc">add one byte to another, saturating at 0xFF </div><div class="ttdef"><b>Definition:</b> math8.h:21</div></div>
-<div class="ttc" id="struct_pixel_controller_html_a404558c7da7f3f6fae768bc45af9dc03"><div class="ttname"><a href="struct_pixel_controller.html#a404558c7da7f3f6fae768bc45af9dc03">PixelController::__attribute__</a></div><div class="ttdeci">__attribute__((always_inline)) inline void advanceData()</div><div class="ttdoc">advance the data pointer forward, adjust position counter </div><div class="ttdef"><b>Definition:</b> controller.h:339</div></div>
-<div class="ttc" id="class_c_l_e_d_controller_html_a4ccd149ab7282817041a1ae4e586a9d4"><div class="ttname"><a href="class_c_l_e_d_controller.html#a4ccd149ab7282817041a1ae4e586a9d4">CLEDController::showColor</a></div><div class="ttdeci">void showColor(const struct CRGB &amp;data, uint8_t brightness=255)</div><div class="ttdoc">show the given color on the led strip </div><div class="ttdef"><b>Definition:</b> controller.h:93</div></div>
-<div class="ttc" id="struct_pixel_controller_html_a81403c8810658d3c41cb210703bbfc00"><div class="ttname"><a href="struct_pixel_controller.html#a81403c8810658d3c41cb210703bbfc00">PixelController::PixelController</a></div><div class="ttdeci">PixelController(const uint8_t *d, int len, CRGB &amp;s, EDitherMode dither=BINARY_DITHER, bool advance=true, uint8_t skip=0)</div><div class="ttdoc">create a pixel controller for managing led data as it is being written out </div><div class="ttdef"><b>Definition:</b> controller.h:212</div></div>
-<div class="ttc" id="class_c_l_e_d_controller_html_a1e6d35be39f9f67aacdb4709ea914ab4"><div class="ttname"><a href="class_c_l_e_d_controller.html#a1e6d35be39f9f67aacdb4709ea914ab4">CLEDController::setTemperature</a></div><div class="ttdeci">CLEDController &amp; setTemperature(ColorTemperature temperature)</div><div class="ttdoc">set the color temperature, aka white point, for this controller </div><div class="ttdef"><b>Definition:</b> controller.h:147</div></div>
-<div class="ttc" id="class_c_l_e_d_controller_html_a06cfb05ad6e0f7982328928051f3f565"><div class="ttname"><a href="class_c_l_e_d_controller.html#a06cfb05ad6e0f7982328928051f3f565">CLEDController::next</a></div><div class="ttdeci">CLEDController * next()</div><div class="ttdoc">get the next controller in the chain after this one. will return NULL at the end of the chain ...</div><div class="ttdef"><b>Definition:</b> controller.h:100</div></div>
-<div class="ttc" id="group___color_enums_html_gga251e9e8dc2c7b981786b71706522b2a9ae3d35275ab8c374612bcfbcce732b39f"><div class="ttname"><a href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9ae3d35275ab8c374612bcfbcce732b39f">UncorrectedTemperature</a></div><div class="ttdoc">Uncorrected temperature 0xFFFFFF. </div><div class="ttdef"><b>Definition:</b> color.h:74</div></div>
-<div class="ttc" id="class_c_l_e_d_controller_html_a0703d15ea35deaf94eed59ae27bc3517"><div class="ttname"><a href="class_c_l_e_d_controller.html#a0703d15ea35deaf94eed59ae27bc3517">CLEDController::setDither</a></div><div class="ttdeci">CLEDController &amp; setDither(uint8_t ditherMode=BINARY_DITHER)</div><div class="ttdoc">set the dithering mode for this controller to use </div><div class="ttdef"><b>Definition:</b> controller.h:133</div></div>
-<div class="ttc" id="class_c_l_e_d_controller_html_a5e86c45c89ebfb7b21f9045790302399"><div class="ttname"><a href="class_c_l_e_d_controller.html#a5e86c45c89ebfb7b21f9045790302399">CLEDController::leds</a></div><div class="ttdeci">CRGB * leds()</div><div class="ttdoc">Pointer to the CRGB array for this controller. </div><div class="ttdef"><b>Definition:</b> controller.h:127</div></div>
-<div class="ttc" id="group___color_enums_html_gadf6bcba67c9573665af20788c4431ae8"><div class="ttname"><a href="group___color_enums.html#gadf6bcba67c9573665af20788c4431ae8">LEDColorCorrection</a></div><div class="ttdeci">LEDColorCorrection</div><div class="ttdef"><b>Definition:</b> color.h:9</div></div>
-<div class="ttc" id="struct_pixel_controller_html_a3e923be6212346c5ae98f7731d74c2e3"><div class="ttname"><a href="struct_pixel_controller.html#a3e923be6212346c5ae98f7731d74c2e3">PixelController::enable_dithering</a></div><div class="ttdeci">void enable_dithering(EDitherMode dither)</div><div class="ttdoc">toggle dithering enable </div><div class="ttdef"><b>Definition:</b> controller.h:328</div></div>
+<div class="ttc" id="struct_pixel_controller_html_a404558c7da7f3f6fae768bc45af9dc03"><div class="ttname"><a href="struct_pixel_controller.html#a404558c7da7f3f6fae768bc45af9dc03">PixelController::__attribute__</a></div><div class="ttdeci">__attribute__((always_inline)) inline void advanceData()</div><div class="ttdoc">advance the data pointer forward, adjust position counter </div><div class="ttdef"><b>Definition:</b> controller.h:342</div></div>
+<div class="ttc" id="class_c_l_e_d_controller_html_a4ccd149ab7282817041a1ae4e586a9d4"><div class="ttname"><a href="class_c_l_e_d_controller.html#a4ccd149ab7282817041a1ae4e586a9d4">CLEDController::showColor</a></div><div class="ttdeci">void showColor(const struct CRGB &amp;data, uint8_t brightness=255)</div><div class="ttdoc">show the given color on the led strip </div><div class="ttdef"><b>Definition:</b> controller.h:96</div></div>
+<div class="ttc" id="struct_pixel_controller_html_a81403c8810658d3c41cb210703bbfc00"><div class="ttname"><a href="struct_pixel_controller.html#a81403c8810658d3c41cb210703bbfc00">PixelController::PixelController</a></div><div class="ttdeci">PixelController(const uint8_t *d, int len, CRGB &amp;s, EDitherMode dither=BINARY_DITHER, bool advance=true, uint8_t skip=0)</div><div class="ttdoc">create a pixel controller for managing led data as it is being written out </div><div class="ttdef"><b>Definition:</b> controller.h:215</div></div>
+<div class="ttc" id="class_c_l_e_d_controller_html_a1e6d35be39f9f67aacdb4709ea914ab4"><div class="ttname"><a href="class_c_l_e_d_controller.html#a1e6d35be39f9f67aacdb4709ea914ab4">CLEDController::setTemperature</a></div><div class="ttdeci">CLEDController &amp; setTemperature(ColorTemperature temperature)</div><div class="ttdoc">set the color temperature, aka white point, for this controller </div><div class="ttdef"><b>Definition:</b> controller.h:150</div></div>
+<div class="ttc" id="class_c_l_e_d_controller_html_a06cfb05ad6e0f7982328928051f3f565"><div class="ttname"><a href="class_c_l_e_d_controller.html#a06cfb05ad6e0f7982328928051f3f565">CLEDController::next</a></div><div class="ttdeci">CLEDController * next()</div><div class="ttdoc">get the next controller in the chain after this one. will return NULL at the end of the chain ...</div><div class="ttdef"><b>Definition:</b> controller.h:103</div></div>
+<div class="ttc" id="group___color_enums_html_gga251e9e8dc2c7b981786b71706522b2a9ae3d35275ab8c374612bcfbcce732b39f"><div class="ttname"><a href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9ae3d35275ab8c374612bcfbcce732b39f">UncorrectedTemperature</a></div><div class="ttdoc">Uncorrected temperature 0xFFFFFF. </div><div class="ttdef"><b>Definition:</b> color.h:76</div></div>
+<div class="ttc" id="class_c_l_e_d_controller_html_a0703d15ea35deaf94eed59ae27bc3517"><div class="ttname"><a href="class_c_l_e_d_controller.html#a0703d15ea35deaf94eed59ae27bc3517">CLEDController::setDither</a></div><div class="ttdeci">CLEDController &amp; setDither(uint8_t ditherMode=BINARY_DITHER)</div><div class="ttdoc">set the dithering mode for this controller to use </div><div class="ttdef"><b>Definition:</b> controller.h:136</div></div>
+<div class="ttc" id="class_c_l_e_d_controller_html_a5e86c45c89ebfb7b21f9045790302399"><div class="ttname"><a href="class_c_l_e_d_controller.html#a5e86c45c89ebfb7b21f9045790302399">CLEDController::leds</a></div><div class="ttdeci">CRGB * leds()</div><div class="ttdoc">Pointer to the CRGB array for this controller. </div><div class="ttdef"><b>Definition:</b> controller.h:130</div></div>
+<div class="ttc" id="group___color_enums_html_gadf6bcba67c9573665af20788c4431ae8"><div class="ttname"><a href="group___color_enums.html#gadf6bcba67c9573665af20788c4431ae8">LEDColorCorrection</a></div><div class="ttdeci">LEDColorCorrection</div><div class="ttdef"><b>Definition:</b> color.h:11</div></div>
+<div class="ttc" id="struct_pixel_controller_html_a3e923be6212346c5ae98f7731d74c2e3"><div class="ttname"><a href="struct_pixel_controller.html#a3e923be6212346c5ae98f7731d74c2e3">PixelController::enable_dithering</a></div><div class="ttdeci">void enable_dithering(EDitherMode dither)</div><div class="ttdoc">toggle dithering enable </div><div class="ttdef"><b>Definition:</b> controller.h:331</div></div>
<div class="ttc" id="class_c_l_e_d_controller_html_add284627121ffab140e083e84fadc37f"><div class="ttname"><a href="class_c_l_e_d_controller.html#add284627121ffab140e083e84fadc37f">CLEDController::show</a></div><div class="ttdeci">virtual void show(const struct CRGB *data, int nLeds, CRGB scale)=0</div><div class="ttdoc">write the passed in rgb data out to the leds managed by this controller </div></div>
-<div class="ttc" id="struct_pixel_controller_html_a11aef85a0ef8a9276cd2e729d57aa49b"><div class="ttname"><a href="struct_pixel_controller.html#a11aef85a0ef8a9276cd2e729d57aa49b">PixelController::__attribute__</a></div><div class="ttdeci">__attribute__((always_inline)) inline bool has(int n)</div><div class="ttdoc">Do we have n pixels left to process? </div><div class="ttdef"><b>Definition:</b> controller.h:323</div></div>
-<div class="ttc" id="class_c_l_e_d_controller_html_a8c560c6d171f117dfd19c0f2ec780a32"><div class="ttname"><a href="class_c_l_e_d_controller.html#a8c560c6d171f117dfd19c0f2ec780a32">CLEDController::CLEDController</a></div><div class="ttdeci">CLEDController()</div><div class="ttdoc">create an led controller object, add it to the chain of controllers </div><div class="ttdef"><b>Definition:</b> controller.h:64</div></div>
+<div class="ttc" id="color_8h_html"><div class="ttname"><a href="color_8h.html">color.h</a></div><div class="ttdoc">contains definitions for color correction and temperature </div></div>
+<div class="ttc" id="struct_pixel_controller_html_a11aef85a0ef8a9276cd2e729d57aa49b"><div class="ttname"><a href="struct_pixel_controller.html#a11aef85a0ef8a9276cd2e729d57aa49b">PixelController::__attribute__</a></div><div class="ttdeci">__attribute__((always_inline)) inline bool has(int n)</div><div class="ttdoc">Do we have n pixels left to process? </div><div class="ttdef"><b>Definition:</b> controller.h:326</div></div>
+<div class="ttc" id="class_c_l_e_d_controller_html_a8c560c6d171f117dfd19c0f2ec780a32"><div class="ttname"><a href="class_c_l_e_d_controller.html#a8c560c6d171f117dfd19c0f2ec780a32">CLEDController::CLEDController</a></div><div class="ttdeci">CLEDController()</div><div class="ttdoc">create an led controller object, add it to the chain of controllers </div><div class="ttdef"><b>Definition:</b> controller.h:67</div></div>
<div class="ttc" id="class_c_l_e_d_controller_html_a068fa50d8c7d31bd8537b731eea84c92"><div class="ttname"><a href="class_c_l_e_d_controller.html#a068fa50d8c7d31bd8537b731eea84c92">CLEDController::showColor</a></div><div class="ttdeci">virtual void showColor(const struct CRGB &amp;data, int nLeds, CRGB scale)=0</div><div class="ttdoc">set all the leds on the controller to a given color </div></div>
-<div class="ttc" id="class_c_l_e_d_controller_html_a676f705adf93898739a405b85150a3e7"><div class="ttname"><a href="class_c_l_e_d_controller.html#a676f705adf93898739a405b85150a3e7">CLEDController::getDither</a></div><div class="ttdeci">uint8_t getDither()</div><div class="ttdoc">get the dithering option currently set for this controller </div><div class="ttdef"><b>Definition:</b> controller.h:135</div></div>
-<div class="ttc" id="class_c_l_e_d_controller_html_a74c43977660742e8185fd666e5d66bf9"><div class="ttname"><a href="class_c_l_e_d_controller.html#a74c43977660742e8185fd666e5d66bf9">CLEDController::setCorrection</a></div><div class="ttdeci">CLEDController &amp; setCorrection(LEDColorCorrection correction)</div><div class="ttdoc">set the color correction to use for this controller </div><div class="ttdef"><b>Definition:</b> controller.h:140</div></div>
+<div class="ttc" id="class_c_l_e_d_controller_html_a676f705adf93898739a405b85150a3e7"><div class="ttname"><a href="class_c_l_e_d_controller.html#a676f705adf93898739a405b85150a3e7">CLEDController::getDither</a></div><div class="ttdeci">uint8_t getDither()</div><div class="ttdoc">get the dithering option currently set for this controller </div><div class="ttdef"><b>Definition:</b> controller.h:138</div></div>
+<div class="ttc" id="class_c_l_e_d_controller_html_a74c43977660742e8185fd666e5d66bf9"><div class="ttname"><a href="class_c_l_e_d_controller.html#a74c43977660742e8185fd666e5d66bf9">CLEDController::setCorrection</a></div><div class="ttdeci">CLEDController &amp; setCorrection(LEDColorCorrection correction)</div><div class="ttdoc">set the color correction to use for this controller </div><div class="ttdef"><b>Definition:</b> controller.h:143</div></div>
<div class="ttc" id="class_c_l_e_d_controller_html_adfa6601c84fefd733904b32ac98b6dae"><div class="ttname"><a href="class_c_l_e_d_controller.html#adfa6601c84fefd733904b32ac98b6dae">CLEDController::clearLeds</a></div><div class="ttdeci">virtual void clearLeds(int nLeds)=0</div><div class="ttdoc">clear out/zero out the given number of leds. </div></div>
-<div class="ttc" id="class_c_l_e_d_controller_html_abe990b9a65f5bff1f391cc5c28752abb"><div class="ttname"><a href="class_c_l_e_d_controller.html#abe990b9a65f5bff1f391cc5c28752abb">CLEDController::show</a></div><div class="ttdeci">void show(const struct CRGB *data, int nLeds, uint8_t brightness)</div><div class="ttdoc">show function w/integer brightness, will scale for color correction and temperature ...</div><div class="ttdef"><b>Definition:</b> controller.h:78</div></div>
-<div class="ttc" id="struct_pixel_controller_html_accb48b27c47c742a8b13f97ae1d82d32"><div class="ttname"><a href="struct_pixel_controller.html#accb48b27c47c742a8b13f97ae1d82d32">PixelController::init_binary_dithering</a></div><div class="ttdeci">void init_binary_dithering()</div><div class="ttdoc">initialize the binary dithering for this controller </div><div class="ttdef"><b>Definition:</b> controller.h:246</div></div>
-<div class="ttc" id="class_c_l_e_d_controller_html_a278a429964bec69b3c91486665e61c0a"><div class="ttname"><a href="class_c_l_e_d_controller.html#a278a429964bec69b3c91486665e61c0a">CLEDController::operator[]</a></div><div class="ttdeci">CRGB &amp; operator[](int x)</div><div class="ttdoc">Reference to the n&#39;th item in the controller. </div><div class="ttdef"><b>Definition:</b> controller.h:130</div></div>
-<div class="ttc" id="group___color_enums_html_ga251e9e8dc2c7b981786b71706522b2a9"><div class="ttname"><a href="group___color_enums.html#ga251e9e8dc2c7b981786b71706522b2a9">ColorTemperature</a></div><div class="ttdeci">ColorTemperature</div><div class="ttdef"><b>Definition:</b> color.h:31</div></div>
-<div class="ttc" id="class_c_l_e_d_controller_html_a75a5a6ea50899409d875d72393323ca0"><div class="ttname"><a href="class_c_l_e_d_controller.html#a75a5a6ea50899409d875d72393323ca0">CLEDController::head</a></div><div class="ttdeci">static CLEDController * head()</div><div class="ttdoc">get the first led controller in the chain of controllers </div><div class="ttdef"><b>Definition:</b> controller.h:98</div></div>
-<div class="ttc" id="struct_pixel_controller_html_afbe76a814e6bec02854dd4df167567b4"><div class="ttname"><a href="struct_pixel_controller.html#afbe76a814e6bec02854dd4df167567b4">PixelController::__attribute__</a></div><div class="ttdeci">__attribute__((always_inline)) inline int advanceBy()</div><div class="ttdoc">get the amount to advance the pointer by </div><div class="ttdef"><b>Definition:</b> controller.h:336</div></div>
+<div class="ttc" id="class_c_l_e_d_controller_html_abe990b9a65f5bff1f391cc5c28752abb"><div class="ttname"><a href="class_c_l_e_d_controller.html#abe990b9a65f5bff1f391cc5c28752abb">CLEDController::show</a></div><div class="ttdeci">void show(const struct CRGB *data, int nLeds, uint8_t brightness)</div><div class="ttdoc">show function w/integer brightness, will scale for color correction and temperature ...</div><div class="ttdef"><b>Definition:</b> controller.h:81</div></div>
+<div class="ttc" id="struct_pixel_controller_html_accb48b27c47c742a8b13f97ae1d82d32"><div class="ttname"><a href="struct_pixel_controller.html#accb48b27c47c742a8b13f97ae1d82d32">PixelController::init_binary_dithering</a></div><div class="ttdeci">void init_binary_dithering()</div><div class="ttdoc">initialize the binary dithering for this controller </div><div class="ttdef"><b>Definition:</b> controller.h:249</div></div>
+<div class="ttc" id="class_c_l_e_d_controller_html_a278a429964bec69b3c91486665e61c0a"><div class="ttname"><a href="class_c_l_e_d_controller.html#a278a429964bec69b3c91486665e61c0a">CLEDController::operator[]</a></div><div class="ttdeci">CRGB &amp; operator[](int x)</div><div class="ttdoc">Reference to the n&#39;th item in the controller. </div><div class="ttdef"><b>Definition:</b> controller.h:133</div></div>
+<div class="ttc" id="group___color_enums_html_ga251e9e8dc2c7b981786b71706522b2a9"><div class="ttname"><a href="group___color_enums.html#ga251e9e8dc2c7b981786b71706522b2a9">ColorTemperature</a></div><div class="ttdeci">ColorTemperature</div><div class="ttdef"><b>Definition:</b> color.h:33</div></div>
+<div class="ttc" id="class_c_l_e_d_controller_html_a75a5a6ea50899409d875d72393323ca0"><div class="ttname"><a href="class_c_l_e_d_controller.html#a75a5a6ea50899409d875d72393323ca0">CLEDController::head</a></div><div class="ttdeci">static CLEDController * head()</div><div class="ttdoc">get the first led controller in the chain of controllers </div><div class="ttdef"><b>Definition:</b> controller.h:101</div></div>
+<div class="ttc" id="struct_pixel_controller_html_afbe76a814e6bec02854dd4df167567b4"><div class="ttname"><a href="struct_pixel_controller.html#afbe76a814e6bec02854dd4df167567b4">PixelController::__attribute__</a></div><div class="ttdeci">__attribute__((always_inline)) inline int advanceBy()</div><div class="ttdoc">get the amount to advance the pointer by </div><div class="ttdef"><b>Definition:</b> controller.h:339</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:46 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/dir_fbb9e787cf27434374136273d35a9c17.html b/docs/3.1/dir_fbb9e787cf27434374136273d35a9c17.html
index 1b6a7a88..17e81ec1 100644
--- a/docs/3.1/dir_fbb9e787cf27434374136273d35a9c17.html
+++ b/docs/3.1/dir_fbb9e787cf27434374136273d35a9c17.html
@@ -107,7 +107,7 @@ Files</h2></td></tr>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/dmx_8h_source.html b/docs/3.1/dmx_8h_source.html
index 94632944..6c0e8837 100644
--- a/docs/3.1/dmx_8h_source.html
+++ b/docs/3.1/dmx_8h_source.html
@@ -201,7 +201,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="ttc" id="struct_c_r_g_b_html"><div class="ttname"><a href="struct_c_r_g_b.html">CRGB</a></div><div class="ttdoc">Representation of an RGB pixel (Red, Green, Blue) </div><div class="ttdef"><b>Definition:</b> pixeltypes.h:88</div></div>
<div class="ttc" id="class_d_m_x_serial_controller_html_a0cd937424d4f6eedb90acec81ca1fa27"><div class="ttname"><a href="class_d_m_x_serial_controller.html#a0cd937424d4f6eedb90acec81ca1fa27">DMXSerialController::init</a></div><div class="ttdeci">virtual void init()</div><div class="ttdoc">initialize the LED controller </div><div class="ttdef"><b>Definition:</b> dmx.h:68</div></div>
<div class="ttc" id="class_d_m_x_serial_controller_html_a3f3f3e606e495fd1bdcfd25c6bed7fe1"><div class="ttname"><a href="class_d_m_x_serial_controller.html#a3f3f3e606e495fd1bdcfd25c6bed7fe1">DMXSerialController::show</a></div><div class="ttdeci">virtual void show(const struct CRGB *data, int nLeds, CRGB scale)</div><div class="ttdoc">write the passed in rgb data out to the leds managed by this controller </div><div class="ttdef"><b>Definition:</b> dmx.h:89</div></div>
-<div class="ttc" id="class_c_l_e_d_controller_html"><div class="ttname"><a href="class_c_l_e_d_controller.html">CLEDController</a></div><div class="ttdoc">Base definition for an LED controller. </div><div class="ttdef"><b>Definition:</b> controller.h:34</div></div>
+<div class="ttc" id="class_c_l_e_d_controller_html"><div class="ttname"><a href="class_c_l_e_d_controller.html">CLEDController</a></div><div class="ttdoc">Base definition for an LED controller. </div><div class="ttdef"><b>Definition:</b> controller.h:37</div></div>
<div class="ttc" id="group___scaling_html_ga6c160f8c36ce9b3c5eda68e4992010af"><div class="ttname"><a href="group___scaling.html#ga6c160f8c36ce9b3c5eda68e4992010af">scale8</a></div><div class="ttdeci">LIB8STATIC uint8_t scale8(uint8_t i, fract8 scale)</div><div class="ttdoc">scale one byte by a second one, which is treated as the numerator of a fraction whose denominator is ...</div><div class="ttdef"><b>Definition:</b> scale8.h:20</div></div>
<div class="ttc" id="class_d_m_x_simple_controller_html_a251c7d09383870337853c360996871c3"><div class="ttname"><a href="class_d_m_x_simple_controller.html#a251c7d09383870337853c360996871c3">DMXSimpleController::init</a></div><div class="ttdeci">virtual void init()</div><div class="ttdoc">initialize the LED controller </div><div class="ttdef"><b>Definition:</b> dmx.h:17</div></div>
<div class="ttc" id="class_d_m_x_simple_controller_html"><div class="ttname"><a href="class_d_m_x_simple_controller.html">DMXSimpleController</a></div><div class="ttdef"><b>Definition:</b> dmx.h:14</div></div>
@@ -212,7 +212,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:46 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/fastled__config_8h.html b/docs/3.1/fastled__config_8h.html
new file mode 100644
index 00000000..67054676
--- /dev/null
+++ b/docs/3.1/fastled__config_8h.html
@@ -0,0 +1,105 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.9.1"/>
+<title>FastLED: fastled_config.h File Reference</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="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { init_search(); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">FastLED
+ &#160;<span id="projectnumber">3.1</span>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.9.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</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>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">fastled_config.h File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>contains definitions that can be used to configure FastLED at compile time
+<a href="#details">More...</a></p>
+
+<p><a href="fastled__config_8h_source.html">Go to the source code of this file.</a></p>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>contains definitions that can be used to configure FastLED at compile time </p>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.9.1
+</small></address>
+</body>
+</html>
diff --git a/docs/3.1/fastled__config_8h_source.html b/docs/3.1/fastled__config_8h_source.html
index d95a0635..f7066dea 100644
--- a/docs/3.1/fastled__config_8h_source.html
+++ b/docs/3.1/fastled__config_8h_source.html
@@ -87,29 +87,30 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="title">fastled_config.h</div> </div>
</div><!--header-->
<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#ifndef __INC_FASTLED_CONFIG_H</span></div>
+<a href="fastled__config_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#ifndef __INC_FASTLED_CONFIG_H</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="preprocessor">#define __INC_FASTLED_CONFIG_H</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;</div>
-<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Use this option only for debugging pin access and forcing software pin access. Note that</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// software pin access only works in Arduino based environments. Forces use of digitalWrite</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// methods for pin access vs. direct hardware port access</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">// #define FASTLED_FORCE_SOFTWARE_PINS</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;</div>
-<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// Use this option only for debugging bitbang&#39;d spi access or to work around bugs in hardware</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// spi access. Forces use of bit-banged spi, even on pins that has hardware SPI available.</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// #define FASTLED_FORCE_SOFTWARE_SPI</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div>
-<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// Use this to force FastLED to allow interrupts in the clockless chipsets (or to force it to</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// disallow), overriding the default on platforms that support this. Set the value to 1 to</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// allow interrupts or 0 to disallow them.</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// #define FASTLED_ALLOW_INTERRUPTS 1</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment">// #define FASTLED_ALLOW_INTERRUPTS 0</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;</div>
-<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;</div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">// Use this option only for debugging pin access and forcing software pin access. Note that</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// software pin access only works in Arduino based environments. Forces use of digitalWrite</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// methods for pin access vs. direct hardware port access</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// #define FASTLED_FORCE_SOFTWARE_PINS</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;</div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// Use this option only for debugging bitbang&#39;d spi access or to work around bugs in hardware</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// spi access. Forces use of bit-banged spi, even on pins that has hardware SPI available.</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// #define FASTLED_FORCE_SOFTWARE_SPI</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// Use this to force FastLED to allow interrupts in the clockless chipsets (or to force it to</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment">// disallow), overriding the default on platforms that support this. Set the value to 1 to</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// allow interrupts or 0 to disallow them.</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// #define FASTLED_ALLOW_INTERRUPTS 1</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">// #define FASTLED_ALLOW_INTERRUPTS 0</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/fastled__delay_8h.html b/docs/3.1/fastled__delay_8h.html
new file mode 100644
index 00000000..004ef404
--- /dev/null
+++ b/docs/3.1/fastled__delay_8h.html
@@ -0,0 +1,136 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.9.1"/>
+<title>FastLED: fastled_delay.h File Reference</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="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { init_search(); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">FastLED
+ &#160;<span id="projectnumber">3.1</span>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.9.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</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>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle">
+<div class="title">fastled_delay.h File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Utility functions and classes for managing delaycycles.
+<a href="#details">More...</a></p>
+
+<p><a href="fastled__delay_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_min_wait.html">CMinWait&lt; WAIT &gt;</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Class to ensure that a minimum amount of time has kicked since the last time run - and delay if not enough time has passed yet this should make sure that chipsets that have. <a href="class_c_min_wait.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:acdd14fccd97b45d3d566c95bff28ed76"><td class="memTemplParams" colspan="2"><a class="anchor" id="acdd14fccd97b45d3d566c95bff28ed76"></a>
+template&lt;int CYCLES&gt; </td></tr>
+<tr class="memitem:acdd14fccd97b45d3d566c95bff28ed76"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>delaycycles</b> ()</td></tr>
+<tr class="separator:acdd14fccd97b45d3d566c95bff28ed76"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9f73ec33563da273f06487a797e10eae"><td class="memTemplParams" colspan="2"><a class="anchor" id="a9f73ec33563da273f06487a797e10eae"></a>
+template&lt;int LOOP, int PAD&gt; </td></tr>
+<tr class="memitem:a9f73ec33563da273f06487a797e10eae"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>_delaycycles_AVR</b> ()</td></tr>
+<tr class="separator:a9f73ec33563da273f06487a797e10eae"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad47d9c821aeaaa0123d125a18ff961d5"><td class="memTemplParams" colspan="2"><a class="anchor" id="gad47d9c821aeaaa0123d125a18ff961d5"></a>
+template&lt;int CYCLES&gt; </td></tr>
+<tr class="memitem:gad47d9c821aeaaa0123d125a18ff961d5"><td class="memTemplItemLeft" align="right" valign="top">&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___pixeltypes.html#gad47d9c821aeaaa0123d125a18ff961d5">__attribute__</a> ((always_inline)) inline void delaycycles()</td></tr>
+<tr class="memdesc:gad47d9c821aeaaa0123d125a18ff961d5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Do an 8byte by 8bit rotation. <br /></td></tr>
+<tr class="separator:gad47d9c821aeaaa0123d125a18ff961d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad47d9c821aeaaa0123d125a18ff961d5"><td class="memTemplParams" colspan="2"><a class="anchor" id="gad47d9c821aeaaa0123d125a18ff961d5"></a>
+template&lt;&gt; </td></tr>
+<tr class="memitem:gad47d9c821aeaaa0123d125a18ff961d5"><td class="memTemplItemLeft" align="right" valign="top">&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___pixeltypes.html#gad47d9c821aeaaa0123d125a18ff961d5">__attribute__</a> ((always_inline)) inline void delaycycles&lt;-6 &gt;()</td></tr>
+<tr class="memdesc:gad47d9c821aeaaa0123d125a18ff961d5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Do an 8byte by 8bit rotation. <br /></td></tr>
+<tr class="separator:gad47d9c821aeaaa0123d125a18ff961d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Utility functions and classes for managing delaycycles. </p>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.9.1
+</small></address>
+</body>
+</html>
diff --git a/docs/3.1/fastled__delay_8h_source.html b/docs/3.1/fastled__delay_8h_source.html
index a65dc39f..dd37e7b5 100644
--- a/docs/3.1/fastled__delay_8h_source.html
+++ b/docs/3.1/fastled__delay_8h_source.html
@@ -87,126 +87,127 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="title">fastled_delay.h</div> </div>
</div><!--header-->
<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#ifndef __INC_FL_DELAY_H</span></div>
+<a href="fastled__delay_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#ifndef __INC_FL_DELAY_H</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="preprocessor">#define __INC_FL_DELAY_H</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;</div>
-<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;FASTLED_NAMESPACE_BEGIN</div>
-<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;</div>
-<div class="line"><a name="l00008"></a><span class="lineno"><a class="line" href="class_c_min_wait.html"> 8</a></span>&#160;<span class="keyword">template</span>&lt;<span class="keywordtype">int</span> WAIT&gt; <span class="keyword">class </span><a class="code" href="class_c_min_wait.html">CMinWait</a> {</div>
-<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160; uint16_t mLastMicros;</div>
-<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160; <a class="code" href="class_c_min_wait.html">CMinWait</a>() { mLastMicros = 0; }</div>
-<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div>
-<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; <span class="keywordtype">void</span> wait() {</div>
-<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; uint16_t diff;</div>
-<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; <span class="keywordflow">do</span> {</div>
-<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; diff = (micros() &amp; 0xFFFF) - mLastMicros;</div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; } <span class="keywordflow">while</span>(diff &lt; WAIT);</div>
-<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; }</div>
-<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div>
-<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keywordtype">void</span> mark() { mLastMicros = micros() &amp; 0xFFFF; }</div>
-<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;};</div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;</div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;FASTLED_NAMESPACE_BEGIN</div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;</div>
+<div class="line"><a name="l00011"></a><span class="lineno"><a class="line" href="class_c_min_wait.html"> 11</a></span>&#160;<span class="keyword">template</span>&lt;<span class="keywordtype">int</span> WAIT&gt; <span class="keyword">class </span><a class="code" href="class_c_min_wait.html">CMinWait</a> {</div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160; uint16_t mLastMicros;</div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; <a class="code" href="class_c_min_wait.html">CMinWait</a>() { mLastMicros = 0; }</div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; <span class="keywordtype">void</span> wait() {</div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; uint16_t diff;</div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; diff = (micros() &amp; 0xFFFF) - mLastMicros;</div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; } <span class="keywordflow">while</span>(diff &lt; WAIT);</div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; }</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div>
-<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div>
-<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment">// Clock cycle counted delay loop</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment">// Default is now just &#39;nop&#39;, with special case for AVR</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#if defined(__AVR__)</span></div>
-<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor"># define NOP __asm__ __volatile__ (&quot;cp r0,r0\n&quot;);</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor"># define NOP2 __asm__ __volatile__ (&quot;rjmp .+0&quot;);</span></div>
-<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor"># define NOP __asm__ __volatile__ (&quot;nop\n&quot;);</span></div>
-<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor"># define NOP2 __asm__ __volatile__ (&quot;nop\n\t nop\n&quot;);</span></div>
-<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div>
-<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment">// predeclaration to not upset the compiler</span></div>
-<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="keyword">template</span>&lt;<span class="keywordtype">int</span> CYCLES&gt; <span class="keyword">inline</span> <span class="keywordtype">void</span> delaycycles();</div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordtype">void</span> mark() { mLastMicros = micros() &amp; 0xFFFF; }</div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;};</div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment">// Clock cycle counted delay loop</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment">// Default is now just &#39;nop&#39;, with special case for AVR</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#if defined(__AVR__)</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor"># define NOP __asm__ __volatile__ (&quot;cp r0,r0\n&quot;);</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor"># define NOP2 __asm__ __volatile__ (&quot;rjmp .+0&quot;);</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor"># define NOP __asm__ __volatile__ (&quot;nop\n&quot;);</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor"># define NOP2 __asm__ __volatile__ (&quot;nop\n\t nop\n&quot;);</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div>
-<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment">// TODO: ARM version of _delaycycles_</span></div>
-<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div>
-<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment">// usable definition</span></div>
-<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor">#if defined(FASTLED_AVR)</span></div>
-<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment">// worker template - this will nop for LOOP * 3 + PAD cycles total</span></div>
-<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="keyword">template</span>&lt;<span class="keywordtype">int</span> LOOP, <span class="keywordtype">int</span> PAD&gt; <span class="keyword">inline</span> <span class="keywordtype">void</span> _delaycycles_AVR() {</div>
-<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; delaycycles&lt;PAD&gt;();</div>
-<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="comment">// the loop below is 3 cycles * LOOP. the LDI is one cycle,</span></div>
-<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="comment">// the DEC is 1 cycle, the BRNE is 2 cycles if looping back and</span></div>
-<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="comment">// 1 if not (the LDI balances out the BRNE being 1 cycle on exit)</span></div>
-<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; __asm__ __volatile__ (</div>
-<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="stringliteral">&quot; LDI R16, %0\n&quot;</span></div>
-<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="stringliteral">&quot;L_%=: DEC R16\n&quot;</span></div>
-<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="stringliteral">&quot; BRNE L_%=\n&quot;</span></div>
-<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; : <span class="comment">/* no outputs */</span></div>
-<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; : <span class="stringliteral">&quot;M&quot;</span> (LOOP)</div>
-<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; : <span class="stringliteral">&quot;r16&quot;</span></div>
-<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; );</div>
-<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;}</div>
-<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div>
-<div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="group___pixeltypes.html#gad47d9c821aeaaa0123d125a18ff961d5"> 62</a></span>&#160;<span class="keyword">template</span>&lt;<span class="keywordtype">int</span> CYCLES&gt; <a class="code" href="group___pixeltypes.html#gad47d9c821aeaaa0123d125a18ff961d5">__attribute__</a>((always_inline)) inline <span class="keywordtype">void</span> delaycycles() {</div>
-<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; _delaycycles_AVR&lt;CYCLES / 3, CYCLES % 3&gt;();</div>
-<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;}</div>
-<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="comment">// template&lt;int LOOP, int PAD&gt; inline void _delaycycles_ARM() {</span></div>
-<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment">// delaycycles&lt;PAD&gt;();</span></div>
-<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment">// // the loop below is 3 cycles * LOOP. the LDI is one cycle,</span></div>
-<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment">// // the DEC is 1 cycle, the BRNE is 2 cycles if looping back and</span></div>
-<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment">// // 1 if not (the LDI balances out the BRNE being 1 cycle on exit)</span></div>
-<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment">// __asm__ __volatile__ (</span></div>
-<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment">// &quot; mov.w r9, %0\n&quot;</span></div>
-<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="comment">// &quot;L_%=: subs.w r9, r9, #1\n&quot;</span></div>
-<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="comment">// &quot; bne.n L_%=\n&quot;</span></div>
-<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="comment">// : /* no outputs */</span></div>
-<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="comment">// : &quot;M&quot; (LOOP)</span></div>
-<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="comment">// : &quot;r9&quot;</span></div>
-<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="comment">// );</span></div>
-<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="comment">// }</span></div>
-<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div>
-<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;</div>
-<div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="group___pixeltypes.html#gad47d9c821aeaaa0123d125a18ff961d5"> 82</a></span>&#160;<span class="keyword">template</span>&lt;<span class="keywordtype">int</span> CYCLES&gt; <a class="code" href="group___pixeltypes.html#gad47d9c821aeaaa0123d125a18ff961d5">__attribute__</a>((always_inline)) inline <span class="keywordtype">void</span> delaycycles() {</div>
-<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="comment">// _delaycycles_ARM&lt;CYCLES / 3, CYCLES % 3&gt;();</span></div>
-<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; NOP; delaycycles&lt;CYCLES-1&gt;();</div>
-<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;}</div>
-<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;</div>
-<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="comment">// pre-instantiations for values small enough to not need the loop, as well as sanity holders</span></div>
-<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment">// for some negative values.</span></div>
-<div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="group___pixeltypes.html#gad47d9c821aeaaa0123d125a18ff961d5"> 90</a></span>&#160;<span class="keyword">template</span>&lt;&gt; <a class="code" href="group___pixeltypes.html#gad47d9c821aeaaa0123d125a18ff961d5">__attribute__</a>((always_inline)) inline <span class="keywordtype">void</span> delaycycles&lt;-6&gt;() {}</div>
-<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="keyword">template</span>&lt;&gt; <a class="code" href="group___pixeltypes.html#gad47d9c821aeaaa0123d125a18ff961d5">__attribute__</a>((always_inline)) inline <span class="keywordtype">void</span> delaycycles&lt;-5&gt;() {}</div>
-<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="keyword">template</span>&lt;&gt; <a class="code" href="group___pixeltypes.html#gad47d9c821aeaaa0123d125a18ff961d5">__attribute__</a>((always_inline)) inline <span class="keywordtype">void</span> delaycycles&lt;-4&gt;() {}</div>
-<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="keyword">template</span>&lt;&gt; <a class="code" href="group___pixeltypes.html#gad47d9c821aeaaa0123d125a18ff961d5">__attribute__</a>((always_inline)) inline <span class="keywordtype">void</span> delaycycles&lt;-3&gt;() {}</div>
-<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="keyword">template</span>&lt;&gt; <a class="code" href="group___pixeltypes.html#gad47d9c821aeaaa0123d125a18ff961d5">__attribute__</a>((always_inline)) inline <span class="keywordtype">void</span> delaycycles&lt;-2&gt;() {}</div>
-<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="keyword">template</span>&lt;&gt; <a class="code" href="group___pixeltypes.html#gad47d9c821aeaaa0123d125a18ff961d5">__attribute__</a>((always_inline)) inline <span class="keywordtype">void</span> delaycycles&lt;-1&gt;() {}</div>
-<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="keyword">template</span>&lt;&gt; <a class="code" href="group___pixeltypes.html#gad47d9c821aeaaa0123d125a18ff961d5">__attribute__</a>((always_inline)) inline <span class="keywordtype">void</span> delaycycles&lt;0&gt;() {}</div>
-<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="keyword">template</span>&lt;&gt; <a class="code" href="group___pixeltypes.html#gad47d9c821aeaaa0123d125a18ff961d5">__attribute__</a>((always_inline)) inline <span class="keywordtype">void</span> delaycycles&lt;1&gt;() {NOP;}</div>
-<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="keyword">template</span>&lt;&gt; <a class="code" href="group___pixeltypes.html#gad47d9c821aeaaa0123d125a18ff961d5">__attribute__</a>((always_inline)) inline <span class="keywordtype">void</span> delaycycles&lt;2&gt;() {NOP2;}</div>
-<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="keyword">template</span>&lt;&gt; <a class="code" href="group___pixeltypes.html#gad47d9c821aeaaa0123d125a18ff961d5">__attribute__</a>((always_inline)) inline <span class="keywordtype">void</span> delaycycles&lt;3&gt;() {NOP;NOP2;}</div>
-<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="keyword">template</span>&lt;&gt; <a class="code" href="group___pixeltypes.html#gad47d9c821aeaaa0123d125a18ff961d5">__attribute__</a>((always_inline)) inline <span class="keywordtype">void</span> delaycycles&lt;4&gt;() {NOP2;NOP2;}</div>
-<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="keyword">template</span>&lt;&gt; <a class="code" href="group___pixeltypes.html#gad47d9c821aeaaa0123d125a18ff961d5">__attribute__</a>((always_inline)) inline <span class="keywordtype">void</span> delaycycles&lt;5&gt;() {NOP2;NOP2;NOP;}</div>
-<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div>
-<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="comment">// Some timing related macros/definitions</span></div>
-<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div>
-<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="comment">// Macro to convert from nano-seconds to clocks and clocks to nano-seconds</span></div>
-<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="comment">// #define NS(_NS) (_NS / (1000 / (F_CPU / 1000000L)))</span></div>
-<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="preprocessor">#define F_CPU_MHZ (F_CPU / 1000000L)</span></div>
-<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;</div>
-<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="comment">// #define NS(_NS) ( (_NS * (F_CPU / 1000000L))) / 1000</span></div>
-<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="preprocessor">#define NS(_NS) (((_NS * F_CPU_MHZ) + 999) / 1000)</span></div>
-<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="preprocessor">#define CLKS_TO_MICROS(_CLKS) ((long)(_CLKS)) / (F_CPU / 1000000L)</span></div>
-<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div>
-<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="comment">// Macro for making sure there&#39;s enough time available</span></div>
-<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="preprocessor">#define NO_TIME(A, B, C) (NS(A) &lt; 3 || NS(B) &lt; 3 || NS(C) &lt; 6)</span></div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment">// predeclaration to not upset the compiler</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="keyword">template</span>&lt;<span class="keywordtype">int</span> CYCLES&gt; <span class="keyword">inline</span> <span class="keywordtype">void</span> delaycycles();</div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment">// TODO: ARM version of _delaycycles_</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment">// usable definition</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="preprocessor">#if defined(FASTLED_AVR)</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment">// worker template - this will nop for LOOP * 3 + PAD cycles total</span></div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="keyword">template</span>&lt;<span class="keywordtype">int</span> LOOP, <span class="keywordtype">int</span> PAD&gt; <span class="keyword">inline</span> <span class="keywordtype">void</span> _delaycycles_AVR() {</div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; delaycycles&lt;PAD&gt;();</div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="comment">// the loop below is 3 cycles * LOOP. the LDI is one cycle,</span></div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="comment">// the DEC is 1 cycle, the BRNE is 2 cycles if looping back and</span></div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="comment">// 1 if not (the LDI balances out the BRNE being 1 cycle on exit)</span></div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; __asm__ __volatile__ (</div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="stringliteral">&quot; LDI R16, %0\n&quot;</span></div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="stringliteral">&quot;L_%=: DEC R16\n&quot;</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="stringliteral">&quot; BRNE L_%=\n&quot;</span></div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; : <span class="comment">/* no outputs */</span></div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; : <span class="stringliteral">&quot;M&quot;</span> (LOOP)</div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; : <span class="stringliteral">&quot;r16&quot;</span></div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; );</div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;}</div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div>
+<div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="group___pixeltypes.html#gad47d9c821aeaaa0123d125a18ff961d5"> 65</a></span>&#160;<span class="keyword">template</span>&lt;<span class="keywordtype">int</span> CYCLES&gt; <a class="code" href="group___pixeltypes.html#gad47d9c821aeaaa0123d125a18ff961d5">__attribute__</a>((always_inline)) inline <span class="keywordtype">void</span> delaycycles() {</div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; _delaycycles_AVR&lt;CYCLES / 3, CYCLES % 3&gt;();</div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;}</div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment">// template&lt;int LOOP, int PAD&gt; inline void _delaycycles_ARM() {</span></div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment">// delaycycles&lt;PAD&gt;();</span></div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment">// // the loop below is 3 cycles * LOOP. the LDI is one cycle,</span></div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment">// // the DEC is 1 cycle, the BRNE is 2 cycles if looping back and</span></div>
+<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="comment">// // 1 if not (the LDI balances out the BRNE being 1 cycle on exit)</span></div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="comment">// __asm__ __volatile__ (</span></div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="comment">// &quot; mov.w r9, %0\n&quot;</span></div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="comment">// &quot;L_%=: subs.w r9, r9, #1\n&quot;</span></div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="comment">// &quot; bne.n L_%=\n&quot;</span></div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="comment">// : /* no outputs */</span></div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="comment">// : &quot;M&quot; (LOOP)</span></div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="comment">// : &quot;r9&quot;</span></div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="comment">// );</span></div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="comment">// }</span></div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;</div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;</div>
+<div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="group___pixeltypes.html#gad47d9c821aeaaa0123d125a18ff961d5"> 85</a></span>&#160;<span class="keyword">template</span>&lt;<span class="keywordtype">int</span> CYCLES&gt; <a class="code" href="group___pixeltypes.html#gad47d9c821aeaaa0123d125a18ff961d5">__attribute__</a>((always_inline)) inline <span class="keywordtype">void</span> delaycycles() {</div>
+<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="comment">// _delaycycles_ARM&lt;CYCLES / 3, CYCLES % 3&gt;();</span></div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; NOP; delaycycles&lt;CYCLES-1&gt;();</div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;}</div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;</div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="comment">// pre-instantiations for values small enough to not need the loop, as well as sanity holders</span></div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="comment">// for some negative values.</span></div>
+<div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="group___pixeltypes.html#gad47d9c821aeaaa0123d125a18ff961d5"> 93</a></span>&#160;<span class="keyword">template</span>&lt;&gt; <a class="code" href="group___pixeltypes.html#gad47d9c821aeaaa0123d125a18ff961d5">__attribute__</a>((always_inline)) inline <span class="keywordtype">void</span> delaycycles&lt;-6&gt;() {}</div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="keyword">template</span>&lt;&gt; <a class="code" href="group___pixeltypes.html#gad47d9c821aeaaa0123d125a18ff961d5">__attribute__</a>((always_inline)) inline <span class="keywordtype">void</span> delaycycles&lt;-5&gt;() {}</div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="keyword">template</span>&lt;&gt; <a class="code" href="group___pixeltypes.html#gad47d9c821aeaaa0123d125a18ff961d5">__attribute__</a>((always_inline)) inline <span class="keywordtype">void</span> delaycycles&lt;-4&gt;() {}</div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="keyword">template</span>&lt;&gt; <a class="code" href="group___pixeltypes.html#gad47d9c821aeaaa0123d125a18ff961d5">__attribute__</a>((always_inline)) inline <span class="keywordtype">void</span> delaycycles&lt;-3&gt;() {}</div>
+<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="keyword">template</span>&lt;&gt; <a class="code" href="group___pixeltypes.html#gad47d9c821aeaaa0123d125a18ff961d5">__attribute__</a>((always_inline)) inline <span class="keywordtype">void</span> delaycycles&lt;-2&gt;() {}</div>
+<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="keyword">template</span>&lt;&gt; <a class="code" href="group___pixeltypes.html#gad47d9c821aeaaa0123d125a18ff961d5">__attribute__</a>((always_inline)) inline <span class="keywordtype">void</span> delaycycles&lt;-1&gt;() {}</div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="keyword">template</span>&lt;&gt; <a class="code" href="group___pixeltypes.html#gad47d9c821aeaaa0123d125a18ff961d5">__attribute__</a>((always_inline)) inline <span class="keywordtype">void</span> delaycycles&lt;0&gt;() {}</div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="keyword">template</span>&lt;&gt; <a class="code" href="group___pixeltypes.html#gad47d9c821aeaaa0123d125a18ff961d5">__attribute__</a>((always_inline)) inline <span class="keywordtype">void</span> delaycycles&lt;1&gt;() {NOP;}</div>
+<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="keyword">template</span>&lt;&gt; <a class="code" href="group___pixeltypes.html#gad47d9c821aeaaa0123d125a18ff961d5">__attribute__</a>((always_inline)) inline <span class="keywordtype">void</span> delaycycles&lt;2&gt;() {NOP2;}</div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="keyword">template</span>&lt;&gt; <a class="code" href="group___pixeltypes.html#gad47d9c821aeaaa0123d125a18ff961d5">__attribute__</a>((always_inline)) inline <span class="keywordtype">void</span> delaycycles&lt;3&gt;() {NOP;NOP2;}</div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="keyword">template</span>&lt;&gt; <a class="code" href="group___pixeltypes.html#gad47d9c821aeaaa0123d125a18ff961d5">__attribute__</a>((always_inline)) inline <span class="keywordtype">void</span> delaycycles&lt;4&gt;() {NOP2;NOP2;}</div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="keyword">template</span>&lt;&gt; <a class="code" href="group___pixeltypes.html#gad47d9c821aeaaa0123d125a18ff961d5">__attribute__</a>((always_inline)) inline <span class="keywordtype">void</span> delaycycles&lt;5&gt;() {NOP2;NOP2;NOP;}</div>
+<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div>
+<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="comment">// Some timing related macros/definitions</span></div>
+<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;</div>
+<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="comment">// Macro to convert from nano-seconds to clocks and clocks to nano-seconds</span></div>
+<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="comment">// #define NS(_NS) (_NS / (1000 / (F_CPU / 1000000L)))</span></div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="preprocessor">#define F_CPU_MHZ (F_CPU / 1000000L)</span></div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;</div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="comment">// #define NS(_NS) ( (_NS * (F_CPU / 1000000L))) / 1000</span></div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="preprocessor">#define NS(_NS) (((_NS * F_CPU_MHZ) + 999) / 1000)</span></div>
+<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="preprocessor">#define CLKS_TO_MICROS(_CLKS) ((long)(_CLKS)) / (F_CPU / 1000000L)</span></div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;</div>
-<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;FASTLED_NAMESPACE_END</div>
-<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;</div>
-<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="ttc" id="class_c_min_wait_html"><div class="ttname"><a href="class_c_min_wait.html">CMinWait</a></div><div class="ttdoc">Class to ensure that a minimum amount of time has kicked since the last time run - and delay if not e...</div><div class="ttdef"><b>Definition:</b> fastled_delay.h:8</div></div>
-<div class="ttc" id="group___pixeltypes_html_gad47d9c821aeaaa0123d125a18ff961d5"><div class="ttname"><a href="group___pixeltypes.html#gad47d9c821aeaaa0123d125a18ff961d5">__attribute__</a></div><div class="ttdeci">__attribute__((always_inline)) inline void delaycycles()</div><div class="ttdoc">Do an 8byte by 8bit rotation. </div><div class="ttdef"><b>Definition:</b> fastled_delay.h:62</div></div>
+<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="comment">// Macro for making sure there&#39;s enough time available</span></div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="preprocessor">#define NO_TIME(A, B, C) (NS(A) &lt; 3 || NS(B) &lt; 3 || NS(C) &lt; 6)</span></div>
+<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;</div>
+<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;FASTLED_NAMESPACE_END</div>
+<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;</div>
+<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="ttc" id="class_c_min_wait_html"><div class="ttname"><a href="class_c_min_wait.html">CMinWait</a></div><div class="ttdoc">Class to ensure that a minimum amount of time has kicked since the last time run - and delay if not e...</div><div class="ttdef"><b>Definition:</b> fastled_delay.h:11</div></div>
+<div class="ttc" id="group___pixeltypes_html_gad47d9c821aeaaa0123d125a18ff961d5"><div class="ttname"><a href="group___pixeltypes.html#gad47d9c821aeaaa0123d125a18ff961d5">__attribute__</a></div><div class="ttdeci">__attribute__((always_inline)) inline void delaycycles()</div><div class="ttdoc">Do an 8byte by 8bit rotation. </div><div class="ttdef"><b>Definition:</b> fastled_delay.h:65</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/fastled__progmem_8h.html b/docs/3.1/fastled__progmem_8h.html
new file mode 100644
index 00000000..0ca478ff
--- /dev/null
+++ b/docs/3.1/fastled__progmem_8h.html
@@ -0,0 +1,105 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.9.1"/>
+<title>FastLED: fastled_progmem.h File Reference</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="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { init_search(); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">FastLED
+ &#160;<span id="projectnumber">3.1</span>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.9.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</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>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">fastled_progmem.h File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>wrapper definitions to allow seamless use of PROGMEM in environmens that have it
+<a href="#details">More...</a></p>
+
+<p><a href="fastled__progmem_8h_source.html">Go to the source code of this file.</a></p>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>wrapper definitions to allow seamless use of PROGMEM in environmens that have it </p>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.9.1
+</small></address>
+</body>
+</html>
diff --git a/docs/3.1/fastled__progmem_8h_source.html b/docs/3.1/fastled__progmem_8h_source.html
index 4a6eda14..6c099045 100644
--- a/docs/3.1/fastled__progmem_8h_source.html
+++ b/docs/3.1/fastled__progmem_8h_source.html
@@ -87,71 +87,72 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="title">fastled_progmem.h</div> </div>
</div><!--header-->
<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#ifndef __INC_FL_PROGMEM_H</span></div>
+<a href="fastled__progmem_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#ifndef __INC_FL_PROGMEM_H</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="preprocessor">#define __INC_FL_PROGMEM_H</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;</div>
-<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;FASTLED_NAMESPACE_BEGIN</div>
-<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;</div>
-<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// Compatibility layer for devices that do or don&#39;t</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">// have &quot;PROGMEM&quot; and the associated pgm_ accessors.</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// If a platform supports PROGMEM, it should define</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// &quot;FASTLED_USE_PROGMEM&quot; as 1, otherwise FastLED will</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// fall back to NOT using PROGMEM.</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// Whether or not pgmspace.h is #included is separately</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// controllable by FASTLED_INCLUDE_PGMSPACE, if needed.</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
-<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment">// If FASTLED_USE_PROGMEM is 1, we&#39;ll map FL_PROGMEM</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// and the FL_PGM_* accessors to the Arduino equivalents.</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#if FASTLED_USE_PROGMEM == 1</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#ifndef FASTLED_INCLUDE_PGMSPACE</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#define FASTLED_INCLUDE_PGMSPACE 1</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div>
-<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#if FASTLED_INCLUDE_PGMSPACE == 1</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &lt;avr/pgmspace.h&gt;</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div>
-<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#define FL_PROGMEM PROGMEM</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div>
-<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment">// Note: only the &#39;near&#39; memory wrappers are provided.</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment">// If you&#39;re using &#39;far&#39; memory, you already have</span></div>
-<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment">// portability issues to work through, but you could</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment">// add more support here if needed.</span></div>
-<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#define FL_PGM_READ_BYTE_NEAR(x) (pgm_read_byte_near(x))</span></div>
-<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#define FL_PGM_READ_WORD_NEAR(x) (pgm_read_word_near(x))</span></div>
-<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#define FL_PGM_READ_DWORD_NEAR(x) (pgm_read_dword_near(x))</span></div>
-<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div>
-<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment">// Workaround for http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34734</span></div>
-<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#ifdef FASTLED_AVR</span></div>
-<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#ifdef PROGMEM</span></div>
-<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#undef PROGMEM</span></div>
-<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#define PROGMEM __attribute__((section(&quot;.progmem.data&quot;)))</span></div>
-<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div>
-<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment">// If FASTLED_USE_PROGMEM is 0 or undefined,</span></div>
-<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment">// we&#39;ll use regular memory (RAM) access.</span></div>
-<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div>
-<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment">//empty PROGMEM simulation</span></div>
-<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="preprocessor">#define FL_PROGMEM</span></div>
-<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="preprocessor">#define FL_PGM_READ_BYTE_NEAR(x) (*((const uint8_t*)(x)))</span></div>
-<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="preprocessor">#define FL_PGM_READ_WORD_NEAR(x) (*((const uint16_t*)(x)))</span></div>
-<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="preprocessor">#define FL_PGM_READ_DWORD_NEAR(x) (*((const uint32_t*)(x)))</span></div>
-<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div>
-<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;</div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;FASTLED_NAMESPACE_BEGIN</div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;</div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// Compatibility layer for devices that do or don&#39;t</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// have &quot;PROGMEM&quot; and the associated pgm_ accessors.</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// If a platform supports PROGMEM, it should define</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// &quot;FASTLED_USE_PROGMEM&quot; as 1, otherwise FastLED will</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// fall back to NOT using PROGMEM.</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// Whether or not pgmspace.h is #included is separately</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment">// controllable by FASTLED_INCLUDE_PGMSPACE, if needed.</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;</div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">// If FASTLED_USE_PROGMEM is 1, we&#39;ll map FL_PROGMEM</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">// and the FL_PGM_* accessors to the Arduino equivalents.</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#if FASTLED_USE_PROGMEM == 1</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#ifndef FASTLED_INCLUDE_PGMSPACE</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#define FASTLED_INCLUDE_PGMSPACE 1</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#if FASTLED_INCLUDE_PGMSPACE == 1</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &lt;avr/pgmspace.h&gt;</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define FL_PROGMEM PROGMEM</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment">// Note: only the &#39;near&#39; memory wrappers are provided.</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment">// If you&#39;re using &#39;far&#39; memory, you already have</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment">// portability issues to work through, but you could</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment">// add more support here if needed.</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#define FL_PGM_READ_BYTE_NEAR(x) (pgm_read_byte_near(x))</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#define FL_PGM_READ_WORD_NEAR(x) (pgm_read_word_near(x))</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#define FL_PGM_READ_DWORD_NEAR(x) (pgm_read_dword_near(x))</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment">// Workaround for http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34734</span></div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#ifdef FASTLED_AVR</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#ifdef PROGMEM</span></div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor">#undef PROGMEM</span></div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor">#define PROGMEM __attribute__((section(&quot;.progmem.data&quot;)))</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment">// If FASTLED_USE_PROGMEM is 0 or undefined,</span></div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment">// we&#39;ll use regular memory (RAM) access.</span></div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment">//empty PROGMEM simulation</span></div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="preprocessor">#define FL_PROGMEM</span></div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="preprocessor">#define FL_PGM_READ_BYTE_NEAR(x) (*((const uint8_t*)(x)))</span></div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor">#define FL_PGM_READ_WORD_NEAR(x) (*((const uint16_t*)(x)))</span></div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="preprocessor">#define FL_PGM_READ_DWORD_NEAR(x) (*((const uint32_t*)(x)))</span></div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div>
-<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;FASTLED_NAMESPACE_END</div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div>
-<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;FASTLED_NAMESPACE_END</div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="preprocessor">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/fastpin_8h.html b/docs/3.1/fastpin_8h.html
new file mode 100644
index 00000000..e53fcd93
--- /dev/null
+++ b/docs/3.1/fastpin_8h.html
@@ -0,0 +1,140 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.9.1"/>
+<title>FastLED: fastpin.h File Reference</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="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { init_search(); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">FastLED
+ &#160;<span id="projectnumber">3.1</span>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.9.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</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>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#typedef-members">Typedefs</a> </div>
+ <div class="headertitle">
+<div class="title">fastpin.h File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Class base definitions for defining fast pin access.
+<a href="#details">More...</a></p>
+
+<p><a href="fastpin_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_selectable.html">Selectable</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_pin.html">Pin</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_output_pin.html">OutputPin</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_input_pin.html">InputPin</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_pin.html">Pin</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_output_pin.html">OutputPin</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_input_pin.html">InputPin</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_fast_pin.html">FastPin&lt; PIN &gt;</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">The simplest level of <a class="el" href="class_pin.html">Pin</a> class. <a href="class_fast_pin.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_fast_pin_b_b.html">FastPinBB&lt; PIN &gt;</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
+Typedefs</h2></td></tr>
+<tr class="memitem:aacb3c54d0417496589a08af0cbbb229b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aacb3c54d0417496589a08af0cbbb229b"></a>
+typedef volatile uint32_t &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>reg32_t</b></td></tr>
+<tr class="separator:aacb3c54d0417496589a08af0cbbb229b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3459200771dcb25906c9fe4857e76af7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3459200771dcb25906c9fe4857e76af7"></a>
+typedef volatile uint32_t *&#160;</td><td class="memItemRight" valign="bottom"><b>ptr_reg32_t</b></td></tr>
+<tr class="separator:a3459200771dcb25906c9fe4857e76af7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Class base definitions for defining fast pin access. </p>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.9.1
+</small></address>
+</body>
+</html>
diff --git a/docs/3.1/fastpin_8h_source.html b/docs/3.1/fastpin_8h_source.html
index 85ff74b1..c6300dbd 100644
--- a/docs/3.1/fastpin_8h_source.html
+++ b/docs/3.1/fastpin_8h_source.html
@@ -87,200 +87,201 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="title">fastpin.h</div> </div>
</div><!--header-->
<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#ifndef __INC_FASTPIN_H</span></div>
+<a href="fastpin_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#ifndef __INC_FASTPIN_H</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="preprocessor">#define __INC_FASTPIN_H</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;</div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#include &quot;led_sysdefs.h&quot;</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;</div>
-<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;FASTLED_NAMESPACE_BEGIN</div>
-<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div>
-<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#define NO_PIN 255</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;</div>
-<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// Pin access class - needs to tune for various platforms (naive fallback solution?)</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00016"></a><span class="lineno"><a class="line" href="class_selectable.html"> 16</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_selectable.html">Selectable</a> {</div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> select() = 0;</div>
-<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> release() = 0;</div>
-<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> isSelected() = 0;</div>
-<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;};</div>
-<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div>
-<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#if !defined(FASTLED_NO_PINMAP)</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div>
-<div class="line"><a name="l00025"></a><span class="lineno"><a class="line" href="class_pin.html"> 25</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_pin.html">Pin</a> : <span class="keyword">public</span> <a class="code" href="class_selectable.html">Selectable</a> {</div>
-<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keyword">volatile</span> RwReg *mPort;</div>
-<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keyword">volatile</span> RoReg *mInPort;</div>
-<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; RwReg mPinMask;</div>
-<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; uint8_t mPin;</div>
-<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div>
-<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordtype">void</span> _init() {</div>
-<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; mPinMask = digitalPinToBitMask(mPin);</div>
-<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; mPort = portOutputRegister(digitalPinToPort(mPin));</div>
-<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; mInPort = portInputRegister(digitalPinToPort(mPin));</div>
-<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; }</div>
-<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <a class="code" href="class_pin.html">Pin</a>(<span class="keywordtype">int</span> pin) : mPin(pin) { _init(); }</div>
-<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div>
-<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keyword">typedef</span> <span class="keyword">volatile</span> RwReg * port_ptr_t;</div>
-<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keyword">typedef</span> RwReg port_t;</div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;</div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;FASTLED_NAMESPACE_BEGIN</div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;</div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#define NO_PIN 255</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// Pin access class - needs to tune for various platforms (naive fallback solution?)</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"><a class="line" href="class_selectable.html"> 19</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_selectable.html">Selectable</a> {</div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> select() = 0;</div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> release() = 0;</div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> isSelected() = 0;</div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;};</div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#if !defined(FASTLED_NO_PINMAP)</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div>
+<div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="class_pin.html"> 28</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_pin.html">Pin</a> : <span class="keyword">public</span> <a class="code" href="class_selectable.html">Selectable</a> {</div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keyword">volatile</span> RwReg *mPort;</div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">volatile</span> RoReg *mInPort;</div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; RwReg mPinMask;</div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; uint8_t mPin;</div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordtype">void</span> _init() {</div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; mPinMask = digitalPinToBitMask(mPin);</div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; mPort = portOutputRegister(digitalPinToPort(mPin));</div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; mInPort = portInputRegister(digitalPinToPort(mPin));</div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; }</div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <a class="code" href="class_pin.html">Pin</a>(<span class="keywordtype">int</span> pin) : mPin(pin) { _init(); }</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div>
-<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> setOutput() { pinMode(mPin, OUTPUT); }</div>
-<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> setInput() { pinMode(mPin, INPUT); }</div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">typedef</span> <span class="keyword">volatile</span> RwReg * port_ptr_t;</div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">typedef</span> RwReg port_t;</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div>
-<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> hi() <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { *mPort |= mPinMask; }</div>
-<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> lo() <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { *mPort &amp;= ~mPinMask; }</div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> setOutput() { pinMode(mPin, OUTPUT); }</div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> setInput() { pinMode(mPin, INPUT); }</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div>
-<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> strobe() <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { toggle(); toggle(); }</div>
-<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> toggle() <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { *mInPort = mPinMask; }</div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> hi() <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { *mPort |= mPinMask; }</div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> lo() <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { *mPort &amp;= ~mPinMask; }</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div>
-<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> hi(<span class="keyword">register</span> port_ptr_t port) <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { *port |= mPinMask; }</div>
-<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> lo(<span class="keyword">register</span> port_ptr_t port) <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { *port &amp;= ~mPinMask; }</div>
-<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> set(<span class="keyword">register</span> port_t val) <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { *mPort = val; }</div>
-<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div>
-<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> fastset(<span class="keyword">register</span> port_ptr_t port, <span class="keyword">register</span> port_t val) <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { *port = val; }</div>
-<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div>
-<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; port_t hival() <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { <span class="keywordflow">return</span> *mPort | mPinMask; }</div>
-<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; port_t loval() <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { <span class="keywordflow">return</span> *mPort &amp; ~mPinMask; }</div>
-<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; port_ptr_t port() <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { <span class="keywordflow">return</span> mPort; }</div>
-<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; port_t mask() <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { <span class="keywordflow">return</span> mPinMask; }</div>
-<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div>
-<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> select() { hi(); }</div>
-<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> release() { lo(); }</div>
-<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> isSelected() { <span class="keywordflow">return</span> (*mPort &amp; mPinMask) == mPinMask; }</div>
-<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;};</div>
-<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div>
-<div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="class_output_pin.html"> 67</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_output_pin.html">OutputPin</a> : <span class="keyword">public</span> <a class="code" href="class_pin.html">Pin</a> {</div>
-<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <a class="code" href="class_output_pin.html">OutputPin</a>(<span class="keywordtype">int</span> pin) : <a class="code" href="class_pin.html">Pin</a>(pin) { setOutput(); }</div>
-<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;};</div>
-<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div>
-<div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="class_input_pin.html"> 72</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_input_pin.html">InputPin</a> : <span class="keyword">public</span> <a class="code" href="class_pin.html">Pin</a> {</div>
-<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="code" href="class_input_pin.html">InputPin</a>(<span class="keywordtype">int</span> pin) : <a class="code" href="class_pin.html">Pin</a>(pin) { setInput(); }</div>
-<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;};</div>
-<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div>
-<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="comment">// This is the empty code version of the raw pin class, method bodies should be filled in to Do The Right Thing[tm] when making this</span></div>
-<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="comment">// available on a new platform</span></div>
-<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="keyword">class </span><a class="code" href="class_pin.html">Pin</a> : <span class="keyword">public</span> <a class="code" href="class_selectable.html">Selectable</a> {</div>
-<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keyword">volatile</span> RwReg *mPort;</div>
-<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keyword">volatile</span> RoReg *mInPort;</div>
-<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; RwReg mPinMask;</div>
-<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; uint8_t mPin;</div>
-<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;</div>
-<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordtype">void</span> _init() {</div>
-<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="comment">// TODO: fill in init on a new platform</span></div>
-<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; mPinMask = 0;</div>
-<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; mPort = NULL;</div>
-<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; mInPort = NULL;</div>
-<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div>
-<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <a class="code" href="class_pin.html">Pin</a>(<span class="keywordtype">int</span> pin) : mPin(pin) { _init(); }</div>
-<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div>
-<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordtype">void</span> setPin(<span class="keywordtype">int</span> pin) { mPin = pin; _init(); }</div>
-<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div>
-<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keyword">typedef</span> <span class="keyword">volatile</span> RwReg * port_ptr_t;</div>
-<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keyword">typedef</span> RwReg port_t;</div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> strobe() <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { toggle(); toggle(); }</div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> toggle() <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { *mInPort = mPinMask; }</div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> hi(<span class="keyword">register</span> port_ptr_t port) <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { *port |= mPinMask; }</div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> lo(<span class="keyword">register</span> port_ptr_t port) <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { *port &amp;= ~mPinMask; }</div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> set(<span class="keyword">register</span> port_t val) <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { *mPort = val; }</div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> fastset(<span class="keyword">register</span> port_ptr_t port, <span class="keyword">register</span> port_t val) <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { *port = val; }</div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; port_t hival() <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { <span class="keywordflow">return</span> *mPort | mPinMask; }</div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; port_t loval() <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { <span class="keywordflow">return</span> *mPort &amp; ~mPinMask; }</div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; port_ptr_t port() <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { <span class="keywordflow">return</span> mPort; }</div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; port_t mask() <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { <span class="keywordflow">return</span> mPinMask; }</div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> select() { hi(); }</div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> release() { lo(); }</div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> isSelected() { <span class="keywordflow">return</span> (*mPort &amp; mPinMask) == mPinMask; }</div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;};</div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div>
+<div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="class_output_pin.html"> 70</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_output_pin.html">OutputPin</a> : <span class="keyword">public</span> <a class="code" href="class_pin.html">Pin</a> {</div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <a class="code" href="class_output_pin.html">OutputPin</a>(<span class="keywordtype">int</span> pin) : <a class="code" href="class_pin.html">Pin</a>(pin) { setOutput(); }</div>
+<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;};</div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div>
+<div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="class_input_pin.html"> 75</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_input_pin.html">InputPin</a> : <span class="keyword">public</span> <a class="code" href="class_pin.html">Pin</a> {</div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <a class="code" href="class_input_pin.html">InputPin</a>(<span class="keywordtype">int</span> pin) : <a class="code" href="class_pin.html">Pin</a>(pin) { setInput(); }</div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;};</div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="comment">// This is the empty code version of the raw pin class, method bodies should be filled in to Do The Right Thing[tm] when making this</span></div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="comment">// available on a new platform</span></div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="keyword">class </span><a class="code" href="class_pin.html">Pin</a> : <span class="keyword">public</span> <a class="code" href="class_selectable.html">Selectable</a> {</div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keyword">volatile</span> RwReg *mPort;</div>
+<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keyword">volatile</span> RoReg *mInPort;</div>
+<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; RwReg mPinMask;</div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; uint8_t mPin;</div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;</div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordtype">void</span> _init() {</div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="comment">// TODO: fill in init on a new platform</span></div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; mPinMask = 0;</div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; mPort = NULL;</div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; mInPort = NULL;</div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; }</div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <a class="code" href="class_pin.html">Pin</a>(<span class="keywordtype">int</span> pin) : mPin(pin) { _init(); }</div>
+<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;</div>
+<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordtype">void</span> setPin(<span class="keywordtype">int</span> pin) { mPin = pin; _init(); }</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div>
-<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> setOutput() { <span class="comment">/* TODO: Set pin output */</span> }</div>
-<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> setInput() { <span class="comment">/* TODO: Set pin input */</span> }</div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keyword">typedef</span> <span class="keyword">volatile</span> RwReg * port_ptr_t;</div>
+<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keyword">typedef</span> RwReg port_t;</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div>
-<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> hi() <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { *mPort |= mPinMask; }</div>
-<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> lo() <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { *mPort &amp;= ~mPinMask; }</div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> setOutput() { <span class="comment">/* TODO: Set pin output */</span> }</div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> setInput() { <span class="comment">/* TODO: Set pin input */</span> }</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div>
-<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> strobe() <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { toggle(); toggle(); }</div>
-<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> toggle() <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { *mInPort = mPinMask; }</div>
+<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> hi() <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { *mPort |= mPinMask; }</div>
+<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> lo() <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { *mPort &amp;= ~mPinMask; }</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;</div>
-<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> hi(<span class="keyword">register</span> port_ptr_t port) <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { *port |= mPinMask; }</div>
-<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> lo(<span class="keyword">register</span> port_ptr_t port) <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { *port &amp;= ~mPinMask; }</div>
-<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> set(<span class="keyword">register</span> port_t val) <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { *mPort = val; }</div>
-<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div>
-<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> fastset(<span class="keyword">register</span> port_ptr_t port, <span class="keyword">register</span> port_t val) <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { *port = val; }</div>
-<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;</div>
-<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; port_t hival() <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { <span class="keywordflow">return</span> *mPort | mPinMask; }</div>
-<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; port_t loval() <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { <span class="keywordflow">return</span> *mPort &amp; ~mPinMask; }</div>
-<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; port_ptr_t port() <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { <span class="keywordflow">return</span> mPort; }</div>
-<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; port_t mask() <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { <span class="keywordflow">return</span> mPinMask; }</div>
-<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;</div>
-<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> select() { hi(); }</div>
-<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> release() { lo(); }</div>
-<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> isSelected() { <span class="keywordflow">return</span> (*mPort &amp; mPinMask) == mPinMask; }</div>
-<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;};</div>
-<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div>
-<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="keyword">class </span><a class="code" href="class_output_pin.html">OutputPin</a> : <span class="keyword">public</span> <a class="code" href="class_pin.html">Pin</a> {</div>
-<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <a class="code" href="class_output_pin.html">OutputPin</a>(<span class="keywordtype">int</span> pin) : <a class="code" href="class_pin.html">Pin</a>(pin) { setOutput(); }</div>
-<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;};</div>
-<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;</div>
-<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="keyword">class </span><a class="code" href="class_input_pin.html">InputPin</a> : <span class="keyword">public</span> <a class="code" href="class_pin.html">Pin</a> {</div>
-<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="class_input_pin.html">InputPin</a>(<span class="keywordtype">int</span> pin) : <a class="code" href="class_pin.html">Pin</a>(pin) { setInput(); }</div>
-<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;};</div>
-<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;</div>
-<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;</div>
-<div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="class_fast_pin.html"> 151</a></span>&#160;<span class="keyword">template</span>&lt;u<span class="keywordtype">int</span>8_t PIN&gt; <span class="keyword">class </span><a class="code" href="class_fast_pin.html">FastPin</a> {</div>
-<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keyword">static</span> RwReg sPinMask;</div>
-<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keyword">static</span> <span class="keyword">volatile</span> RwReg *sPort;</div>
-<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keyword">static</span> <span class="keyword">volatile</span> RoReg *sInPort;</div>
-<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> _init() {</div>
-<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;<span class="preprocessor">#if !defined(FASTLED_NO_PINMAP)</span></div>
-<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; sPinMask = digitalPinToBitMask(PIN);</div>
-<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; sPort = portOutputRegister(digitalPinToPort(PIN));</div>
-<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; sInPort = portInputRegister(digitalPinToPort(PIN));</div>
-<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; }</div>
-<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keyword">typedef</span> <span class="keyword">volatile</span> RwReg * port_ptr_t;</div>
-<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keyword">typedef</span> RwReg port_t;</div>
-<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;</div>
-<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> setOutput() { _init(); pinMode(PIN, OUTPUT); }</div>
-<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> setInput() { _init(); pinMode(PIN, INPUT); }</div>
+<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> strobe() <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { toggle(); toggle(); }</div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> toggle() <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { *mInPort = mPinMask; }</div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;</div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> hi(<span class="keyword">register</span> port_ptr_t port) <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { *port |= mPinMask; }</div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> lo(<span class="keyword">register</span> port_ptr_t port) <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { *port &amp;= ~mPinMask; }</div>
+<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> set(<span class="keyword">register</span> port_t val) <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { *mPort = val; }</div>
+<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;</div>
+<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> fastset(<span class="keyword">register</span> port_ptr_t port, <span class="keyword">register</span> port_t val) <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { *port = val; }</div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;</div>
+<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; port_t hival() <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { <span class="keywordflow">return</span> *mPort | mPinMask; }</div>
+<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; port_t loval() <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { <span class="keywordflow">return</span> *mPort &amp; ~mPinMask; }</div>
+<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; port_ptr_t port() <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { <span class="keywordflow">return</span> mPort; }</div>
+<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; port_t mask() <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { <span class="keywordflow">return</span> mPinMask; }</div>
+<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;</div>
+<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> select() { hi(); }</div>
+<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> release() { lo(); }</div>
+<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> isSelected() { <span class="keywordflow">return</span> (*mPort &amp; mPinMask) == mPinMask; }</div>
+<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;};</div>
+<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div>
+<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="keyword">class </span><a class="code" href="class_output_pin.html">OutputPin</a> : <span class="keyword">public</span> <a class="code" href="class_pin.html">Pin</a> {</div>
+<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <a class="code" href="class_output_pin.html">OutputPin</a>(<span class="keywordtype">int</span> pin) : <a class="code" href="class_pin.html">Pin</a>(pin) { setOutput(); }</div>
+<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;};</div>
+<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;</div>
+<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="keyword">class </span><a class="code" href="class_input_pin.html">InputPin</a> : <span class="keyword">public</span> <a class="code" href="class_pin.html">Pin</a> {</div>
+<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <a class="code" href="class_input_pin.html">InputPin</a>(<span class="keywordtype">int</span> pin) : <a class="code" href="class_pin.html">Pin</a>(pin) { setInput(); }</div>
+<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;};</div>
+<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;</div>
+<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;</div>
+<div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="class_fast_pin.html"> 154</a></span>&#160;<span class="keyword">template</span>&lt;u<span class="keywordtype">int</span>8_t PIN&gt; <span class="keyword">class </span><a class="code" href="class_fast_pin.html">FastPin</a> {</div>
+<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keyword">static</span> RwReg sPinMask;</div>
+<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keyword">static</span> <span class="keyword">volatile</span> RwReg *sPort;</div>
+<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keyword">static</span> <span class="keyword">volatile</span> RoReg *sInPort;</div>
+<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> _init() {</div>
+<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="preprocessor">#if !defined(FASTLED_NO_PINMAP)</span></div>
+<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; sPinMask = digitalPinToBitMask(PIN);</div>
+<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; sPort = portOutputRegister(digitalPinToPort(PIN));</div>
+<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; sInPort = portInputRegister(digitalPinToPort(PIN));</div>
+<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; }</div>
+<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keyword">typedef</span> <span class="keyword">volatile</span> RwReg * port_ptr_t;</div>
+<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keyword">typedef</span> RwReg port_t;</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;</div>
-<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> hi() <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { *sPort |= sPinMask; }</div>
-<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> lo() <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { *sPort &amp;= ~sPinMask; }</div>
+<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> setOutput() { _init(); pinMode(PIN, OUTPUT); }</div>
+<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> setInput() { _init(); pinMode(PIN, INPUT); }</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;</div>
-<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> strobe() <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { toggle(); toggle(); }</div>
-<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;</div>
-<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> toggle() <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { *sInPort = sPinMask; }</div>
-<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;</div>
-<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> hi(<span class="keyword">register</span> port_ptr_t port) <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { *port |= sPinMask; }</div>
-<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> lo(<span class="keyword">register</span> port_ptr_t port) <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { *port &amp;= ~sPinMask; }</div>
-<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> set(<span class="keyword">register</span> port_t val) <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { *sPort = val; }</div>
-<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;</div>
-<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> fastset(<span class="keyword">register</span> port_ptr_t port, <span class="keyword">register</span> port_t val) <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { *port = val; }</div>
-<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;</div>
-<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keyword">static</span> port_t hival() <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { <span class="keywordflow">return</span> *sPort | sPinMask; }</div>
-<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keyword">static</span> port_t loval() <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { <span class="keywordflow">return</span> *sPort &amp; ~sPinMask; }</div>
-<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keyword">static</span> port_ptr_t port() <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { <span class="keywordflow">return</span> sPort; }</div>
-<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keyword">static</span> port_t mask() <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { <span class="keywordflow">return</span> sPinMask; }</div>
-<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;};</div>
-<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;</div>
-<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;<span class="keyword">template</span>&lt;u<span class="keywordtype">int</span>8_t PIN&gt; RwReg <a class="code" href="class_fast_pin.html">FastPin&lt;PIN&gt;::sPinMask</a>;</div>
-<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;<span class="keyword">template</span>&lt;u<span class="keywordtype">int</span>8_t PIN&gt; <span class="keyword">volatile</span> RwReg *<a class="code" href="class_fast_pin.html">FastPin&lt;PIN&gt;::sPort</a>;</div>
-<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;<span class="keyword">template</span>&lt;u<span class="keywordtype">int</span>8_t PIN&gt; <span class="keyword">volatile</span> RoReg *<a class="code" href="class_fast_pin.html">FastPin&lt;PIN&gt;::sInPort</a>;</div>
-<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;</div>
-<div class="line"><a name="l00192"></a><span class="lineno"><a class="line" href="class_fast_pin_b_b.html"> 192</a></span>&#160;<span class="keyword">template</span>&lt;u<span class="keywordtype">int</span>8_t PIN&gt; <span class="keyword">class </span><a class="code" href="class_fast_pin_b_b.html">FastPinBB</a> : <span class="keyword">public</span> <a class="code" href="class_fast_pin.html">FastPin</a>&lt;PIN&gt; {};</div>
-<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;</div>
-<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;<span class="keyword">typedef</span> <span class="keyword">volatile</span> uint32_t &amp; reg32_t;</div>
-<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;<span class="keyword">typedef</span> <span class="keyword">volatile</span> uint32_t * ptr_reg32_t;</div>
+<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> hi() <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { *sPort |= sPinMask; }</div>
+<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> lo() <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { *sPort &amp;= ~sPinMask; }</div>
+<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;</div>
+<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> strobe() <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { toggle(); toggle(); }</div>
+<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;</div>
+<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> toggle() <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { *sInPort = sPinMask; }</div>
+<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;</div>
+<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> hi(<span class="keyword">register</span> port_ptr_t port) <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { *port |= sPinMask; }</div>
+<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> lo(<span class="keyword">register</span> port_ptr_t port) <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { *port &amp;= ~sPinMask; }</div>
+<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> set(<span class="keyword">register</span> port_t val) <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { *sPort = val; }</div>
+<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;</div>
+<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> fastset(<span class="keyword">register</span> port_ptr_t port, <span class="keyword">register</span> port_t val) <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { *port = val; }</div>
+<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;</div>
+<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keyword">static</span> port_t hival() <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { <span class="keywordflow">return</span> *sPort | sPinMask; }</div>
+<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keyword">static</span> port_t loval() <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { <span class="keywordflow">return</span> *sPort &amp; ~sPinMask; }</div>
+<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keyword">static</span> port_ptr_t port() <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { <span class="keywordflow">return</span> sPort; }</div>
+<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keyword">static</span> port_t mask() <a class="code" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a> ((always_inline)) { <span class="keywordflow">return</span> sPinMask; }</div>
+<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;};</div>
+<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;</div>
+<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;<span class="keyword">template</span>&lt;u<span class="keywordtype">int</span>8_t PIN&gt; RwReg <a class="code" href="class_fast_pin.html">FastPin&lt;PIN&gt;::sPinMask</a>;</div>
+<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="keyword">template</span>&lt;u<span class="keywordtype">int</span>8_t PIN&gt; <span class="keyword">volatile</span> RwReg *<a class="code" href="class_fast_pin.html">FastPin&lt;PIN&gt;::sPort</a>;</div>
+<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;<span class="keyword">template</span>&lt;u<span class="keywordtype">int</span>8_t PIN&gt; <span class="keyword">volatile</span> RoReg *<a class="code" href="class_fast_pin.html">FastPin&lt;PIN&gt;::sInPort</a>;</div>
+<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;</div>
+<div class="line"><a name="l00195"></a><span class="lineno"><a class="line" href="class_fast_pin_b_b.html"> 195</a></span>&#160;<span class="keyword">template</span>&lt;u<span class="keywordtype">int</span>8_t PIN&gt; <span class="keyword">class </span><a class="code" href="class_fast_pin_b_b.html">FastPinBB</a> : <span class="keyword">public</span> <a class="code" href="class_fast_pin.html">FastPin</a>&lt;PIN&gt; {};</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;</div>
-<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;FASTLED_NAMESPACE_END</div>
-<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;</div>
-<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;<span class="preprocessor">#endif // __INC_FASTPIN_H</span></div>
-<div class="ttc" id="class_pin_html"><div class="ttname"><a href="class_pin.html">Pin</a></div><div class="ttdef"><b>Definition:</b> fastpin.h:25</div></div>
-<div class="ttc" id="class_output_pin_html"><div class="ttname"><a href="class_output_pin.html">OutputPin</a></div><div class="ttdef"><b>Definition:</b> fastpin.h:67</div></div>
-<div class="ttc" id="class_fast_pin_b_b_html"><div class="ttname"><a href="class_fast_pin_b_b.html">FastPinBB</a></div><div class="ttdef"><b>Definition:</b> fastpin.h:192</div></div>
-<div class="ttc" id="class_selectable_html"><div class="ttname"><a href="class_selectable.html">Selectable</a></div><div class="ttdef"><b>Definition:</b> fastpin.h:16</div></div>
-<div class="ttc" id="class_fast_pin_html"><div class="ttname"><a href="class_fast_pin.html">FastPin</a></div><div class="ttdoc">The simplest level of Pin class. </div><div class="ttdef"><b>Definition:</b> fastpin.h:151</div></div>
-<div class="ttc" id="group___bitswap_html_ga01396a2e40133293c3badab349ac99f0"><div class="ttname"><a href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a></div><div class="ttdeci">__attribute__((always_inline)) inline void swapbits8(bitswap_type in</div><div class="ttdoc">Do an 8byte by 8bit rotation. </div><div class="ttdef"><b>Definition:</b> fastled_delay.h:82</div></div>
-<div class="ttc" id="class_input_pin_html"><div class="ttname"><a href="class_input_pin.html">InputPin</a></div><div class="ttdef"><b>Definition:</b> fastpin.h:72</div></div>
+<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="keyword">typedef</span> <span class="keyword">volatile</span> uint32_t &amp; reg32_t;</div>
+<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;<span class="keyword">typedef</span> <span class="keyword">volatile</span> uint32_t * ptr_reg32_t;</div>
+<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;</div>
+<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;FASTLED_NAMESPACE_END</div>
+<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;</div>
+<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;<span class="preprocessor">#endif // __INC_FASTPIN_H</span></div>
+<div class="ttc" id="class_pin_html"><div class="ttname"><a href="class_pin.html">Pin</a></div><div class="ttdef"><b>Definition:</b> fastpin.h:28</div></div>
+<div class="ttc" id="class_output_pin_html"><div class="ttname"><a href="class_output_pin.html">OutputPin</a></div><div class="ttdef"><b>Definition:</b> fastpin.h:70</div></div>
+<div class="ttc" id="class_fast_pin_b_b_html"><div class="ttname"><a href="class_fast_pin_b_b.html">FastPinBB</a></div><div class="ttdef"><b>Definition:</b> fastpin.h:195</div></div>
+<div class="ttc" id="class_selectable_html"><div class="ttname"><a href="class_selectable.html">Selectable</a></div><div class="ttdef"><b>Definition:</b> fastpin.h:19</div></div>
+<div class="ttc" id="class_fast_pin_html"><div class="ttname"><a href="class_fast_pin.html">FastPin</a></div><div class="ttdoc">The simplest level of Pin class. </div><div class="ttdef"><b>Definition:</b> fastpin.h:154</div></div>
+<div class="ttc" id="group___bitswap_html_ga01396a2e40133293c3badab349ac99f0"><div class="ttname"><a href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a></div><div class="ttdeci">__attribute__((always_inline)) inline void swapbits8(bitswap_type in</div><div class="ttdoc">Do an 8byte by 8bit rotation. </div><div class="ttdef"><b>Definition:</b> fastled_delay.h:85</div></div>
+<div class="ttc" id="class_input_pin_html"><div class="ttname"><a href="class_input_pin.html">InputPin</a></div><div class="ttdef"><b>Definition:</b> fastpin.h:75</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/fastspi_8h_source.html b/docs/3.1/fastspi_8h_source.html
index 50d98edc..18137b8f 100644
--- a/docs/3.1/fastspi_8h_source.html
+++ b/docs/3.1/fastspi_8h_source.html
@@ -90,7 +90,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#ifndef __INC_FASTSPI_H</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="preprocessor">#define __INC_FASTSPI_H</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;</div>
-<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#include &quot;controller.h&quot;</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="controller_8h.html">controller.h</a>&quot;</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="preprocessor">#include &quot;lib8tion.h&quot;</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;</div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="preprocessor">#include &quot;fastspi_bitbang.h&quot;</span></div>
@@ -199,12 +199,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="ttc" id="class_s_p_i_output_html"><div class="ttname"><a href="class_s_p_i_output.html">SPIOutput</a></div><div class="ttdef"><b>Definition:</b> fastspi.h:27</div></div>
+<div class="ttc" id="controller_8h_html"><div class="ttname"><a href="controller_8h.html">controller.h</a></div><div class="ttdoc">base definitions used by led controllers for writing out led data </div></div>
<div class="ttc" id="class_software_s_p_i_output_html"><div class="ttname"><a href="class_software_s_p_i_output.html">SoftwareSPIOutput</a></div><div class="ttdef"><b>Definition:</b> fastspi.h:30</div></div>
<div class="ttc" id="class_a_v_r_software_s_p_i_output_html"><div class="ttname"><a href="class_a_v_r_software_s_p_i_output.html">AVRSoftwareSPIOutput</a></div><div class="ttdef"><b>Definition:</b> fastspi_bitbang.h:17</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/fastspi__bitbang_8h_source.html b/docs/3.1/fastspi__bitbang_8h_source.html
index ab489383..550f3aec 100644
--- a/docs/3.1/fastspi__bitbang_8h_source.html
+++ b/docs/3.1/fastspi__bitbang_8h_source.html
@@ -90,7 +90,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#ifndef __INC_FASTSPI_BITBANG_H</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="preprocessor">#define __INC_FASTSPI_BITBANG_H</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;</div>
-<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#include &quot;fastled_delay.h&quot;</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="fastled__delay_8h.html">fastled_delay.h</a>&quot;</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;</div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;FASTLED_NAMESPACE_BEGIN</div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div>
@@ -439,14 +439,15 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;FASTLED_NAMESPACE_END</div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;</div>
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="ttc" id="struct_pixel_controller_html"><div class="ttname"><a href="struct_pixel_controller.html">PixelController</a></div><div class="ttdoc">Pixel controller class. </div><div class="ttdef"><b>Definition:</b> controller.h:181</div></div>
-<div class="ttc" id="class_selectable_html"><div class="ttname"><a href="class_selectable.html">Selectable</a></div><div class="ttdef"><b>Definition:</b> fastpin.h:16</div></div>
+<div class="ttc" id="struct_pixel_controller_html"><div class="ttname"><a href="struct_pixel_controller.html">PixelController</a></div><div class="ttdoc">Pixel controller class. </div><div class="ttdef"><b>Definition:</b> controller.h:184</div></div>
+<div class="ttc" id="class_selectable_html"><div class="ttname"><a href="class_selectable.html">Selectable</a></div><div class="ttdef"><b>Definition:</b> fastpin.h:19</div></div>
<div class="ttc" id="class_a_v_r_software_s_p_i_output_html"><div class="ttname"><a href="class_a_v_r_software_s_p_i_output.html">AVRSoftwareSPIOutput</a></div><div class="ttdef"><b>Definition:</b> fastspi_bitbang.h:17</div></div>
-<div class="ttc" id="class_fast_pin_html"><div class="ttname"><a href="class_fast_pin.html">FastPin</a></div><div class="ttdoc">The simplest level of Pin class. </div><div class="ttdef"><b>Definition:</b> fastpin.h:151</div></div>
+<div class="ttc" id="fastled__delay_8h_html"><div class="ttname"><a href="fastled__delay_8h.html">fastled_delay.h</a></div><div class="ttdoc">Utility functions and classes for managing delaycycles. </div></div>
+<div class="ttc" id="class_fast_pin_html"><div class="ttname"><a href="class_fast_pin.html">FastPin</a></div><div class="ttdoc">The simplest level of Pin class. </div><div class="ttdef"><b>Definition:</b> fastpin.h:154</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/fastspi__dma_8h_source.html b/docs/3.1/fastspi__dma_8h_source.html
index 1b09d544..98e3b341 100644
--- a/docs/3.1/fastspi__dma_8h_source.html
+++ b/docs/3.1/fastspi__dma_8h_source.html
@@ -90,7 +90,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="fragment"></div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/fastspi__nop_8h_source.html b/docs/3.1/fastspi__nop_8h_source.html
index 4796401c..1e990342 100644
--- a/docs/3.1/fastspi__nop_8h_source.html
+++ b/docs/3.1/fastspi__nop_8h_source.html
@@ -130,12 +130,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;FASTLED_NAMESPACE_END</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="ttc" id="struct_pixel_controller_html"><div class="ttname"><a href="struct_pixel_controller.html">PixelController</a></div><div class="ttdoc">Pixel controller class. </div><div class="ttdef"><b>Definition:</b> controller.h:181</div></div>
-<div class="ttc" id="class_selectable_html"><div class="ttname"><a href="class_selectable.html">Selectable</a></div><div class="ttdef"><b>Definition:</b> fastpin.h:16</div></div>
+<div class="ttc" id="struct_pixel_controller_html"><div class="ttname"><a href="struct_pixel_controller.html">PixelController</a></div><div class="ttdoc">Pixel controller class. </div><div class="ttdef"><b>Definition:</b> controller.h:184</div></div>
+<div class="ttc" id="class_selectable_html"><div class="ttname"><a href="class_selectable.html">Selectable</a></div><div class="ttdef"><b>Definition:</b> fastpin.h:19</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/fastspi__ref_8h_source.html b/docs/3.1/fastspi__ref_8h_source.html
index 6c81838e..e783bd89 100644
--- a/docs/3.1/fastspi__ref_8h_source.html
+++ b/docs/3.1/fastspi__ref_8h_source.html
@@ -190,12 +190,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="ttc" id="struct_c_r_g_b_html"><div class="ttname"><a href="struct_c_r_g_b.html">CRGB</a></div><div class="ttdoc">Representation of an RGB pixel (Red, Green, Blue) </div><div class="ttdef"><b>Definition:</b> pixeltypes.h:88</div></div>
-<div class="ttc" id="class_selectable_html"><div class="ttname"><a href="class_selectable.html">Selectable</a></div><div class="ttdef"><b>Definition:</b> fastpin.h:16</div></div>
-<div class="ttc" id="group___bitswap_html_ga01396a2e40133293c3badab349ac99f0"><div class="ttname"><a href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a></div><div class="ttdeci">__attribute__((always_inline)) inline void swapbits8(bitswap_type in</div><div class="ttdoc">Do an 8byte by 8bit rotation. </div><div class="ttdef"><b>Definition:</b> fastled_delay.h:82</div></div>
+<div class="ttc" id="class_selectable_html"><div class="ttname"><a href="class_selectable.html">Selectable</a></div><div class="ttdef"><b>Definition:</b> fastpin.h:19</div></div>
+<div class="ttc" id="group___bitswap_html_ga01396a2e40133293c3badab349ac99f0"><div class="ttname"><a href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a></div><div class="ttdeci">__attribute__((always_inline)) inline void swapbits8(bitswap_type in</div><div class="ttdoc">Do an 8byte by 8bit rotation. </div><div class="ttdef"><b>Definition:</b> fastled_delay.h:85</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/fastspi__types_8h_source.html b/docs/3.1/fastspi__types_8h_source.html
index 14dc659c..9c39df2a 100644
--- a/docs/3.1/fastspi__types_8h_source.html
+++ b/docs/3.1/fastspi__types_8h_source.html
@@ -127,7 +127,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/files.html b/docs/3.1/files.html
index 3950a4bb..693f1251 100644
--- a/docs/3.1/files.html
+++ b/docs/3.1/files.html
@@ -95,17 +95,17 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<tr id="row_0_2_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="scale8_8h_source.html"><span class="icondoc"></span></a><b>scale8.h</b></td><td class="desc"></td></tr>
<tr id="row_0_3_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="trig8_8h_source.html"><span class="icondoc"></span></a><b>trig8.h</b></td><td class="desc"></td></tr>
<tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="bitswap_8h_source.html"><span class="icondoc"></span></a><a class="el" href="bitswap_8h.html" target="_self">bitswap.h</a></td><td class="desc">Functions for rotating bits/bytes </td></tr>
-<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="chipsets_8h_source.html"><span class="icondoc"></span></a><b>chipsets.h</b></td><td class="desc"></td></tr>
-<tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="color_8h_source.html"><span class="icondoc"></span></a><b>color.h</b></td><td class="desc"></td></tr>
-<tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="colorpalettes_8h_source.html"><span class="icondoc"></span></a><b>colorpalettes.h</b></td><td class="desc"></td></tr>
-<tr id="row_5_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="colorutils_8h_source.html"><span class="icondoc"></span></a><b>colorutils.h</b></td><td class="desc"></td></tr>
-<tr id="row_6_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="controller_8h_source.html"><span class="icondoc"></span></a><b>controller.h</b></td><td class="desc"></td></tr>
+<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="chipsets_8h_source.html"><span class="icondoc"></span></a><a class="el" href="chipsets_8h.html" target="_self">chipsets.h</a></td><td class="desc">Bulk of the definitions for the various LED chipsets supported </td></tr>
+<tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="color_8h_source.html"><span class="icondoc"></span></a><a class="el" href="color_8h.html" target="_self">color.h</a></td><td class="desc">Definitions for color correction and temperature </td></tr>
+<tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="colorpalettes_8h_source.html"><span class="icondoc"></span></a><a class="el" href="colorpalettes_8h.html" target="_self">colorpalettes.h</a></td><td class="desc">Definitions for the predefined color palettes supplied by FastLED </td></tr>
+<tr id="row_5_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="colorutils_8h_source.html"><span class="icondoc"></span></a><a class="el" href="colorutils_8h.html" target="_self">colorutils.h</a></td><td class="desc">Functions for color fill, paletters, blending, and more </td></tr>
+<tr id="row_6_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="controller_8h_source.html"><span class="icondoc"></span></a><a class="el" href="controller_8h.html" target="_self">controller.h</a></td><td class="desc">Base definitions used by led controllers for writing out led data </td></tr>
<tr id="row_7_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="dmx_8h_source.html"><span class="icondoc"></span></a><b>dmx.h</b></td><td class="desc"></td></tr>
-<tr id="row_8_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="_fast_l_e_d_8h_source.html"><span class="icondoc"></span></a><b>FastLED.h</b></td><td class="desc"></td></tr>
-<tr id="row_9_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="fastled__config_8h_source.html"><span class="icondoc"></span></a><b>fastled_config.h</b></td><td class="desc"></td></tr>
-<tr id="row_10_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="fastled__delay_8h_source.html"><span class="icondoc"></span></a><b>fastled_delay.h</b></td><td class="desc"></td></tr>
-<tr id="row_11_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="fastled__progmem_8h_source.html"><span class="icondoc"></span></a><b>fastled_progmem.h</b></td><td class="desc"></td></tr>
-<tr id="row_12_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="fastpin_8h_source.html"><span class="icondoc"></span></a><b>fastpin.h</b></td><td class="desc"></td></tr>
+<tr id="row_8_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="_fast_l_e_d_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_fast_l_e_d_8h.html" target="_self">FastLED.h</a></td><td class="desc">Central include file for FastLED, defines the <a class="el" href="class_c_fast_l_e_d.html" title="High level controller interface for FastLED. ">CFastLED</a> class/object </td></tr>
+<tr id="row_9_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="fastled__config_8h_source.html"><span class="icondoc"></span></a><a class="el" href="fastled__config_8h.html" target="_self">fastled_config.h</a></td><td class="desc">Definitions that can be used to configure FastLED at compile time </td></tr>
+<tr id="row_10_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="fastled__delay_8h_source.html"><span class="icondoc"></span></a><a class="el" href="fastled__delay_8h.html" target="_self">fastled_delay.h</a></td><td class="desc">Utility functions and classes for managing delaycycles </td></tr>
+<tr id="row_11_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="fastled__progmem_8h_source.html"><span class="icondoc"></span></a><a class="el" href="fastled__progmem_8h.html" target="_self">fastled_progmem.h</a></td><td class="desc">Wrapper definitions to allow seamless use of PROGMEM in environmens that have it </td></tr>
+<tr id="row_12_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="fastpin_8h_source.html"><span class="icondoc"></span></a><a class="el" href="fastpin_8h.html" target="_self">fastpin.h</a></td><td class="desc">Class base definitions for defining fast pin access </td></tr>
<tr id="row_13_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="fastspi_8h_source.html"><span class="icondoc"></span></a><b>fastspi.h</b></td><td class="desc"></td></tr>
<tr id="row_14_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="fastspi__bitbang_8h_source.html"><span class="icondoc"></span></a><b>fastspi_bitbang.h</b></td><td class="desc"></td></tr>
<tr id="row_15_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="fastspi__dma_8h_source.html"><span class="icondoc"></span></a><b>fastspi_dma.h</b></td><td class="desc"></td></tr>
@@ -124,7 +124,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/functions.html b/docs/3.1/functions.html
index f89920b2..ddd29e0f 100644
--- a/docs/3.1/functions.html
+++ b/docs/3.1/functions.html
@@ -305,7 +305,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/functions_enum.html b/docs/3.1/functions_enum.html
index 54734548..83810d92 100644
--- a/docs/3.1/functions_enum.html
+++ b/docs/3.1/functions_enum.html
@@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/functions_func.html b/docs/3.1/functions_func.html
index c70033dc..840fd69a 100644
--- a/docs/3.1/functions_func.html
+++ b/docs/3.1/functions_func.html
@@ -302,7 +302,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/globals.html b/docs/3.1/globals.html
index 41f22283..46fd9575 100644
--- a/docs/3.1/globals.html
+++ b/docs/3.1/globals.html
@@ -71,6 +71,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li class="current"><a href="globals.html"><span>All</span></a></li>
<li><a href="globals_func.html"><span>Functions</span></a></li>
+ <li><a href="globals_vars.html"><span>Variables</span></a></li>
+ <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+ <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
</ul>
</div>
</div><!-- top -->
@@ -92,15 +95,73 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="textblock">Here is a list of all documented file members with links to the documentation:</div><ul>
<li>__attribute__()
: <a class="el" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">bitswap.h</a>
+, <a class="el" href="group___pixeltypes.html#gad47d9c821aeaaa0123d125a18ff961d5">fastled_delay.h</a>
+</li>
+<li>CarbonArc
+: <a class="el" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9aa9dab8ea30eb2a41c48956480b7014d1">color.h</a>
+</li>
+<li>ClearBlueSky
+: <a class="el" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9acb80944aa5bed3031b19f1e1101f6a9a">color.h</a>
+</li>
+<li>ColorTemperature
+: <a class="el" href="group___color_enums.html#ga251e9e8dc2c7b981786b71706522b2a9">color.h</a>
+</li>
+<li>DirectSunlight
+: <a class="el" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9a890e0555ad95071fa4391a5775a38621">color.h</a>
+</li>
+<li>ESPIChipsets
+: <a class="el" href="_fast_l_e_d_8h.html#ac06549dc4a351e2c8f1dda8ae81f7926">FastLED.h</a>
+</li>
+<li>fill_gradient()
+: <a class="el" href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98">colorutils.h</a>
+</li>
+<li>fill_rainbow()
+: <a class="el" href="group___colorutils.html#gafcc7dac88e25736ebc49a9faf2a1c2e2">colorutils.h</a>
+</li>
+<li>fill_solid()
+: <a class="el" href="group___colorutils.html#gac84d8820fd175567ba66413dfb8bc63b">colorutils.h</a>
+</li>
+<li>FL_PROGMEM
+: <a class="el" href="group___colorpalletes.html#ga57a38373661043f74b292976e83c687b">colorpalettes.h</a>
+</li>
+<li>Halogen
+: <a class="el" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9ae5ec76aa869b51e645e9f226dfee4b79">color.h</a>
+</li>
+<li>HighNoonSun
+: <a class="el" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9ac9a2b02351fcc9ad08ef4e2748530e76">color.h</a>
</li>
<li>inoise16_raw()
: <a class="el" href="group___noise.html#ga810bdc406dcf8fd5b7add9041aa18abd">noise.h</a>
</li>
+<li>LEDColorCorrection
+: <a class="el" href="group___color_enums.html#gadf6bcba67c9573665af20788c4431ae8">color.h</a>
+</li>
+<li>OvercastSky
+: <a class="el" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9ad0aebf757f0aa8fc45ba282bd25006f7">color.h</a>
+</li>
+<li>Tungsten100W
+: <a class="el" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9a631a1e96b10db9220ab27d70a320ac48">color.h</a>
+</li>
+<li>Tungsten40W
+: <a class="el" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9a8f4ad60002c8856dc1f153e2eaa2de91">color.h</a>
+</li>
+<li>Typical8mmPixel
+: <a class="el" href="group___color_enums.html#ggadf6bcba67c9573665af20788c4431ae8af617057397c2a4f89b4bf2783cdac24b">color.h</a>
+</li>
+<li>TypicalSMD5050
+: <a class="el" href="group___color_enums.html#ggadf6bcba67c9573665af20788c4431ae8ac52fe8e181ff3c39128664fba835eae3">color.h</a>
+</li>
+<li>UncorrectedColor
+: <a class="el" href="group___color_enums.html#ggadf6bcba67c9573665af20788c4431ae8af964ffff5f2977a60a83aa3f9f8b4368">color.h</a>
+</li>
+<li>UncorrectedTemperature
+: <a class="el" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9ae3d35275ab8c374612bcfbcce732b39f">color.h</a>
+</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/globals_enum.html b/docs/3.1/globals_enum.html
new file mode 100644
index 00000000..b83fe678
--- /dev/null
+++ b/docs/3.1/globals_enum.html
@@ -0,0 +1,114 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.9.1"/>
+<title>FastLED: File Members</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="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { init_search(); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">FastLED
+ &#160;<span id="projectnumber">3.1</span>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.9.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</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>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li class="current"><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li><a href="globals.html"><span>All</span></a></li>
+ <li><a href="globals_func.html"><span>Functions</span></a></li>
+ <li><a href="globals_vars.html"><span>Variables</span></a></li>
+ <li class="current"><a href="globals_enum.html"><span>Enumerations</span></a></li>
+ <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+&#160;<ul>
+<li>ColorTemperature
+: <a class="el" href="group___color_enums.html#ga251e9e8dc2c7b981786b71706522b2a9">color.h</a>
+</li>
+<li>ESPIChipsets
+: <a class="el" href="_fast_l_e_d_8h.html#ac06549dc4a351e2c8f1dda8ae81f7926">FastLED.h</a>
+</li>
+<li>LEDColorCorrection
+: <a class="el" href="group___color_enums.html#gadf6bcba67c9573665af20788c4431ae8">color.h</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.9.1
+</small></address>
+</body>
+</html>
diff --git a/docs/3.1/globals_eval.html b/docs/3.1/globals_eval.html
new file mode 100644
index 00000000..95fbaa1c
--- /dev/null
+++ b/docs/3.1/globals_eval.html
@@ -0,0 +1,141 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.9.1"/>
+<title>FastLED: File Members</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="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { init_search(); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">FastLED
+ &#160;<span id="projectnumber">3.1</span>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.9.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</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>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li class="current"><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li><a href="globals.html"><span>All</span></a></li>
+ <li><a href="globals_func.html"><span>Functions</span></a></li>
+ <li><a href="globals_vars.html"><span>Variables</span></a></li>
+ <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+ <li class="current"><a href="globals_eval.html"><span>Enumerator</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+&#160;<ul>
+<li>CarbonArc
+: <a class="el" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9aa9dab8ea30eb2a41c48956480b7014d1">color.h</a>
+</li>
+<li>ClearBlueSky
+: <a class="el" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9acb80944aa5bed3031b19f1e1101f6a9a">color.h</a>
+</li>
+<li>DirectSunlight
+: <a class="el" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9a890e0555ad95071fa4391a5775a38621">color.h</a>
+</li>
+<li>Halogen
+: <a class="el" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9ae5ec76aa869b51e645e9f226dfee4b79">color.h</a>
+</li>
+<li>HighNoonSun
+: <a class="el" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9ac9a2b02351fcc9ad08ef4e2748530e76">color.h</a>
+</li>
+<li>OvercastSky
+: <a class="el" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9ad0aebf757f0aa8fc45ba282bd25006f7">color.h</a>
+</li>
+<li>Tungsten100W
+: <a class="el" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9a631a1e96b10db9220ab27d70a320ac48">color.h</a>
+</li>
+<li>Tungsten40W
+: <a class="el" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9a8f4ad60002c8856dc1f153e2eaa2de91">color.h</a>
+</li>
+<li>Typical8mmPixel
+: <a class="el" href="group___color_enums.html#ggadf6bcba67c9573665af20788c4431ae8af617057397c2a4f89b4bf2783cdac24b">color.h</a>
+</li>
+<li>TypicalSMD5050
+: <a class="el" href="group___color_enums.html#ggadf6bcba67c9573665af20788c4431ae8ac52fe8e181ff3c39128664fba835eae3">color.h</a>
+</li>
+<li>UncorrectedColor
+: <a class="el" href="group___color_enums.html#ggadf6bcba67c9573665af20788c4431ae8af964ffff5f2977a60a83aa3f9f8b4368">color.h</a>
+</li>
+<li>UncorrectedTemperature
+: <a class="el" href="group___color_enums.html#gga251e9e8dc2c7b981786b71706522b2a9ae3d35275ab8c374612bcfbcce732b39f">color.h</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.9.1
+</small></address>
+</body>
+</html>
diff --git a/docs/3.1/globals_func.html b/docs/3.1/globals_func.html
index 45ffac18..9fe6c0c3 100644
--- a/docs/3.1/globals_func.html
+++ b/docs/3.1/globals_func.html
@@ -71,6 +71,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<ul class="tablist">
<li><a href="globals.html"><span>All</span></a></li>
<li class="current"><a href="globals_func.html"><span>Functions</span></a></li>
+ <li><a href="globals_vars.html"><span>Variables</span></a></li>
+ <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+ <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
</ul>
</div>
</div><!-- top -->
@@ -92,6 +95,16 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
&#160;<ul>
<li>__attribute__()
: <a class="el" href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">bitswap.h</a>
+, <a class="el" href="group___pixeltypes.html#gad47d9c821aeaaa0123d125a18ff961d5">fastled_delay.h</a>
+</li>
+<li>fill_gradient()
+: <a class="el" href="group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98">colorutils.h</a>
+</li>
+<li>fill_rainbow()
+: <a class="el" href="group___colorutils.html#gafcc7dac88e25736ebc49a9faf2a1c2e2">colorutils.h</a>
+</li>
+<li>fill_solid()
+: <a class="el" href="group___colorutils.html#gac84d8820fd175567ba66413dfb8bc63b">colorutils.h</a>
</li>
<li>inoise16_raw()
: <a class="el" href="group___noise.html#ga810bdc406dcf8fd5b7add9041aa18abd">noise.h</a>
@@ -100,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/globals_vars.html b/docs/3.1/globals_vars.html
new file mode 100644
index 00000000..6a9af04b
--- /dev/null
+++ b/docs/3.1/globals_vars.html
@@ -0,0 +1,108 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.9.1"/>
+<title>FastLED: File Members</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="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { init_search(); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">FastLED
+ &#160;<span id="projectnumber">3.1</span>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.9.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</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>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li class="current"><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li><a href="globals.html"><span>All</span></a></li>
+ <li><a href="globals_func.html"><span>Functions</span></a></li>
+ <li class="current"><a href="globals_vars.html"><span>Variables</span></a></li>
+ <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+ <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+&#160;<ul>
+<li>FL_PROGMEM
+: <a class="el" href="group___colorpalletes.html#ga57a38373661043f74b292976e83c687b">colorpalettes.h</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.9.1
+</small></address>
+</body>
+</html>
diff --git a/docs/3.1/graph_legend.html b/docs/3.1/graph_legend.html
index 330a6634..b303d5a4 100644
--- a/docs/3.1/graph_legend.html
+++ b/docs/3.1/graph_legend.html
@@ -147,7 +147,7 @@ A yellow dashed arrow denotes a relation between a template instance and the tem
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/group___bitswap.html b/docs/3.1/group___bitswap.html
index aa805aef..3ce279af 100644
--- a/docs/3.1/group___bitswap.html
+++ b/docs/3.1/group___bitswap.html
@@ -112,7 +112,7 @@ Functions</h2></td></tr>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/group___color_enums.html b/docs/3.1/group___color_enums.html
index ed4f3f75..fc580e11 100644
--- a/docs/3.1/group___color_enums.html
+++ b/docs/3.1/group___color_enums.html
@@ -198,7 +198,7 @@ Enumerations</h2></td></tr>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/group___colorpalletes.html b/docs/3.1/group___colorpalletes.html
index c17542fd..caa964a4 100644
--- a/docs/3.1/group___colorpalletes.html
+++ b/docs/3.1/group___colorpalletes.html
@@ -116,29 +116,6 @@ Variables</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
-
-<p>Cloudy color pallete. </p>
-<p>Approximate "black body radiation" palette, akin to the FastLED 'HeatColor' function.</p>
-<p>HSV color ramp: blue purple ping red orange yellow (and back) Basically, everything but the greens, which tend to make people's skin look unhealthy.</p>
-<p>HSV Rainbow colors with alternatating stripes of black.</p>
-<p>HSV Rainbow.</p>
-<p>Forest colors, greens.</p>
-<p>Ocean colors, blues and whites.</p>
-<p>Lava colors.</p>
-<p>This palette is good for lighting at a club or party, where it'll be shining on people.</p>
-<p>Recommend that you use values 0-240 rather than the usual 0-255, as the last 15 colors will be 'wrapping around' from the hot end to the cold end, which looks wrong. </p>
-
-</div>
-</div>
-<a class="anchor" id="ga57a38373661043f74b292976e83c687b"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const TProgmemRGBPalette16 HeatColors_p FL_PROGMEM</td>
- </tr>
- </table>
-</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">=</div>
<div class="line">{</div>
<div class="line"> CRGB::Blue,</div>
@@ -174,10 +151,33 @@ Variables</h2></td></tr>
</div>
</div>
+<a class="anchor" id="ga57a38373661043f74b292976e83c687b"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const TProgmemRGBPalette16 HeatColors_p FL_PROGMEM</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Cloudy color pallete. </p>
+<p>Approximate "black body radiation" palette, akin to the FastLED 'HeatColor' function.</p>
+<p>HSV color ramp: blue purple ping red orange yellow (and back) Basically, everything but the greens, which tend to make people's skin look unhealthy.</p>
+<p>HSV Rainbow colors with alternatating stripes of black.</p>
+<p>HSV Rainbow.</p>
+<p>Forest colors, greens.</p>
+<p>Ocean colors, blues and whites.</p>
+<p>Lava colors.</p>
+<p>This palette is good for lighting at a club or party, where it'll be shining on people.</p>
+<p>Recommend that you use values 0-240 rather than the usual 0-255, as the last 15 colors will be 'wrapping around' from the hot end to the cold end, which looks wrong. </p>
+
+</div>
+</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/group___colorutils.html b/docs/3.1/group___colorutils.html
index b1449c85..a525bf4c 100644
--- a/docs/3.1/group___colorutils.html
+++ b/docs/3.1/group___colorutils.html
@@ -370,7 +370,7 @@ LONGEST_HUES: hue goes whichever way is longest
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/group___dimming.html b/docs/3.1/group___dimming.html
index b413fb90..04e98a3b 100644
--- a/docs/3.1/group___dimming.html
+++ b/docs/3.1/group___dimming.html
@@ -121,7 +121,7 @@ LIB8STATIC uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/group___math.html b/docs/3.1/group___math.html
index 1a0cc20a..f2eda97c 100644
--- a/docs/3.1/group___math.html
+++ b/docs/3.1/group___math.html
@@ -418,7 +418,7 @@ LIB8STATIC int8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="e
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/group___noise.html b/docs/3.1/group___noise.html
index 2d8b9e2e..03a542f4 100644
--- a/docs/3.1/group___noise.html
+++ b/docs/3.1/group___noise.html
@@ -237,7 +237,7 @@ void&#160;</td><td class="memItemRight" valign="bottom"><b>fill_2dnoise16</b> (<
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/group___pixeltypes.html b/docs/3.1/group___pixeltypes.html
index 5336eaba..5c846b01 100644
--- a/docs/3.1/group___pixeltypes.html
+++ b/docs/3.1/group___pixeltypes.html
@@ -347,7 +347,7 @@ Functions</h2></td></tr>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/group___power.html b/docs/3.1/group___power.html
index 1ae5d47e..524f9c12 100644
--- a/docs/3.1/group___power.html
+++ b/docs/3.1/group___power.html
@@ -88,7 +88,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/group___random.html b/docs/3.1/group___random.html
index e38816cb..ad852c47 100644
--- a/docs/3.1/group___random.html
+++ b/docs/3.1/group___random.html
@@ -263,7 +263,7 @@ uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/group___scaling.html b/docs/3.1/group___scaling.html
index 66ef1fe5..23c2fb3c 100644
--- a/docs/3.1/group___scaling.html
+++ b/docs/3.1/group___scaling.html
@@ -497,7 +497,7 @@ LIB8STATIC void&#160;</td><td class="memItemRight" valign="bottom"><a class="el"
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/group___trig.html b/docs/3.1/group___trig.html
index 9b7a8252..5aad4eaa 100644
--- a/docs/3.1/group___trig.html
+++ b/docs/3.1/group___trig.html
@@ -287,7 +287,7 @@ const uint8_t&#160;</td><td class="memItemRight" valign="bottom"><b>b_m16_interl
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/group__chipsets.html b/docs/3.1/group__chipsets.html
index 9e708466..28815543 100644
--- a/docs/3.1/group__chipsets.html
+++ b/docs/3.1/group__chipsets.html
@@ -140,7 +140,7 @@ Classes</h2></td></tr>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/group__lib8tion.html b/docs/3.1/group__lib8tion.html
index 45adb7d5..2a843fb6 100644
--- a/docs/3.1/group__lib8tion.html
+++ b/docs/3.1/group__lib8tion.html
@@ -837,7 +837,7 @@ LIB8STATIC uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/hierarchy.html b/docs/3.1/hierarchy.html
index 65ef5cc6..508c198f 100644
--- a/docs/3.1/hierarchy.html
+++ b/docs/3.1/hierarchy.html
@@ -201,7 +201,7 @@ This inheritance list is sorted roughly, but not completely, alphabetically:</di
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/hsv2rgb_8h_source.html b/docs/3.1/hsv2rgb_8h_source.html
index 815365ec..7a375598 100644
--- a/docs/3.1/hsv2rgb_8h_source.html
+++ b/docs/3.1/hsv2rgb_8h_source.html
@@ -182,7 +182,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/index.html b/docs/3.1/index.html
index 4e44858a..e3805612 100644
--- a/docs/3.1/index.html
+++ b/docs/3.1/index.html
@@ -84,7 +84,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/inherits.html b/docs/3.1/inherits.html
index a8ed2f86..d5b9d02d 100644
--- a/docs/3.1/inherits.html
+++ b/docs/3.1/inherits.html
@@ -216,7 +216,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/led__sysdefs_8h_source.html b/docs/3.1/led__sysdefs_8h_source.html
index b7d61735..ad187133 100644
--- a/docs/3.1/led__sysdefs_8h_source.html
+++ b/docs/3.1/led__sysdefs_8h_source.html
@@ -90,7 +90,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#ifndef __INC_LED_SYSDEFS_H</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="preprocessor">#define __INC_LED_SYSDEFS_H</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;</div>
-<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#include &quot;fastled_config.h&quot;</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="fastled__config_8h.html">fastled_config.h</a>&quot;</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;</div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="preprocessor">#if defined(NRF51) || defined(__RFduino__)</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="preprocessor">#include &quot;platforms/arm/nrf51/led_sysdefs_arm_nrf51.h&quot;</span></div>
@@ -128,10 +128,11 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#define CLKS_PER_US (F_CPU/1000000)</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="ttc" id="fastled__config_8h_html"><div class="ttname"><a href="fastled__config_8h.html">fastled_config.h</a></div><div class="ttdoc">contains definitions that can be used to configure FastLED at compile time </div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/lib8tion_8h_source.html b/docs/3.1/lib8tion_8h_source.html
index 1edaf7c6..7f4fa8ae 100644
--- a/docs/3.1/lib8tion_8h_source.html
+++ b/docs/3.1/lib8tion_8h_source.html
@@ -1065,7 +1065,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="ttc" id="group__lib8tion_html_ga7d6219a7247ab1923ed623e7ae0f34ae"><div class="ttname"><a href="group__lib8tion.html#ga7d6219a7247ab1923ed623e7ae0f34ae">sfract7</a></div><div class="ttdeci">int8_t sfract7</div><div class="ttdoc">ANSI: signed short _Fract. </div><div class="ttdef"><b>Definition:</b> lib8tion.h:328</div></div>
<div class="ttc" id="group__lib8tion_html_ga3fa6d71702477e71d7c0dd864eb1d568"><div class="ttname"><a href="group__lib8tion.html#ga3fa6d71702477e71d7c0dd864eb1d568">ease8InOutCubic</a></div><div class="ttdeci">LIB8STATIC fract8 ease8InOutCubic(fract8 i)</div><div class="ttdoc">ease8InOutCubic: 8-bit cubic ease-in / ease-out function Takes around 18 cycles on AVR ...</div><div class="ttdef"><b>Definition:</b> lib8tion.h:579</div></div>
<div class="ttc" id="group__lib8tion_html_ga12014943214a72eec31433d9682d4ebe"><div class="ttname"><a href="group__lib8tion.html#ga12014943214a72eec31433d9682d4ebe">beat8</a></div><div class="ttdeci">LIB8STATIC uint8_t beat8(accum88 beats_per_minute, uint32_t timebase=0)</div><div class="ttdoc">beat8 generates an 8-bit &#39;sawtooth&#39; wave at a given BPM </div><div class="ttdef"><b>Definition:</b> lib8tion.h:866</div></div>
-<div class="ttc" id="group___bitswap_html_ga01396a2e40133293c3badab349ac99f0"><div class="ttname"><a href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a></div><div class="ttdeci">__attribute__((always_inline)) inline void swapbits8(bitswap_type in</div><div class="ttdoc">Do an 8byte by 8bit rotation. </div><div class="ttdef"><b>Definition:</b> fastled_delay.h:82</div></div>
+<div class="ttc" id="group___bitswap_html_ga01396a2e40133293c3badab349ac99f0"><div class="ttname"><a href="group___bitswap.html#ga01396a2e40133293c3badab349ac99f0">__attribute__</a></div><div class="ttdeci">__attribute__((always_inline)) inline void swapbits8(bitswap_type in</div><div class="ttdoc">Do an 8byte by 8bit rotation. </div><div class="ttdef"><b>Definition:</b> fastled_delay.h:85</div></div>
<div class="ttc" id="group__lib8tion_html_gae9e011ff745ade1164ae77b0ef62bfac"><div class="ttname"><a href="group__lib8tion.html#gae9e011ff745ade1164ae77b0ef62bfac">triwave8</a></div><div class="ttdeci">LIB8STATIC uint8_t triwave8(uint8_t in)</div><div class="ttdoc">triwave8: triangle (sawtooth) wave generator. </div><div class="ttdef"><b>Definition:</b> lib8tion.h:673</div></div>
<div class="ttc" id="group__lib8tion_html_gaecd7cbfc2640407cabf75afcc7d9ddf4"><div class="ttname"><a href="group__lib8tion.html#gaecd7cbfc2640407cabf75afcc7d9ddf4">beatsin8</a></div><div class="ttdeci">LIB8STATIC uint8_t beatsin8(accum88 beats_per_minute, uint8_t lowest=0, uint8_t highest=255, uint32_t timebase=0, uint8_t phase_offset=0)</div><div class="ttdoc">beatsin8 generates an 8-bit sine wave at a given BPM, that oscillates within a given range...</div><div class="ttdef"><b>Definition:</b> lib8tion.h:903</div></div>
<div class="ttc" id="group__lib8tion_html_ga17ae8fcfd9c485bb1120d908f836637a"><div class="ttname"><a href="group__lib8tion.html#ga17ae8fcfd9c485bb1120d908f836637a">squarewave8</a></div><div class="ttdeci">LIB8STATIC uint8_t squarewave8(uint8_t in, uint8_t pulsewidth=128)</div><div class="ttdoc">squarewave8: square wave generator. </div><div class="ttdef"><b>Definition:</b> lib8tion.h:730</div></div>
@@ -1079,7 +1079,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/math8_8h_source.html b/docs/3.1/math8_8h_source.html
index 91bdc573..944194c5 100644
--- a/docs/3.1/math8_8h_source.html
+++ b/docs/3.1/math8_8h_source.html
@@ -408,7 +408,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/md__p_o_r_t_i_n_g.html b/docs/3.1/md__p_o_r_t_i_n_g.html
index ae233b40..94e38b77 100644
--- a/docs/3.1/md__p_o_r_t_i_n_g.html
+++ b/docs/3.1/md__p_o_r_t_i_n_g.html
@@ -98,7 +98,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li>Modify <a class="el" href="led__sysdefs_8h_source.html">led_sysdefs.h</a> to conditionally include platform sysdefs header file</li>
<li>Modify <a class="el" href="platforms_8h_source.html">platforms.h</a> to conditionally include platform fastled header</li>
</ul>
-<p>== Porting <a class="el" href="fastpin_8h_source.html">fastpin.h</a> ==</p>
+<p>== Porting <a class="el" href="fastpin_8h.html" title="Class base definitions for defining fast pin access. ">fastpin.h</a> ==</p>
<p>The heart of the FastLED library is the fast pin accesss. This is a templated class that provides 1-2 cycle pin access, bypassing digital write and other such things. As such, this will usually be the first bit of the library that you will want to port when moving to a new platform. Once you have FastPIN up and running then you can do some basic work like testing toggles or running bit-bang'd SPI output.</p>
<p>There's two low level <a class="el" href="class_fast_pin.html" title="The simplest level of Pin class. ">FastPin</a> classes. There's the base FastPIN template class, and then there is <a class="el" href="class_fast_pin_b_b.html">FastPinBB</a> which is for bit-banded access on those MCUs that support bitbanding. Note that the bitband class is optional and primarily useful in the implementation of other functionality internal to the platform. This file is also where you would do the pin to port/bit mapping defines.</p>
<p>Explaining how the macros work and should be used is currently beyond the scope of this document.</p>
@@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/md__r_e_a_d_m_e.html b/docs/3.1/md__r_e_a_d_m_e.html
index 49cb6dab..54574bfd 100644
--- a/docs/3.1/md__r_e_a_d_m_e.html
+++ b/docs/3.1/md__r_e_a_d_m_e.html
@@ -140,7 +140,7 @@ void loop() {
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/md_release_notes.html b/docs/3.1/md_release_notes.html
index 459ff17d..fe9e841a 100644
--- a/docs/3.1/md_release_notes.html
+++ b/docs/3.1/md_release_notes.html
@@ -197,7 +197,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/modules.html b/docs/3.1/modules.html
index 2dfcf949..8f4908bd 100644
--- a/docs/3.1/modules.html
+++ b/docs/3.1/modules.html
@@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/noise_8h.html b/docs/3.1/noise_8h.html
index 6d469641..96e59a81 100644
--- a/docs/3.1/noise_8h.html
+++ b/docs/3.1/noise_8h.html
@@ -200,7 +200,7 @@ void&#160;</td><td class="memItemRight" valign="bottom"><b>fill_2dnoise16</b> (<
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/noise_8h_source.html b/docs/3.1/noise_8h_source.html
index 205d8ae8..c302c708 100644
--- a/docs/3.1/noise_8h_source.html
+++ b/docs/3.1/noise_8h_source.html
@@ -145,7 +145,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/pages.html b/docs/3.1/pages.html
index e080a6fd..0a1e97dc 100644
--- a/docs/3.1/pages.html
+++ b/docs/3.1/pages.html
@@ -92,7 +92,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/pixeltypes_8h_source.html b/docs/3.1/pixeltypes_8h_source.html
index 78841ffe..f7638ba5 100644
--- a/docs/3.1/pixeltypes_8h_source.html
+++ b/docs/3.1/pixeltypes_8h_source.html
@@ -92,7 +92,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;</div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#include &lt;stdint.h&gt;</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="preprocessor">#include &quot;lib8tion.h&quot;</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="preprocessor">#include &quot;color.h&quot;</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="color_8h.html">color.h</a>&quot;</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;FASTLED_NAMESPACE_BEGIN</div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;</div>
@@ -912,18 +912,19 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="ttc" id="group___scaling_html_ga700b7f510f32e8c91385093c436c27d9"><div class="ttname"><a href="group___scaling.html#ga700b7f510f32e8c91385093c436c27d9">nscale8x3_video</a></div><div class="ttdeci">LIB8STATIC void nscale8x3_video(uint8_t &amp;r, uint8_t &amp;g, uint8_t &amp;b, fract8 scale)</div><div class="ttdoc">scale three one byte values by a fourth one, which is treated as the numerator of a fraction whose de...</div><div class="ttdef"><b>Definition:</b> scale8.h:282</div></div>
<div class="ttc" id="group__lib8tion_html_ga5d6d013429a5b8a09d564d6137217644"><div class="ttname"><a href="group__lib8tion.html#ga5d6d013429a5b8a09d564d6137217644">fract8</a></div><div class="ttdeci">uint8_t fract8</div><div class="ttdoc">ANSI unsigned short _Fract. </div><div class="ttdef"><b>Definition:</b> lib8tion.h:324</div></div>
<div class="ttc" id="group___scaling_html_ga39579fcf09743f15545fe0b831ca313c"><div class="ttname"><a href="group___scaling.html#ga39579fcf09743f15545fe0b831ca313c">scale8_LEAVING_R1_DIRTY</a></div><div class="ttdeci">LIB8STATIC uint8_t scale8_LEAVING_R1_DIRTY(uint8_t i, fract8 scale)</div><div class="ttdoc">This version of scale8 does not clean up the R1 register on AVR If you are doing several &#39;scale8&#39;s in...</div><div class="ttdef"><b>Definition:</b> scale8.h:121</div></div>
-<div class="ttc" id="group___color_enums_html_gadf6bcba67c9573665af20788c4431ae8"><div class="ttname"><a href="group___color_enums.html#gadf6bcba67c9573665af20788c4431ae8">LEDColorCorrection</a></div><div class="ttdeci">LEDColorCorrection</div><div class="ttdef"><b>Definition:</b> color.h:9</div></div>
+<div class="ttc" id="group___color_enums_html_gadf6bcba67c9573665af20788c4431ae8"><div class="ttname"><a href="group___color_enums.html#gadf6bcba67c9573665af20788c4431ae8">LEDColorCorrection</a></div><div class="ttdeci">LEDColorCorrection</div><div class="ttdef"><b>Definition:</b> color.h:11</div></div>
+<div class="ttc" id="color_8h_html"><div class="ttname"><a href="color_8h.html">color.h</a></div><div class="ttdoc">contains definitions for color correction and temperature </div></div>
<div class="ttc" id="group___pixeltypes_html_ga06ee0f21e1bf430ea547244f6ed4add8"><div class="ttname"><a href="group___pixeltypes.html#ga06ee0f21e1bf430ea547244f6ed4add8">hsv2rgb_rainbow</a></div><div class="ttdeci">void hsv2rgb_rainbow(const CHSV &amp;hsv, CRGB &amp;rgb)</div><div class="ttdoc">Forward declaration of hsv2rgb_rainbow here, to avoid circular dependencies. </div><div class="ttdef"><b>Definition:</b> hsv2rgb.cpp:277</div></div>
<div class="ttc" id="group___scaling_html_ga572d0b441676c9d8ceb071fe8284b7e9"><div class="ttname"><a href="group___scaling.html#ga572d0b441676c9d8ceb071fe8284b7e9">cleanup_R1</a></div><div class="ttdeci">LIB8STATIC void cleanup_R1()</div><div class="ttdoc">Clean up the r1 register after a series of *LEAVING_R1_DIRTY calls. </div><div class="ttdef"><b>Definition:</b> scale8.h:244</div></div>
<div class="ttc" id="group___scaling_html_ga39bf87e5526120889086cab19ac749b1"><div class="ttname"><a href="group___scaling.html#ga39bf87e5526120889086cab19ac749b1">nscale8x3</a></div><div class="ttdeci">LIB8STATIC void nscale8x3(uint8_t &amp;r, uint8_t &amp;g, uint8_t &amp;b, fract8 scale)</div><div class="ttdoc">scale three one byte values by a fourth one, which is treated as the numerator of a fraction whose de...</div><div class="ttdef"><b>Definition:</b> scale8.h:259</div></div>
-<div class="ttc" id="group___pixeltypes_html_gad47d9c821aeaaa0123d125a18ff961d5"><div class="ttname"><a href="group___pixeltypes.html#gad47d9c821aeaaa0123d125a18ff961d5">__attribute__</a></div><div class="ttdeci">__attribute__((always_inline)) bool operator</div><div class="ttdoc">Do an 8byte by 8bit rotation. </div><div class="ttdef"><b>Definition:</b> fastled_delay.h:82</div></div>
-<div class="ttc" id="group___color_enums_html_ga251e9e8dc2c7b981786b71706522b2a9"><div class="ttname"><a href="group___color_enums.html#ga251e9e8dc2c7b981786b71706522b2a9">ColorTemperature</a></div><div class="ttdeci">ColorTemperature</div><div class="ttdef"><b>Definition:</b> color.h:31</div></div>
+<div class="ttc" id="group___pixeltypes_html_gad47d9c821aeaaa0123d125a18ff961d5"><div class="ttname"><a href="group___pixeltypes.html#gad47d9c821aeaaa0123d125a18ff961d5">__attribute__</a></div><div class="ttdeci">__attribute__((always_inline)) bool operator</div><div class="ttdoc">Do an 8byte by 8bit rotation. </div><div class="ttdef"><b>Definition:</b> fastled_delay.h:85</div></div>
+<div class="ttc" id="group___color_enums_html_ga251e9e8dc2c7b981786b71706522b2a9"><div class="ttname"><a href="group___color_enums.html#ga251e9e8dc2c7b981786b71706522b2a9">ColorTemperature</a></div><div class="ttdeci">ColorTemperature</div><div class="ttdef"><b>Definition:</b> color.h:33</div></div>
<div class="ttc" id="struct_c_h_s_v_html"><div class="ttname"><a href="struct_c_h_s_v.html">CHSV</a></div><div class="ttdoc">Representation of an HSV pixel (hue, saturation, value (aka brightness)). </div><div class="ttdef"><b>Definition:</b> pixeltypes.h:21</div></div>
<div class="ttc" id="group___pixeltypes_html_gaeb40a08b7cb90c1e21bd408261558b99"><div class="ttname"><a href="group___pixeltypes.html#gaeb40a08b7cb90c1e21bd408261558b99">CRGB::HTMLColorCode</a></div><div class="ttdeci">HTMLColorCode</div><div class="ttdoc">Predefined RGB colors. </div><div class="ttdef"><b>Definition:</b> pixeltypes.h:549</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/platforms_8h_source.html b/docs/3.1/platforms_8h_source.html
index 44c38b28..e19dc040 100644
--- a/docs/3.1/platforms_8h_source.html
+++ b/docs/3.1/platforms_8h_source.html
@@ -90,7 +90,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#ifndef __INC_PLATFORMS_H</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="preprocessor">#define __INC_PLATFORMS_H</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;</div>
-<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#include &quot;fastled_config.h&quot;</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="fastled__config_8h.html">fastled_config.h</a>&quot;</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;</div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="preprocessor">#if defined(NRF51)</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="preprocessor">#include &quot;platforms/arm/nrf51/fastled_arm_nrf51.h&quot;</span></div>
@@ -115,10 +115,11 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="ttc" id="fastled__config_8h_html"><div class="ttname"><a href="fastled__config_8h.html">fastled_config.h</a></div><div class="ttdoc">contains definitions that can be used to configure FastLED at compile time </div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/power__mgt_8h_source.html b/docs/3.1/power__mgt_8h_source.html
index a19b923c..79fb49d7 100644
--- a/docs/3.1/power__mgt_8h_source.html
+++ b/docs/3.1/power__mgt_8h_source.html
@@ -137,7 +137,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/random8_8h_source.html b/docs/3.1/random8_8h_source.html
index cc400df8..61b37efc 100644
--- a/docs/3.1/random8_8h_source.html
+++ b/docs/3.1/random8_8h_source.html
@@ -172,7 +172,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/scale8_8h_source.html b/docs/3.1/scale8_8h_source.html
index a51898d0..18b2dcd7 100644
--- a/docs/3.1/scale8_8h_source.html
+++ b/docs/3.1/scale8_8h_source.html
@@ -542,7 +542,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/search/all_3.js b/docs/3.1/search/all_3.js
index ed5a7c0d..37fda6aa 100644
--- a/docs/3.1/search/all_3.js
+++ b/docs/3.1/search/all_3.js
@@ -4,6 +4,7 @@ var searchData=
['ceveryntimeperiods',['CEveryNTimePeriods',['../class_c_every_n_time_periods.html',1,'']]],
['cfastled',['CFastLED',['../class_c_fast_l_e_d.html',1,'']]],
['chipsets',['Chipsets',['../group__chipsets.html',1,'']]],
+ ['chipsets_2eh',['chipsets.h',['../chipsets_8h.html',1,'']]],
['chsv',['CHSV',['../struct_c_h_s_v.html',1,'']]],
['chsvpalette16',['CHSVPalette16',['../class_c_h_s_v_palette16.html',1,'']]],
['chsvpalette256',['CHSVPalette256',['../class_c_h_s_v_palette256.html',1,'']]],
@@ -16,9 +17,13 @@ var searchData=
['cledcontroller',['CLEDController',['../class_c_l_e_d_controller.html',1,'CLEDController'],['../class_c_l_e_d_controller.html#a8c560c6d171f117dfd19c0f2ec780a32',1,'CLEDController::CLEDController()']]],
['cminwait',['CMinWait',['../class_c_min_wait.html',1,'']]],
['cminwait_3c_201000_20_3e',['CMinWait&lt; 1000 &gt;',['../class_c_min_wait.html',1,'']]],
+ ['color_2eh',['color.h',['../color_8h.html',1,'']]],
['color_20correction_2ftemperature',['Color correction/temperature',['../group___color_enums.html',1,'']]],
+ ['colorpalettes_2eh',['colorpalettes.h',['../colorpalettes_8h.html',1,'']]],
['colortemperature',['ColorTemperature',['../group___color_enums.html#ga251e9e8dc2c7b981786b71706522b2a9',1,'color.h']]],
['color_20utility_20functions',['Color utility functions',['../group___colorutils.html',1,'']]],
+ ['colorutils_2eh',['colorutils.h',['../colorutils_8h.html',1,'']]],
+ ['controller_2eh',['controller.h',['../controller_8h.html',1,'']]],
['cos16',['cos16',['../group___trig.html#ga056952ebed39f55880bb353857b47075',1,'trig8.h']]],
['cos8',['cos8',['../group___trig.html#ga4432f985c94f5bff715db402d767b0e8',1,'trig8.h']]],
['count',['count',['../class_c_fast_l_e_d.html#ae5730545ea18b1f5228172f9d246beb6',1,'CFastLED']]],
diff --git a/docs/3.1/search/all_5.js b/docs/3.1/search/all_5.js
index 3194818e..033f474e 100644
--- a/docs/3.1/search/all_5.js
+++ b/docs/3.1/search/all_5.js
@@ -3,5 +3,6 @@ var searchData=
['ease8inoutapprox',['ease8InOutApprox',['../group__lib8tion.html#gaa041cdbb17f073dbd352fcae6962dc23',1,'lib8tion.h']]],
['ease8inoutcubic',['ease8InOutCubic',['../group__lib8tion.html#ga3fa6d71702477e71d7c0dd864eb1d568',1,'lib8tion.h']]],
['ease8inoutquad',['ease8InOutQuad',['../group__lib8tion.html#ga381449070b2d6bfba356f87881ab28c0',1,'lib8tion.h']]],
- ['enable_5fdithering',['enable_dithering',['../struct_pixel_controller.html#a3e923be6212346c5ae98f7731d74c2e3',1,'PixelController']]]
+ ['enable_5fdithering',['enable_dithering',['../struct_pixel_controller.html#a3e923be6212346c5ae98f7731d74c2e3',1,'PixelController']]],
+ ['espichipsets',['ESPIChipsets',['../_fast_l_e_d_8h.html#ac06549dc4a351e2c8f1dda8ae81f7926',1,'FastLED.h']]]
];
diff --git a/docs/3.1/search/all_6.js b/docs/3.1/search/all_6.js
index e5714b4f..efe56411 100644
--- a/docs/3.1/search/all_6.js
+++ b/docs/3.1/search/all_6.js
@@ -1,6 +1,11 @@
var searchData=
[
+ ['fastled_2eh',['FastLED.h',['../_fast_l_e_d_8h.html',1,'']]],
+ ['fastled_5fconfig_2eh',['fastled_config.h',['../fastled__config_8h.html',1,'']]],
+ ['fastled_5fdelay_2eh',['fastled_delay.h',['../fastled__delay_8h.html',1,'']]],
+ ['fastled_5fprogmem_2eh',['fastled_progmem.h',['../fastled__progmem_8h.html',1,'']]],
['fastpin',['FastPin',['../class_fast_pin.html',1,'']]],
+ ['fastpin_2eh',['fastpin.h',['../fastpin_8h.html',1,'']]],
['fastpin_3c_20clock_5fpin_20_3e',['FastPin&lt; CLOCK_PIN &gt;',['../class_fast_pin.html',1,'']]],
['fastpinbb',['FastPinBB',['../class_fast_pin_b_b.html',1,'']]],
['fill_5fgradient',['fill_gradient',['../group___colorutils.html#ga3144bb2bb66aeed33e20f4fdd6cc1a98',1,'colorutils.h']]],
diff --git a/docs/3.1/search/enums_1.js b/docs/3.1/search/enums_1.js
index d1e0d7b2..76d308cd 100644
--- a/docs/3.1/search/enums_1.js
+++ b/docs/3.1/search/enums_1.js
@@ -1,5 +1,4 @@
var searchData=
[
- ['hsvhue',['HSVHue',['../group___pixeltypes.html#ga6585ae9f9a54e6a1fcb7c5f985931fb3',1,'pixeltypes.h']]],
- ['htmlcolorcode',['HTMLColorCode',['../group___pixeltypes.html#gaeb40a08b7cb90c1e21bd408261558b99',1,'CRGB']]]
+ ['espichipsets',['ESPIChipsets',['../_fast_l_e_d_8h.html#ac06549dc4a351e2c8f1dda8ae81f7926',1,'FastLED.h']]]
];
diff --git a/docs/3.1/search/enums_2.js b/docs/3.1/search/enums_2.js
index a1193f1b..d1e0d7b2 100644
--- a/docs/3.1/search/enums_2.js
+++ b/docs/3.1/search/enums_2.js
@@ -1,4 +1,5 @@
var searchData=
[
- ['ledcolorcorrection',['LEDColorCorrection',['../group___color_enums.html#gadf6bcba67c9573665af20788c4431ae8',1,'color.h']]]
+ ['hsvhue',['HSVHue',['../group___pixeltypes.html#ga6585ae9f9a54e6a1fcb7c5f985931fb3',1,'pixeltypes.h']]],
+ ['htmlcolorcode',['HTMLColorCode',['../group___pixeltypes.html#gaeb40a08b7cb90c1e21bd408261558b99',1,'CRGB']]]
];
diff --git a/docs/3.1/search/enums_3.html b/docs/3.1/search/enums_3.html
new file mode 100644
index 00000000..e2cdb292
--- /dev/null
+++ b/docs/3.1/search/enums_3.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="enums_3.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/docs/3.1/search/enums_3.js b/docs/3.1/search/enums_3.js
new file mode 100644
index 00000000..a1193f1b
--- /dev/null
+++ b/docs/3.1/search/enums_3.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['ledcolorcorrection',['LEDColorCorrection',['../group___color_enums.html#gadf6bcba67c9573665af20788c4431ae8',1,'color.h']]]
+];
diff --git a/docs/3.1/search/files_1.js b/docs/3.1/search/files_1.js
index 288ee2ef..fd0a683e 100644
--- a/docs/3.1/search/files_1.js
+++ b/docs/3.1/search/files_1.js
@@ -1,4 +1,8 @@
var searchData=
[
- ['noise_2eh',['noise.h',['../noise_8h.html',1,'']]]
+ ['chipsets_2eh',['chipsets.h',['../chipsets_8h.html',1,'']]],
+ ['color_2eh',['color.h',['../color_8h.html',1,'']]],
+ ['colorpalettes_2eh',['colorpalettes.h',['../colorpalettes_8h.html',1,'']]],
+ ['colorutils_2eh',['colorutils.h',['../colorutils_8h.html',1,'']]],
+ ['controller_2eh',['controller.h',['../controller_8h.html',1,'']]]
];
diff --git a/docs/3.1/search/files_2.html b/docs/3.1/search/files_2.html
new file mode 100644
index 00000000..d188d98a
--- /dev/null
+++ b/docs/3.1/search/files_2.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="files_2.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/docs/3.1/search/files_2.js b/docs/3.1/search/files_2.js
new file mode 100644
index 00000000..9accd41d
--- /dev/null
+++ b/docs/3.1/search/files_2.js
@@ -0,0 +1,8 @@
+var searchData=
+[
+ ['fastled_2eh',['FastLED.h',['../_fast_l_e_d_8h.html',1,'']]],
+ ['fastled_5fconfig_2eh',['fastled_config.h',['../fastled__config_8h.html',1,'']]],
+ ['fastled_5fdelay_2eh',['fastled_delay.h',['../fastled__delay_8h.html',1,'']]],
+ ['fastled_5fprogmem_2eh',['fastled_progmem.h',['../fastled__progmem_8h.html',1,'']]],
+ ['fastpin_2eh',['fastpin.h',['../fastpin_8h.html',1,'']]]
+];
diff --git a/docs/3.1/search/files_3.html b/docs/3.1/search/files_3.html
new file mode 100644
index 00000000..7fa556e8
--- /dev/null
+++ b/docs/3.1/search/files_3.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="files_3.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/docs/3.1/search/files_3.js b/docs/3.1/search/files_3.js
new file mode 100644
index 00000000..288ee2ef
--- /dev/null
+++ b/docs/3.1/search/files_3.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['noise_2eh',['noise.h',['../noise_8h.html',1,'']]]
+];
diff --git a/docs/3.1/search/searchdata.js b/docs/3.1/search/searchdata.js
index ade48478..cc437762 100644
--- a/docs/3.1/search/searchdata.js
+++ b/docs/3.1/search/searchdata.js
@@ -2,11 +2,11 @@ var indexSectionsWithContent =
{
0: "_abcdefghijlmnopqrstuw",
1: "abcdfgijlmnopqstuw",
- 2: "bn",
+ 2: "bcfn",
3: "_abcdefghilmnopqrst",
4: "fr",
5: "afqs",
- 6: "chl",
+ 6: "cehl",
7: "cdhotu",
8: "bcdfnps",
9: "fprt"
diff --git a/docs/3.1/struct_c_h_s_v-members.html b/docs/3.1/struct_c_h_s_v-members.html
index cd3db77c..ed232de5 100644
--- a/docs/3.1/struct_c_h_s_v-members.html
+++ b/docs/3.1/struct_c_h_s_v-members.html
@@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/struct_c_h_s_v.html b/docs/3.1/struct_c_h_s_v.html
index 06b96a65..ab997dd9 100644
--- a/docs/3.1/struct_c_h_s_v.html
+++ b/docs/3.1/struct_c_h_s_v.html
@@ -172,7 +172,7 @@ union {</td></tr>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/struct_c_r_g_b-members.html b/docs/3.1/struct_c_r_g_b-members.html
index 0896b376..0b3af92a 100644
--- a/docs/3.1/struct_c_r_g_b-members.html
+++ b/docs/3.1/struct_c_r_g_b-members.html
@@ -299,7 +299,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/struct_c_r_g_b.html b/docs/3.1/struct_c_r_g_b.html
index 88204551..6fd56065 100644
--- a/docs/3.1/struct_c_r_g_b.html
+++ b/docs/3.1/struct_c_r_g_b.html
@@ -485,7 +485,7 @@ union {</td></tr>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/struct_multi_pixel_controller-members.html b/docs/3.1/struct_multi_pixel_controller-members.html
index 65d5638c..853fb0b0 100644
--- a/docs/3.1/struct_multi_pixel_controller-members.html
+++ b/docs/3.1/struct_multi_pixel_controller-members.html
@@ -143,7 +143,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/struct_multi_pixel_controller.html b/docs/3.1/struct_multi_pixel_controller.html
index 65de22d5..5aef0696 100644
--- a/docs/3.1/struct_multi_pixel_controller.html
+++ b/docs/3.1/struct_multi_pixel_controller.html
@@ -268,7 +268,7 @@ int uint8_t&#160;</td><td class="memItemRight" valign="bottom"><b>scale</b> { re
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/struct_pixel_controller-members.html b/docs/3.1/struct_pixel_controller-members.html
index 569c3d71..6adae635 100644
--- a/docs/3.1/struct_pixel_controller-members.html
+++ b/docs/3.1/struct_pixel_controller-members.html
@@ -125,7 +125,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/struct_pixel_controller.html b/docs/3.1/struct_pixel_controller.html
index 7370a36e..975b06a5 100644
--- a/docs/3.1/struct_pixel_controller.html
+++ b/docs/3.1/struct_pixel_controller.html
@@ -302,7 +302,7 @@ template&lt;EOrder RGB_ORDER&gt; </div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/structsub4-members.html b/docs/3.1/structsub4-members.html
index 782e52d8..cbb5ce9d 100644
--- a/docs/3.1/structsub4-members.html
+++ b/docs/3.1/structsub4-members.html
@@ -127,7 +127,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/structsub4.html b/docs/3.1/structsub4.html
index 2acbcf0e..59736da6 100644
--- a/docs/3.1/structsub4.html
+++ b/docs/3.1/structsub4.html
@@ -205,7 +205,7 @@ uint32_t&#160;</td><td class="memItemRight" valign="bottom"><b>d7</b>:1</td></tr
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/todo.html b/docs/3.1/todo.html
index 95cc4ff7..a5ac53e2 100644
--- a/docs/3.1/todo.html
+++ b/docs/3.1/todo.html
@@ -94,7 +94,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/trig8_8h_source.html b/docs/3.1/trig8_8h_source.html
index 5a84b587..fe125533 100644
--- a/docs/3.1/trig8_8h_source.html
+++ b/docs/3.1/trig8_8h_source.html
@@ -304,7 +304,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/union_i_e_e_e754binary32__t-members.html b/docs/3.1/union_i_e_e_e754binary32__t-members.html
index 63004fb8..eb4e757b 100644
--- a/docs/3.1/union_i_e_e_e754binary32__t-members.html
+++ b/docs/3.1/union_i_e_e_e754binary32__t-members.html
@@ -107,7 +107,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/union_i_e_e_e754binary32__t.html b/docs/3.1/union_i_e_e_e754binary32__t.html
index e1b80e9f..bb53de4b 100644
--- a/docs/3.1/union_i_e_e_e754binary32__t.html
+++ b/docs/3.1/union_i_e_e_e754binary32__t.html
@@ -157,7 +157,7 @@ struct {</td></tr>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/union_t_r_g_b_gradient_palette_entry_union-members.html b/docs/3.1/union_t_r_g_b_gradient_palette_entry_union-members.html
index b16c3d85..2017a7df 100644
--- a/docs/3.1/union_t_r_g_b_gradient_palette_entry_union-members.html
+++ b/docs/3.1/union_t_r_g_b_gradient_palette_entry_union-members.html
@@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/union_t_r_g_b_gradient_palette_entry_union.html b/docs/3.1/union_t_r_g_b_gradient_palette_entry_union.html
index fd2ce9c1..772c338c 100644
--- a/docs/3.1/union_t_r_g_b_gradient_palette_entry_union.html
+++ b/docs/3.1/union_t_r_g_b_gradient_palette_entry_union.html
@@ -124,7 +124,7 @@ uint8_t&#160;</td><td class="memItemRight" valign="bottom"><b>bytes</b> [4]</td>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/unionbitswap__type-members.html b/docs/3.1/unionbitswap__type-members.html
index 493bb94a..fd2f9c08 100644
--- a/docs/3.1/unionbitswap__type-members.html
+++ b/docs/3.1/unionbitswap__type-members.html
@@ -99,7 +99,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/unionbitswap__type.html b/docs/3.1/unionbitswap__type.html
index f6c59ff0..a551a8e3 100644
--- a/docs/3.1/unionbitswap__type.html
+++ b/docs/3.1/unionbitswap__type.html
@@ -132,7 +132,7 @@ struct {</td></tr>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/unionjust8bits-members.html b/docs/3.1/unionjust8bits-members.html
index 9571050a..fe48b8af 100644
--- a/docs/3.1/unionjust8bits-members.html
+++ b/docs/3.1/unionjust8bits-members.html
@@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/unionjust8bits.html b/docs/3.1/unionjust8bits.html
index f78283f9..5589a4fd 100644
--- a/docs/3.1/unionjust8bits.html
+++ b/docs/3.1/unionjust8bits.html
@@ -140,7 +140,7 @@ struct {</td></tr>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/uniont_bytes_for_long-members.html b/docs/3.1/uniont_bytes_for_long-members.html
index 12954ec5..4b95d5b0 100644
--- a/docs/3.1/uniont_bytes_for_long-members.html
+++ b/docs/3.1/uniont_bytes_for_long-members.html
@@ -97,7 +97,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
diff --git a/docs/3.1/uniont_bytes_for_long.html b/docs/3.1/uniont_bytes_for_long.html
index b083bd54..6515cece 100644
--- a/docs/3.1/uniont_bytes_for_long.html
+++ b/docs/3.1/uniont_bytes_for_long.html
@@ -108,7 +108,7 @@ uint8_t&#160;</td><td class="memItemRight" valign="bottom"><b>raw</b> [4]</td></
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
-Generated on Mon Aug 10 2015 23:02:36 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
+Generated on Mon Aug 10 2015 23:10:47 for FastLED by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>