kopia lustrzana https://github.com/russhughes/st7789py_mpy
1342 wiersze
154 KiB
HTML
1342 wiersze
154 KiB
HTML
<!DOCTYPE html>
|
|
<html class="writer-html5" lang="en" >
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<title>st7789py — st7789py 0.1.0 documentation</title>
|
|
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
|
|
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
|
|
<!--[if lt IE 9]>
|
|
<script src="../_static/js/html5shiv.min.js"></script>
|
|
<![endif]-->
|
|
|
|
<script src="../_static/jquery.js?v=5d32c60e"></script>
|
|
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
<script src="../_static/documentation_options.js?v=01f34227"></script>
|
|
<script src="../_static/doctools.js?v=888ff710"></script>
|
|
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
<script src="../_static/js/theme.js"></script>
|
|
<link rel="index" title="Index" href="../genindex.html" />
|
|
<link rel="search" title="Search" href="../search.html" />
|
|
</head>
|
|
|
|
<body class="wy-body-for-nav">
|
|
<div class="wy-grid-for-nav">
|
|
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
<div class="wy-side-scroll">
|
|
<div class="wy-side-nav-search" style="background: #2980B9" >
|
|
|
|
|
|
|
|
<a href="../index.html" class="icon icon-home">
|
|
st7789py
|
|
</a>
|
|
<div role="search">
|
|
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
|
|
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
|
|
<input type="hidden" name="check_keywords" value="yes" />
|
|
<input type="hidden" name="area" value="default" />
|
|
</form>
|
|
</div>
|
|
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
|
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
|
|
<ul>
|
|
<li class="toctree-l1"><a class="reference internal" href="../index.html">st7789py Driver</a></li>
|
|
<li class="toctree-l1"><a class="reference internal" href="../st7789py.html">st7789py Reference</a><ul>
|
|
<li class="toctree-l2"><a class="reference internal" href="../st7789py.html#st7789py.color565"><code class="docutils literal notranslate"><span class="pre">color565()</span></code></a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="../st7789py.html#st7789py.ST7789"><code class="docutils literal notranslate"><span class="pre">ST7789</span></code></a><ul>
|
|
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.init"><code class="docutils literal notranslate"><span class="pre">ST7789.init()</span></code></a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.hard_reset"><code class="docutils literal notranslate"><span class="pre">ST7789.hard_reset()</span></code></a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.soft_reset"><code class="docutils literal notranslate"><span class="pre">ST7789.soft_reset()</span></code></a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.sleep_mode"><code class="docutils literal notranslate"><span class="pre">ST7789.sleep_mode()</span></code></a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.inversion_mode"><code class="docutils literal notranslate"><span class="pre">ST7789.inversion_mode()</span></code></a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.rotation"><code class="docutils literal notranslate"><span class="pre">ST7789.rotation()</span></code></a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.vline"><code class="docutils literal notranslate"><span class="pre">ST7789.vline()</span></code></a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.hline"><code class="docutils literal notranslate"><span class="pre">ST7789.hline()</span></code></a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.pixel"><code class="docutils literal notranslate"><span class="pre">ST7789.pixel()</span></code></a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.blit_buffer"><code class="docutils literal notranslate"><span class="pre">ST7789.blit_buffer()</span></code></a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.rect"><code class="docutils literal notranslate"><span class="pre">ST7789.rect()</span></code></a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.fill_rect"><code class="docutils literal notranslate"><span class="pre">ST7789.fill_rect()</span></code></a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.fill"><code class="docutils literal notranslate"><span class="pre">ST7789.fill()</span></code></a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.line"><code class="docutils literal notranslate"><span class="pre">ST7789.line()</span></code></a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.vscrdef"><code class="docutils literal notranslate"><span class="pre">ST7789.vscrdef()</span></code></a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.vscsad"><code class="docutils literal notranslate"><span class="pre">ST7789.vscsad()</span></code></a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.text"><code class="docutils literal notranslate"><span class="pre">ST7789.text()</span></code></a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.bitmap"><code class="docutils literal notranslate"><span class="pre">ST7789.bitmap()</span></code></a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.pbitmap"><code class="docutils literal notranslate"><span class="pre">ST7789.pbitmap()</span></code></a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.write"><code class="docutils literal notranslate"><span class="pre">ST7789.write()</span></code></a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.write_width"><code class="docutils literal notranslate"><span class="pre">ST7789.write_width()</span></code></a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../st7789py.html#st7789py.ST7789.polygon"><code class="docutils literal notranslate"><span class="pre">ST7789.polygon()</span></code></a></li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
<li class="toctree-l1"><a class="reference internal" href="../examples.html">Example Programs</a><ul>
|
|
<li class="toctree-l2"><a class="reference internal" href="../examples.html#configuration-modules">Configuration modules</a><ul>
|
|
<li class="toctree-l3"><a class="reference internal" href="../configs/atom_s3.html">M5STACK AtomS3 128x128 (GC9107)</a><ul>
|
|
<li class="toctree-l4"><a class="reference internal" href="../configs/atom_s3.html#tft-configs-atom-s3-tft-config-py">tft_configs/atom_s3/tft_config.py</a></li>
|
|
<li class="toctree-l4"><a class="reference internal" href="../configs/atom_s3.html#tft-configs-atom-s3-tft-buttons-py">tft_configs/atom_s3/tft_buttons.py</a></li>
|
|
</ul>
|
|
</li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../configs/esp32_320x240.html">Generic ESP32 320x240</a><ul>
|
|
<li class="toctree-l4"><a class="reference internal" href="../configs/esp32_320x240.html#tft-configs-esp32-320x240-tft-config-py">tft_configs/esp32_320x240/tft_config.py</a></li>
|
|
<li class="toctree-l4"><a class="reference internal" href="../configs/esp32_320x240.html#tft-configs-esp32-320x240-tft-buttons-py">tft_configs/esp32_320x240/tft_buttons.py</a></li>
|
|
</ul>
|
|
</li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../configs/m5stack_core.html">M5STACK CORE 320x240 (ILI9342)</a><ul>
|
|
<li class="toctree-l4"><a class="reference internal" href="../configs/m5stack_core.html#tft-configs-m5stack-core-tft-config-py">tft_configs/m5stack_core/tft_config.py</a></li>
|
|
<li class="toctree-l4"><a class="reference internal" href="../configs/m5stack_core.html#tft-configs-m5stack-core-tft-buttons-py">tft_configs/m5stack_core/tft_buttons.py</a></li>
|
|
</ul>
|
|
</li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../configs/m5stack_core2.html">M5STACK CORE2 320x240 (ILI9342)</a><ul>
|
|
<li class="toctree-l4"><a class="reference internal" href="../configs/m5stack_core2.html#tft-configs-m5stack-core2-tft-config-py">tft_configs/m5stack_core2/tft_config.py</a></li>
|
|
<li class="toctree-l4"><a class="reference internal" href="../configs/m5stack_core2.html#tft-configs-m5stack-core2-tft-buttons-py">tft_configs/m5stack_core2/tft_buttons.py</a></li>
|
|
</ul>
|
|
</li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../configs/m5stack_core3.html">M5STACK CoreS3 320x240 (ILI9342)</a><ul>
|
|
<li class="toctree-l4"><a class="reference internal" href="../configs/m5stack_core3.html#tft-configs-m5stack-core3-tft-config-py">tft_configs/m5stack_core3/tft_config.py</a></li>
|
|
<li class="toctree-l4"><a class="reference internal" href="../configs/m5stack_core3.html#tft-configs-m5stack-core3-tft-buttons-py">tft_configs/m5stack_core3/tft_buttons.py</a></li>
|
|
</ul>
|
|
</li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../configs/rp2040_touch_lcd_128.html">RP2040-Touch-LCD-1.28 240x240 (GC9A01)</a><ul>
|
|
<li class="toctree-l4"><a class="reference internal" href="../configs/rp2040_touch_lcd_128.html#tft-configs-rp2040-touch-lcd-128-tft-config-py">tft_configs/rp2040_touch_lcd_128/tft_config.py</a></li>
|
|
<li class="toctree-l4"><a class="reference internal" href="../configs/rp2040_touch_lcd_128.html#tft-configs-rp2040-touch-lcd-128-tft-buttons-py">tft_configs/rp2040_touch_lcd_128/tft_buttons.py</a></li>
|
|
</ul>
|
|
</li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../configs/t-dongle-s3.html">LilyGo T-Dongle-S3 80x160 (ST7735)</a><ul>
|
|
<li class="toctree-l4"><a class="reference internal" href="../configs/t-dongle-s3.html#tft-configs-t-dongle-s3-tft-config-py">tft_configs/t-dongle-s3/tft_config.py</a></li>
|
|
<li class="toctree-l4"><a class="reference internal" href="../configs/t-dongle-s3.html#tft-configs-t-dongle-s3-tft-buttons-py">tft_configs/t-dongle-s3/tft_buttons.py</a></li>
|
|
</ul>
|
|
</li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../configs/t-embed.html">LilyGo T-embed 170x320</a><ul>
|
|
<li class="toctree-l4"><a class="reference internal" href="../configs/t-embed.html#tft-configs-t-embed-tft-config-py">tft_configs/t-embed/tft_config.py</a></li>
|
|
<li class="toctree-l4"><a class="reference internal" href="../configs/t-embed.html#tft-configs-t-embed-tft-buttons-py">tft_configs/t-embed/tft_buttons.py</a></li>
|
|
</ul>
|
|
</li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../configs/t_qt_pro.html">LilyGo T-QT Pro 128x128 (GC9107)</a><ul>
|
|
<li class="toctree-l4"><a class="reference internal" href="../configs/t_qt_pro.html#tft-configs-t-qt-pro-tft-config-py">tft_configs/t_qt_pro/tft_config.py</a></li>
|
|
<li class="toctree-l4"><a class="reference internal" href="../configs/t_qt_pro.html#tft-configs-t-qt-pro-tft-buttons-py">tft_configs/t_qt_pro/tft_buttons.py</a></li>
|
|
</ul>
|
|
</li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../configs/ttgo_tdisplay.html">LilyGo T-DISPLAY 135x240</a><ul>
|
|
<li class="toctree-l4"><a class="reference internal" href="../configs/ttgo_tdisplay.html#tft-configs-ttgo-tdisplay-tft-config-py">tft_configs/ttgo_tdisplay/tft_config.py</a></li>
|
|
<li class="toctree-l4"><a class="reference internal" href="../configs/ttgo_tdisplay.html#tft-configs-ttgo-tdisplay-tft-buttons-py">tft_configs/ttgo_tdisplay/tft_buttons.py</a></li>
|
|
</ul>
|
|
</li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../configs/ttgo_tdisplay_rp2040.html">LilyGo T-DISPLAY RP2040 135x240</a><ul>
|
|
<li class="toctree-l4"><a class="reference internal" href="../configs/ttgo_tdisplay_rp2040.html#tft-configs-ttgo-tdisplay-rp2040-tft-config-py">tft_configs/ttgo_tdisplay_rp2040/tft_config.py</a></li>
|
|
<li class="toctree-l4"><a class="reference internal" href="../configs/ttgo_tdisplay_rp2040.html#tft-configs-ttgo-tdisplay-rp2040-tft-buttons-py">tft_configs/ttgo_tdisplay_rp2040/tft_buttons.py</a></li>
|
|
</ul>
|
|
</li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../configs/waveshare_114.html">Waveshare Pico LCD 1.14 135x240</a><ul>
|
|
<li class="toctree-l4"><a class="reference internal" href="../configs/waveshare_114.html#tft-configs-waveshare-114-tft-config-py">tft_configs/waveshare_114/tft_config.py</a></li>
|
|
<li class="toctree-l4"><a class="reference internal" href="../configs/waveshare_114.html#tft-configs-waveshare-114-tft-buttons-py">tft_configs/waveshare_114/tft_buttons.py</a></li>
|
|
</ul>
|
|
</li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../configs/waveshare_13.html">Waveshare Pico LCD 1.3 240x240</a><ul>
|
|
<li class="toctree-l4"><a class="reference internal" href="../configs/waveshare_13.html#tft-configs-waveshare-13-tft-config-py">tft_configs/waveshare_13/tft_config.py</a></li>
|
|
<li class="toctree-l4"><a class="reference internal" href="../configs/waveshare_13.html#tft-configs-waveshare-13-tft-buttons-py">tft_configs/waveshare_13/tft_buttons.py</a></li>
|
|
</ul>
|
|
</li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../configs/waveshare_2.html">Waveshare Pico LCD 2 240x320</a><ul>
|
|
<li class="toctree-l4"><a class="reference internal" href="../configs/waveshare_2.html#tft-configs-waveshare-2-tft-config-py">tft_configs/waveshare_2/tft_config.py</a></li>
|
|
<li class="toctree-l4"><a class="reference internal" href="../configs/waveshare_2.html#tft-configs-waveshare-2-tft-buttons-py">tft_configs/waveshare_2/tft_buttons.py</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
<li class="toctree-l2"><a class="reference internal" href="../examples.html#examples">Examples</a><ul>
|
|
<li class="toctree-l3"><a class="reference internal" href="../examples/alien.html">alien.py</a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../examples/boxlines.html">boxlines.py</a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../examples/chango.html">chango.py</a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../examples/color_test.html">color_test.py</a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../examples/colorbars.html">colorbars.py</a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../examples/feathers.html">feathers.py</a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../examples/fonts.html">fonts.py</a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../examples/hello.html">hello.py</a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../examples/noto_fonts.html">noto_fonts.py</a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../examples/proverbs.html">proverbs.py</a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../examples/roids.html">roids.py</a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../examples/rotations.html">rotations.py</a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../examples/scroll.html">scroll.py</a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../examples/tiny_hello.html">tiny_hello.py</a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../examples/tiny_toasters.html">tiny_toasters.py</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
<li class="toctree-l1"><a class="reference internal" href="../fonts.html">Fonts</a><ul>
|
|
<li class="toctree-l2"><a class="reference internal" href="../fonts.html#bitmap-fonts">Bitmap Fonts</a><ul>
|
|
<li class="toctree-l3"><a class="reference internal" href="../fonts.html#bitmap-font-conversion">Bitmap Font Conversion</a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../fonts.html#bitmap-font-samples">Bitmap Font Samples</a><ul>
|
|
<li class="toctree-l4"><a class="reference internal" href="../fonts.html#x8-rom-fonts">8x8 Rom Fonts</a></li>
|
|
<li class="toctree-l4"><a class="reference internal" href="../fonts.html#x16-rom-fonts">8x16 Rom Fonts</a></li>
|
|
<li class="toctree-l4"><a class="reference internal" href="../fonts.html#id2">16x16 Rom Fonts</a></li>
|
|
<li class="toctree-l4"><a class="reference internal" href="../fonts.html#x32-rom-fonts">16x32 Rom Fonts</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
<li class="toctree-l2"><a class="reference internal" href="../fonts.html#true-type-fonts">True Type fonts</a><ul>
|
|
<li class="toctree-l3"><a class="reference internal" href="../fonts.html#true-type-font-conversion">True-Type Font Conversion</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
<li class="toctree-l1"><a class="reference internal" href="../utilities.html">Utilities</a><ul>
|
|
<li class="toctree-l2"><a class="reference internal" href="../utilities/create_png_examples.html">create_png_examples.py</a><ul>
|
|
<li class="toctree-l3"><a class="reference internal" href="../utilities/create_png_examples.html#example">Example</a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../utilities/create_png_examples.html#usage">Usage</a></li>
|
|
</ul>
|
|
</li>
|
|
<li class="toctree-l2"><a class="reference internal" href="../utilities/image_converter.html">image_converter.py</a><ul>
|
|
<li class="toctree-l3"><a class="reference internal" href="../utilities/image_converter.html#example">Example</a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../utilities/image_converter.html#usage">Usage</a></li>
|
|
</ul>
|
|
</li>
|
|
<li class="toctree-l2"><a class="reference internal" href="../utilities/make_colorbars_bitmap.html">make_colorbars_bitmap.py</a><ul>
|
|
<li class="toctree-l3"><a class="reference internal" href="../utilities/make_colorbars_bitmap.html#example">Example</a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../utilities/make_colorbars_bitmap.html#usage">Usage</a></li>
|
|
</ul>
|
|
</li>
|
|
<li class="toctree-l2"><a class="reference internal" href="../utilities/sprites_converter.html">sprites_converter.py</a><ul>
|
|
<li class="toctree-l3"><a class="reference internal" href="../utilities/sprites_converter.html#example">Example</a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../utilities/sprites_converter.html#usage">Usage</a></li>
|
|
</ul>
|
|
</li>
|
|
<li class="toctree-l2"><a class="reference internal" href="../utilities/text_font_converter.html">text_font_converter.py</a><ul>
|
|
<li class="toctree-l3"><a class="reference internal" href="../utilities/text_font_converter.html#example">Example</a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../utilities/text_font_converter.html#usage">Usage</a></li>
|
|
</ul>
|
|
</li>
|
|
<li class="toctree-l2"><a class="reference internal" href="../utilities/write_font_converter.html">write_font_converter.py</a><ul>
|
|
<li class="toctree-l3"><a class="reference internal" href="../utilities/write_font_converter.html#example">Example</a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="../utilities/write_font_converter.html#usage">Usage</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
<li class="toctree-l1"><a class="reference internal" href="../genindex.html">Index</a></li>
|
|
</ul>
|
|
|
|
</div>
|
|
</div>
|
|
</nav>
|
|
|
|
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" style="background: #2980B9" >
|
|
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
<a href="../index.html">st7789py</a>
|
|
</nav>
|
|
|
|
<div class="wy-nav-content">
|
|
<div class="rst-content style-external-links">
|
|
<div role="navigation" aria-label="Page navigation">
|
|
<ul class="wy-breadcrumbs">
|
|
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
<li class="breadcrumb-item"><a href="index.html">Module code</a></li>
|
|
<li class="breadcrumb-item active">st7789py</li>
|
|
<li class="wy-breadcrumbs-aside">
|
|
</li>
|
|
</ul>
|
|
<hr/>
|
|
</div>
|
|
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
<div itemprop="articleBody">
|
|
|
|
<h1>Source code for st7789py</h1><div class="highlight"><pre>
|
|
<span></span><span class="sd">"""</span>
|
|
<span class="sd">MIT License</span>
|
|
|
|
<span class="sd">Copyright (c) 2020-2023 Russ Hughes</span>
|
|
|
|
<span class="sd">Copyright (c) 2019 Ivan Belokobylskiy</span>
|
|
|
|
<span class="sd">Permission is hereby granted, free of charge, to any person obtaining a copy</span>
|
|
<span class="sd">of this software and associated documentation files (the "Software"), to deal</span>
|
|
<span class="sd">in the Software without restriction, including without limitation the rights</span>
|
|
<span class="sd">to use, copy, modify, merge, publish, distribute, sublicense, and/or sell</span>
|
|
<span class="sd">copies of the Software, and to permit persons to whom the Software is</span>
|
|
<span class="sd">furnished to do so, subject to the following conditions:</span>
|
|
|
|
<span class="sd">The above copyright notice and this permission notice shall be included in all</span>
|
|
<span class="sd">copies or substantial portions of the Software.</span>
|
|
|
|
<span class="sd">THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span>
|
|
<span class="sd">IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
|
|
<span class="sd">FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
|
|
<span class="sd">AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
|
|
<span class="sd">LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,</span>
|
|
<span class="sd">OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span>
|
|
<span class="sd">SOFTWARE.</span>
|
|
|
|
<span class="sd">The driver is based on devbis' st7789py_mpy module from</span>
|
|
<span class="sd">https://github.com/devbis/st7789py_mpy.</span>
|
|
|
|
<span class="sd">This driver supports:</span>
|
|
|
|
<span class="sd">- 320x240, 240x240, 135x240 and 128x128 pixel displays</span>
|
|
<span class="sd">- Display rotation</span>
|
|
<span class="sd">- RGB and BGR color orders</span>
|
|
<span class="sd">- Hardware based scrolling</span>
|
|
<span class="sd">- Drawing text using 8 and 16 bit wide bitmap fonts with heights that are</span>
|
|
<span class="sd"> multiples of 8. Included are 12 bitmap fonts derived from classic pc</span>
|
|
<span class="sd"> BIOS text mode fonts.</span>
|
|
<span class="sd">- Drawing text using converted TrueType fonts.</span>
|
|
<span class="sd">- Drawing converted bitmaps</span>
|
|
<span class="sd">- Named color constants</span>
|
|
|
|
<span class="sd"> - BLACK</span>
|
|
<span class="sd"> - BLUE</span>
|
|
<span class="sd"> - RED</span>
|
|
<span class="sd"> - GREEN</span>
|
|
<span class="sd"> - CYAN</span>
|
|
<span class="sd"> - MAGENTA</span>
|
|
<span class="sd"> - YELLOW</span>
|
|
<span class="sd"> - WHITE</span>
|
|
|
|
<span class="sd">"""</span>
|
|
|
|
<span class="kn">from</span> <span class="nn">math</span> <span class="kn">import</span> <span class="n">sin</span><span class="p">,</span> <span class="n">cos</span>
|
|
|
|
<span class="c1">#</span>
|
|
<span class="c1"># This allows sphinx to build the docs</span>
|
|
<span class="c1">#</span>
|
|
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="kn">from</span> <span class="nn">time</span> <span class="kn">import</span> <span class="n">sleep_ms</span>
|
|
<span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
|
|
<span class="n">sleep_ms</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">ms</span><span class="p">:</span> <span class="kc">None</span>
|
|
<span class="n">uint</span> <span class="o">=</span> <span class="nb">int</span>
|
|
<span class="n">const</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">x</span>
|
|
|
|
<span class="k">class</span> <span class="nc">micropython</span><span class="p">:</span>
|
|
<span class="nd">@staticmethod</span>
|
|
<span class="k">def</span> <span class="nf">viper</span><span class="p">(</span><span class="n">func</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">func</span>
|
|
|
|
<span class="nd">@staticmethod</span>
|
|
<span class="k">def</span> <span class="nf">native</span><span class="p">(</span><span class="n">func</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">func</span>
|
|
|
|
|
|
<span class="c1">#</span>
|
|
<span class="c1"># If you don't need to build the docs, you can remove all of the lines between</span>
|
|
<span class="c1"># here and the comment above except for the "from time import sleep_ms" line.</span>
|
|
<span class="c1">#</span>
|
|
|
|
<span class="kn">import</span> <span class="nn">struct</span>
|
|
|
|
<span class="c1"># ST7789 commands</span>
|
|
<span class="n">_ST7789_SWRESET</span> <span class="o">=</span> <span class="sa">b</span><span class="s2">"</span><span class="se">\x01</span><span class="s2">"</span>
|
|
<span class="n">_ST7789_SLPIN</span> <span class="o">=</span> <span class="sa">b</span><span class="s2">"</span><span class="se">\x10</span><span class="s2">"</span>
|
|
<span class="n">_ST7789_SLPOUT</span> <span class="o">=</span> <span class="sa">b</span><span class="s2">"</span><span class="se">\x11</span><span class="s2">"</span>
|
|
<span class="n">_ST7789_NORON</span> <span class="o">=</span> <span class="sa">b</span><span class="s2">"</span><span class="se">\x13</span><span class="s2">"</span>
|
|
<span class="n">_ST7789_INVOFF</span> <span class="o">=</span> <span class="sa">b</span><span class="s2">"</span><span class="se">\x20</span><span class="s2">"</span>
|
|
<span class="n">_ST7789_INVON</span> <span class="o">=</span> <span class="sa">b</span><span class="s2">"</span><span class="se">\x21</span><span class="s2">"</span>
|
|
<span class="n">_ST7789_DISPOFF</span> <span class="o">=</span> <span class="sa">b</span><span class="s2">"</span><span class="se">\x28</span><span class="s2">"</span>
|
|
<span class="n">_ST7789_DISPON</span> <span class="o">=</span> <span class="sa">b</span><span class="s2">"</span><span class="se">\x29</span><span class="s2">"</span>
|
|
<span class="n">_ST7789_CASET</span> <span class="o">=</span> <span class="sa">b</span><span class="s2">"</span><span class="se">\x2a</span><span class="s2">"</span>
|
|
<span class="n">_ST7789_RASET</span> <span class="o">=</span> <span class="sa">b</span><span class="s2">"</span><span class="se">\x2b</span><span class="s2">"</span>
|
|
<span class="n">_ST7789_RAMWR</span> <span class="o">=</span> <span class="sa">b</span><span class="s2">"</span><span class="se">\x2c</span><span class="s2">"</span>
|
|
<span class="n">_ST7789_VSCRDEF</span> <span class="o">=</span> <span class="sa">b</span><span class="s2">"</span><span class="se">\x33</span><span class="s2">"</span>
|
|
<span class="n">_ST7789_COLMOD</span> <span class="o">=</span> <span class="sa">b</span><span class="s2">"</span><span class="se">\x3a</span><span class="s2">"</span>
|
|
<span class="n">_ST7789_MADCTL</span> <span class="o">=</span> <span class="sa">b</span><span class="s2">"</span><span class="se">\x36</span><span class="s2">"</span>
|
|
<span class="n">_ST7789_VSCSAD</span> <span class="o">=</span> <span class="sa">b</span><span class="s2">"</span><span class="se">\x37</span><span class="s2">"</span>
|
|
<span class="n">_ST7789_RAMCTL</span> <span class="o">=</span> <span class="sa">b</span><span class="s2">"</span><span class="se">\xb0</span><span class="s2">"</span>
|
|
|
|
<span class="c1"># MADCTL bits</span>
|
|
<span class="n">_ST7789_MADCTL_MY</span> <span class="o">=</span> <span class="n">const</span><span class="p">(</span><span class="mh">0x80</span><span class="p">)</span>
|
|
<span class="n">_ST7789_MADCTL_MX</span> <span class="o">=</span> <span class="n">const</span><span class="p">(</span><span class="mh">0x40</span><span class="p">)</span>
|
|
<span class="n">_ST7789_MADCTL_MV</span> <span class="o">=</span> <span class="n">const</span><span class="p">(</span><span class="mh">0x20</span><span class="p">)</span>
|
|
<span class="n">_ST7789_MADCTL_ML</span> <span class="o">=</span> <span class="n">const</span><span class="p">(</span><span class="mh">0x10</span><span class="p">)</span>
|
|
<span class="n">_ST7789_MADCTL_BGR</span> <span class="o">=</span> <span class="n">const</span><span class="p">(</span><span class="mh">0x08</span><span class="p">)</span>
|
|
<span class="n">_ST7789_MADCTL_MH</span> <span class="o">=</span> <span class="n">const</span><span class="p">(</span><span class="mh">0x04</span><span class="p">)</span>
|
|
<span class="n">_ST7789_MADCTL_RGB</span> <span class="o">=</span> <span class="n">const</span><span class="p">(</span><span class="mh">0x00</span><span class="p">)</span>
|
|
|
|
<span class="n">RGB</span> <span class="o">=</span> <span class="mh">0x00</span>
|
|
<span class="n">BGR</span> <span class="o">=</span> <span class="mh">0x08</span>
|
|
|
|
<span class="c1"># Color modes</span>
|
|
<span class="n">_COLOR_MODE_65K</span> <span class="o">=</span> <span class="n">const</span><span class="p">(</span><span class="mh">0x50</span><span class="p">)</span>
|
|
<span class="n">_COLOR_MODE_262K</span> <span class="o">=</span> <span class="n">const</span><span class="p">(</span><span class="mh">0x60</span><span class="p">)</span>
|
|
<span class="n">_COLOR_MODE_12BIT</span> <span class="o">=</span> <span class="n">const</span><span class="p">(</span><span class="mh">0x03</span><span class="p">)</span>
|
|
<span class="n">_COLOR_MODE_16BIT</span> <span class="o">=</span> <span class="n">const</span><span class="p">(</span><span class="mh">0x05</span><span class="p">)</span>
|
|
<span class="n">_COLOR_MODE_18BIT</span> <span class="o">=</span> <span class="n">const</span><span class="p">(</span><span class="mh">0x06</span><span class="p">)</span>
|
|
<span class="n">_COLOR_MODE_16M</span> <span class="o">=</span> <span class="n">const</span><span class="p">(</span><span class="mh">0x07</span><span class="p">)</span>
|
|
|
|
<span class="c1"># Color definitions</span>
|
|
<span class="n">BLACK</span> <span class="o">=</span> <span class="n">const</span><span class="p">(</span><span class="mh">0x0000</span><span class="p">)</span>
|
|
<span class="n">BLUE</span> <span class="o">=</span> <span class="n">const</span><span class="p">(</span><span class="mh">0x001F</span><span class="p">)</span>
|
|
<span class="n">RED</span> <span class="o">=</span> <span class="n">const</span><span class="p">(</span><span class="mh">0xF800</span><span class="p">)</span>
|
|
<span class="n">GREEN</span> <span class="o">=</span> <span class="n">const</span><span class="p">(</span><span class="mh">0x07E0</span><span class="p">)</span>
|
|
<span class="n">CYAN</span> <span class="o">=</span> <span class="n">const</span><span class="p">(</span><span class="mh">0x07FF</span><span class="p">)</span>
|
|
<span class="n">MAGENTA</span> <span class="o">=</span> <span class="n">const</span><span class="p">(</span><span class="mh">0xF81F</span><span class="p">)</span>
|
|
<span class="n">YELLOW</span> <span class="o">=</span> <span class="n">const</span><span class="p">(</span><span class="mh">0xFFE0</span><span class="p">)</span>
|
|
<span class="n">WHITE</span> <span class="o">=</span> <span class="n">const</span><span class="p">(</span><span class="mh">0xFFFF</span><span class="p">)</span>
|
|
|
|
<span class="n">_ENCODE_PIXEL</span> <span class="o">=</span> <span class="n">const</span><span class="p">(</span><span class="s2">">H"</span><span class="p">)</span>
|
|
<span class="n">_ENCODE_PIXEL_SWAPPED</span> <span class="o">=</span> <span class="n">const</span><span class="p">(</span><span class="s2">"<H"</span><span class="p">)</span>
|
|
<span class="n">_ENCODE_POS</span> <span class="o">=</span> <span class="n">const</span><span class="p">(</span><span class="s2">">HH"</span><span class="p">)</span>
|
|
<span class="n">_ENCODE_POS_16</span> <span class="o">=</span> <span class="n">const</span><span class="p">(</span><span class="s2">"<HH"</span><span class="p">)</span>
|
|
|
|
<span class="c1"># must be at least 128 for 8 bit wide fonts</span>
|
|
<span class="c1"># must be at least 256 for 16 bit wide fonts</span>
|
|
<span class="n">_BUFFER_SIZE</span> <span class="o">=</span> <span class="n">const</span><span class="p">(</span><span class="mi">256</span><span class="p">)</span>
|
|
|
|
<span class="n">_BIT7</span> <span class="o">=</span> <span class="n">const</span><span class="p">(</span><span class="mh">0x80</span><span class="p">)</span>
|
|
<span class="n">_BIT6</span> <span class="o">=</span> <span class="n">const</span><span class="p">(</span><span class="mh">0x40</span><span class="p">)</span>
|
|
<span class="n">_BIT5</span> <span class="o">=</span> <span class="n">const</span><span class="p">(</span><span class="mh">0x20</span><span class="p">)</span>
|
|
<span class="n">_BIT4</span> <span class="o">=</span> <span class="n">const</span><span class="p">(</span><span class="mh">0x10</span><span class="p">)</span>
|
|
<span class="n">_BIT3</span> <span class="o">=</span> <span class="n">const</span><span class="p">(</span><span class="mh">0x08</span><span class="p">)</span>
|
|
<span class="n">_BIT2</span> <span class="o">=</span> <span class="n">const</span><span class="p">(</span><span class="mh">0x04</span><span class="p">)</span>
|
|
<span class="n">_BIT1</span> <span class="o">=</span> <span class="n">const</span><span class="p">(</span><span class="mh">0x02</span><span class="p">)</span>
|
|
<span class="n">_BIT0</span> <span class="o">=</span> <span class="n">const</span><span class="p">(</span><span class="mh">0x01</span><span class="p">)</span>
|
|
|
|
<span class="c1"># fmt: off</span>
|
|
|
|
<span class="c1"># Rotation tables</span>
|
|
<span class="c1"># (madctl, width, height, xstart, ystart, needs_swap)[rotation % 4]</span>
|
|
|
|
<span class="n">_DISPLAY_240x320</span> <span class="o">=</span> <span class="p">(</span>
|
|
<span class="p">(</span><span class="mh">0x00</span><span class="p">,</span> <span class="mi">240</span><span class="p">,</span> <span class="mi">320</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="kc">False</span><span class="p">),</span>
|
|
<span class="p">(</span><span class="mh">0x60</span><span class="p">,</span> <span class="mi">320</span><span class="p">,</span> <span class="mi">240</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="kc">False</span><span class="p">),</span>
|
|
<span class="p">(</span><span class="mh">0xc0</span><span class="p">,</span> <span class="mi">240</span><span class="p">,</span> <span class="mi">320</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="kc">False</span><span class="p">),</span>
|
|
<span class="p">(</span><span class="mh">0xa0</span><span class="p">,</span> <span class="mi">320</span><span class="p">,</span> <span class="mi">240</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="kc">False</span><span class="p">))</span>
|
|
|
|
<span class="n">_DISPLAY_240x240</span> <span class="o">=</span> <span class="p">(</span>
|
|
<span class="p">(</span><span class="mh">0x00</span><span class="p">,</span> <span class="mi">240</span><span class="p">,</span> <span class="mi">240</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="kc">False</span><span class="p">),</span>
|
|
<span class="p">(</span><span class="mh">0x60</span><span class="p">,</span> <span class="mi">240</span><span class="p">,</span> <span class="mi">240</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="kc">False</span><span class="p">),</span>
|
|
<span class="p">(</span><span class="mh">0xc0</span><span class="p">,</span> <span class="mi">240</span><span class="p">,</span> <span class="mi">240</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">80</span><span class="p">,</span> <span class="kc">False</span><span class="p">),</span>
|
|
<span class="p">(</span><span class="mh">0xa0</span><span class="p">,</span> <span class="mi">240</span><span class="p">,</span> <span class="mi">240</span><span class="p">,</span> <span class="mi">80</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="kc">False</span><span class="p">))</span>
|
|
|
|
<span class="n">_DISPLAY_135x240</span> <span class="o">=</span> <span class="p">(</span>
|
|
<span class="p">(</span><span class="mh">0x00</span><span class="p">,</span> <span class="mi">135</span><span class="p">,</span> <span class="mi">240</span><span class="p">,</span> <span class="mi">52</span><span class="p">,</span> <span class="mi">40</span><span class="p">,</span> <span class="kc">False</span><span class="p">),</span>
|
|
<span class="p">(</span><span class="mh">0x60</span><span class="p">,</span> <span class="mi">240</span><span class="p">,</span> <span class="mi">135</span><span class="p">,</span> <span class="mi">40</span><span class="p">,</span> <span class="mi">53</span><span class="p">,</span> <span class="kc">False</span><span class="p">),</span>
|
|
<span class="p">(</span><span class="mh">0xc0</span><span class="p">,</span> <span class="mi">135</span><span class="p">,</span> <span class="mi">240</span><span class="p">,</span> <span class="mi">53</span><span class="p">,</span> <span class="mi">40</span><span class="p">,</span> <span class="kc">False</span><span class="p">),</span>
|
|
<span class="p">(</span><span class="mh">0xa0</span><span class="p">,</span> <span class="mi">240</span><span class="p">,</span> <span class="mi">135</span><span class="p">,</span> <span class="mi">40</span><span class="p">,</span> <span class="mi">52</span><span class="p">,</span> <span class="kc">False</span><span class="p">))</span>
|
|
|
|
<span class="n">_DISPLAY_128x128</span> <span class="o">=</span> <span class="p">(</span>
|
|
<span class="p">(</span><span class="mh">0x00</span><span class="p">,</span> <span class="mi">128</span><span class="p">,</span> <span class="mi">128</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="kc">False</span><span class="p">),</span>
|
|
<span class="p">(</span><span class="mh">0x60</span><span class="p">,</span> <span class="mi">128</span><span class="p">,</span> <span class="mi">128</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="kc">False</span><span class="p">),</span>
|
|
<span class="p">(</span><span class="mh">0xc0</span><span class="p">,</span> <span class="mi">128</span><span class="p">,</span> <span class="mi">128</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="kc">False</span><span class="p">),</span>
|
|
<span class="p">(</span><span class="mh">0xa0</span><span class="p">,</span> <span class="mi">128</span><span class="p">,</span> <span class="mi">128</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="kc">False</span><span class="p">))</span>
|
|
|
|
<span class="c1"># index values into rotation table</span>
|
|
<span class="n">_WIDTH</span> <span class="o">=</span> <span class="n">const</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
|
<span class="n">_HEIGHT</span> <span class="o">=</span> <span class="n">const</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
|
|
<span class="n">_XSTART</span> <span class="o">=</span> <span class="n">const</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
|
|
<span class="n">_YSTART</span> <span class="o">=</span> <span class="n">const</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>
|
|
<span class="n">_NEEDS_SWAP</span> <span class="o">=</span> <span class="n">const</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span>
|
|
|
|
<span class="c1"># Supported displays (physical width, physical height, rotation table)</span>
|
|
<span class="n">_SUPPORTED_DISPLAYS</span> <span class="o">=</span> <span class="p">(</span>
|
|
<span class="p">(</span><span class="mi">240</span><span class="p">,</span> <span class="mi">320</span><span class="p">,</span> <span class="n">_DISPLAY_240x320</span><span class="p">),</span>
|
|
<span class="p">(</span><span class="mi">240</span><span class="p">,</span> <span class="mi">240</span><span class="p">,</span> <span class="n">_DISPLAY_240x240</span><span class="p">),</span>
|
|
<span class="p">(</span><span class="mi">135</span><span class="p">,</span> <span class="mi">240</span><span class="p">,</span> <span class="n">_DISPLAY_135x240</span><span class="p">),</span>
|
|
<span class="p">(</span><span class="mi">128</span><span class="p">,</span> <span class="mi">128</span><span class="p">,</span> <span class="n">_DISPLAY_128x128</span><span class="p">))</span>
|
|
|
|
<span class="c1"># init tuple format (b'command', b'data', delay_ms)</span>
|
|
<span class="n">_ST7789_INIT_CMDS</span> <span class="o">=</span> <span class="p">(</span>
|
|
<span class="p">(</span> <span class="sa">b</span><span class="s1">'</span><span class="se">\x11</span><span class="s1">'</span><span class="p">,</span> <span class="sa">b</span><span class="s1">'</span><span class="se">\x00</span><span class="s1">'</span><span class="p">,</span> <span class="mi">120</span><span class="p">),</span> <span class="c1"># Exit sleep mode</span>
|
|
<span class="p">(</span> <span class="sa">b</span><span class="s1">'</span><span class="se">\x13</span><span class="s1">'</span><span class="p">,</span> <span class="sa">b</span><span class="s1">'</span><span class="se">\x00</span><span class="s1">'</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="c1"># Turn on the display</span>
|
|
<span class="p">(</span> <span class="sa">b</span><span class="s1">'</span><span class="se">\xb6</span><span class="s1">'</span><span class="p">,</span> <span class="sa">b</span><span class="s1">'</span><span class="se">\x0a\x82</span><span class="s1">'</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="c1"># Set display function control</span>
|
|
<span class="p">(</span> <span class="sa">b</span><span class="s1">'</span><span class="se">\x3a</span><span class="s1">'</span><span class="p">,</span> <span class="sa">b</span><span class="s1">'</span><span class="se">\x55</span><span class="s1">'</span><span class="p">,</span> <span class="mi">10</span><span class="p">),</span> <span class="c1"># Set pixel format to 16 bits per pixel (RGB565)</span>
|
|
<span class="p">(</span> <span class="sa">b</span><span class="s1">'</span><span class="se">\xb2</span><span class="s1">'</span><span class="p">,</span> <span class="sa">b</span><span class="s1">'</span><span class="se">\x0c\x0c\x00\x33\x33</span><span class="s1">'</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="c1"># Set porch control</span>
|
|
<span class="p">(</span> <span class="sa">b</span><span class="s1">'</span><span class="se">\xb7</span><span class="s1">'</span><span class="p">,</span> <span class="sa">b</span><span class="s1">'</span><span class="se">\x35</span><span class="s1">'</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="c1"># Set gate control</span>
|
|
<span class="p">(</span> <span class="sa">b</span><span class="s1">'</span><span class="se">\xbb</span><span class="s1">'</span><span class="p">,</span> <span class="sa">b</span><span class="s1">'</span><span class="se">\x28</span><span class="s1">'</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="c1"># Set VCOMS setting</span>
|
|
<span class="p">(</span> <span class="sa">b</span><span class="s1">'</span><span class="se">\xc0</span><span class="s1">'</span><span class="p">,</span> <span class="sa">b</span><span class="s1">'</span><span class="se">\x0c</span><span class="s1">'</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="c1"># Set power control 1</span>
|
|
<span class="p">(</span> <span class="sa">b</span><span class="s1">'</span><span class="se">\xc2</span><span class="s1">'</span><span class="p">,</span> <span class="sa">b</span><span class="s1">'</span><span class="se">\x01\xff</span><span class="s1">'</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="c1"># Set power control 2</span>
|
|
<span class="p">(</span> <span class="sa">b</span><span class="s1">'</span><span class="se">\xc3</span><span class="s1">'</span><span class="p">,</span> <span class="sa">b</span><span class="s1">'</span><span class="se">\x10</span><span class="s1">'</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="c1"># Set power control 3</span>
|
|
<span class="p">(</span> <span class="sa">b</span><span class="s1">'</span><span class="se">\xc4</span><span class="s1">'</span><span class="p">,</span> <span class="sa">b</span><span class="s1">'</span><span class="se">\x20</span><span class="s1">'</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="c1"># Set power control 4</span>
|
|
<span class="p">(</span> <span class="sa">b</span><span class="s1">'</span><span class="se">\xc6</span><span class="s1">'</span><span class="p">,</span> <span class="sa">b</span><span class="s1">'</span><span class="se">\x0f</span><span class="s1">'</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="c1"># Set VCOM control 1</span>
|
|
<span class="p">(</span> <span class="sa">b</span><span class="s1">'</span><span class="se">\xd0</span><span class="s1">'</span><span class="p">,</span> <span class="sa">b</span><span class="s1">'</span><span class="se">\xa4\xa1</span><span class="s1">'</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="c1"># Set power control A</span>
|
|
<span class="c1"># Set gamma curve positive polarity</span>
|
|
<span class="p">(</span> <span class="sa">b</span><span class="s1">'</span><span class="se">\xe0</span><span class="s1">'</span><span class="p">,</span> <span class="sa">b</span><span class="s1">'</span><span class="se">\xd0\x00\x02\x07\x0a\x28\x32\x44\x42\x06\x0e\x12\x14\x17</span><span class="s1">'</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span>
|
|
<span class="c1"># Set gamma curve negative polarity</span>
|
|
<span class="p">(</span> <span class="sa">b</span><span class="s1">'</span><span class="se">\xe1</span><span class="s1">'</span><span class="p">,</span> <span class="sa">b</span><span class="s1">'</span><span class="se">\xd0\x00\x02\x07\x0a\x28\x31\x54\x47\x0e\x1c\x17\x1b\x1e</span><span class="s1">'</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span>
|
|
<span class="p">(</span> <span class="sa">b</span><span class="s1">'</span><span class="se">\x21</span><span class="s1">'</span><span class="p">,</span> <span class="sa">b</span><span class="s1">'</span><span class="se">\x00</span><span class="s1">'</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="c1"># Enable display inversion</span>
|
|
<span class="p">(</span> <span class="sa">b</span><span class="s1">'</span><span class="se">\x29</span><span class="s1">'</span><span class="p">,</span> <span class="sa">b</span><span class="s1">'</span><span class="se">\x00</span><span class="s1">'</span><span class="p">,</span> <span class="mi">120</span><span class="p">)</span> <span class="c1"># Turn on the display</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="c1"># fmt: on</span>
|
|
|
|
|
|
<div class="viewcode-block" id="color565">
|
|
<a class="viewcode-back" href="../st7789py.html#st7789py.color565">[docs]</a>
|
|
<span class="k">def</span> <span class="nf">color565</span><span class="p">(</span><span class="n">red</span><span class="p">,</span> <span class="n">green</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">blue</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Convert red, green and blue values (0-255) into a 16-bit 565 encoding.</span>
|
|
<span class="sd"> """</span>
|
|
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">red</span><span class="p">,</span> <span class="p">(</span><span class="nb">tuple</span><span class="p">,</span> <span class="nb">list</span><span class="p">)):</span>
|
|
<span class="n">red</span><span class="p">,</span> <span class="n">green</span><span class="p">,</span> <span class="n">blue</span> <span class="o">=</span> <span class="n">red</span><span class="p">[:</span><span class="mi">3</span><span class="p">]</span>
|
|
<span class="k">return</span> <span class="p">(</span><span class="n">red</span> <span class="o">&</span> <span class="mh">0xF8</span><span class="p">)</span> <span class="o"><<</span> <span class="mi">8</span> <span class="o">|</span> <span class="p">(</span><span class="n">green</span> <span class="o">&</span> <span class="mh">0xFC</span><span class="p">)</span> <span class="o"><<</span> <span class="mi">3</span> <span class="o">|</span> <span class="n">blue</span> <span class="o">>></span> <span class="mi">3</span></div>
|
|
|
|
|
|
|
|
<div class="viewcode-block" id="ST7789">
|
|
<a class="viewcode-back" href="../st7789py.html#st7789py.ST7789">[docs]</a>
|
|
<span class="k">class</span> <span class="nc">ST7789</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> ST7789 driver class</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> spi (spi): spi object **Required**</span>
|
|
<span class="sd"> width (int): display width **Required**</span>
|
|
<span class="sd"> height (int): display height **Required**</span>
|
|
<span class="sd"> reset (pin): reset pin</span>
|
|
<span class="sd"> dc (pin): dc pin **Required**</span>
|
|
<span class="sd"> cs (pin): cs pin</span>
|
|
<span class="sd"> backlight(pin): backlight pin</span>
|
|
<span class="sd"> rotation (int):</span>
|
|
|
|
<span class="sd"> - 0-Portrait</span>
|
|
<span class="sd"> - 1-Landscape</span>
|
|
<span class="sd"> - 2-Inverted Portrait</span>
|
|
<span class="sd"> - 3-Inverted Landscape</span>
|
|
|
|
<span class="sd"> color_order (int):</span>
|
|
|
|
<span class="sd"> - RGB: Red, Green Blue, default</span>
|
|
<span class="sd"> - BGR: Blue, Green, Red</span>
|
|
|
|
<span class="sd"> custom_init (tuple): custom initialization commands</span>
|
|
|
|
<span class="sd"> - ((b'command', b'data', delay_ms), ...)</span>
|
|
|
|
<span class="sd"> custom_rotations (tuple): custom rotation definitions</span>
|
|
|
|
<span class="sd"> - ((width, height, xstart, ystart, madctl, needs_swap), ...)</span>
|
|
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="p">,</span>
|
|
<span class="n">spi</span><span class="p">,</span>
|
|
<span class="n">width</span><span class="p">,</span>
|
|
<span class="n">height</span><span class="p">,</span>
|
|
<span class="n">reset</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">dc</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">cs</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">backlight</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">rotation</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
|
|
<span class="n">color_order</span><span class="o">=</span><span class="n">BGR</span><span class="p">,</span>
|
|
<span class="n">custom_init</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">custom_rotations</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Initialize display.</span>
|
|
<span class="sd"> """</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">rotations</span> <span class="o">=</span> <span class="n">custom_rotations</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_find_rotations</span><span class="p">(</span><span class="n">width</span><span class="p">,</span> <span class="n">height</span><span class="p">)</span>
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">rotations</span><span class="p">:</span>
|
|
<span class="n">supported_displays</span> <span class="o">=</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
|
|
<span class="p">[</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">display</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="si">}</span><span class="s2">x</span><span class="si">{</span><span class="n">display</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="si">}</span><span class="s2">"</span> <span class="k">for</span> <span class="n">display</span> <span class="ow">in</span> <span class="n">_SUPPORTED_DISPLAYS</span><span class="p">]</span>
|
|
<span class="p">)</span>
|
|
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
|
|
<span class="sa">f</span><span class="s2">"Unsupported </span><span class="si">{</span><span class="n">width</span><span class="si">}</span><span class="s2">x</span><span class="si">{</span><span class="n">height</span><span class="si">}</span><span class="s2"> display. Supported displays: </span><span class="si">{</span><span class="n">supported_displays</span><span class="si">}</span><span class="s2">"</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="k">if</span> <span class="n">dc</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"dc pin is required."</span><span class="p">)</span>
|
|
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">physical_width</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">width</span> <span class="o">=</span> <span class="n">width</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">physical_height</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">height</span> <span class="o">=</span> <span class="n">height</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">xstart</span> <span class="o">=</span> <span class="mi">0</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">ystart</span> <span class="o">=</span> <span class="mi">0</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">spi</span> <span class="o">=</span> <span class="n">spi</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">reset</span> <span class="o">=</span> <span class="n">reset</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">dc</span> <span class="o">=</span> <span class="n">dc</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">cs</span> <span class="o">=</span> <span class="n">cs</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">backlight</span> <span class="o">=</span> <span class="n">backlight</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_rotation</span> <span class="o">=</span> <span class="n">rotation</span> <span class="o">%</span> <span class="mi">4</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">color_order</span> <span class="o">=</span> <span class="n">color_order</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">init_cmds</span> <span class="o">=</span> <span class="n">custom_init</span> <span class="ow">or</span> <span class="n">_ST7789_INIT_CMDS</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">hard_reset</span><span class="p">()</span>
|
|
<span class="c1"># yes, twice, once is not always enough</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">init</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">init_cmds</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">init</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">init_cmds</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">rotation</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_rotation</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">needs_swap</span> <span class="o">=</span> <span class="kc">False</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="mh">0x0</span><span class="p">)</span>
|
|
|
|
<span class="k">if</span> <span class="n">backlight</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">backlight</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
|
|
|
|
<span class="nd">@staticmethod</span>
|
|
<span class="k">def</span> <span class="nf">_find_rotations</span><span class="p">(</span><span class="n">width</span><span class="p">,</span> <span class="n">height</span><span class="p">):</span>
|
|
<span class="k">for</span> <span class="n">display</span> <span class="ow">in</span> <span class="n">_SUPPORTED_DISPLAYS</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="n">display</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="n">width</span> <span class="ow">and</span> <span class="n">display</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="n">height</span><span class="p">:</span>
|
|
<span class="k">return</span> <span class="n">display</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span>
|
|
<span class="k">return</span> <span class="kc">None</span>
|
|
|
|
<div class="viewcode-block" id="ST7789.init">
|
|
<a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.init">[docs]</a>
|
|
<span class="k">def</span> <span class="nf">init</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">commands</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Initialize display.</span>
|
|
<span class="sd"> """</span>
|
|
<span class="k">for</span> <span class="n">command</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">delay</span> <span class="ow">in</span> <span class="n">commands</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_write</span><span class="p">(</span><span class="n">command</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span>
|
|
<span class="n">sleep_ms</span><span class="p">(</span><span class="n">delay</span><span class="p">)</span></div>
|
|
|
|
|
|
<span class="k">def</span> <span class="nf">_write</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""SPI write to the device: commands and data."""</span>
|
|
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">cs</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">cs</span><span class="o">.</span><span class="n">off</span><span class="p">()</span>
|
|
<span class="k">if</span> <span class="n">command</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">dc</span><span class="o">.</span><span class="n">off</span><span class="p">()</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">spi</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">command</span><span class="p">)</span>
|
|
<span class="k">if</span> <span class="n">data</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">dc</span><span class="o">.</span><span class="n">on</span><span class="p">()</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">spi</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
|
|
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">cs</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">cs</span><span class="o">.</span><span class="n">on</span><span class="p">()</span>
|
|
|
|
<div class="viewcode-block" id="ST7789.hard_reset">
|
|
<a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.hard_reset">[docs]</a>
|
|
<span class="k">def</span> <span class="nf">hard_reset</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Hard reset display.</span>
|
|
<span class="sd"> """</span>
|
|
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">cs</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">cs</span><span class="o">.</span><span class="n">off</span><span class="p">()</span>
|
|
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="o">.</span><span class="n">on</span><span class="p">()</span>
|
|
<span class="n">sleep_ms</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span>
|
|
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="o">.</span><span class="n">off</span><span class="p">()</span>
|
|
<span class="n">sleep_ms</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span>
|
|
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="o">.</span><span class="n">on</span><span class="p">()</span>
|
|
<span class="n">sleep_ms</span><span class="p">(</span><span class="mi">120</span><span class="p">)</span>
|
|
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">cs</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">cs</span><span class="o">.</span><span class="n">on</span><span class="p">()</span></div>
|
|
|
|
|
|
<div class="viewcode-block" id="ST7789.soft_reset">
|
|
<a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.soft_reset">[docs]</a>
|
|
<span class="k">def</span> <span class="nf">soft_reset</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Soft reset display.</span>
|
|
<span class="sd"> """</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_write</span><span class="p">(</span><span class="n">_ST7789_SWRESET</span><span class="p">)</span>
|
|
<span class="n">sleep_ms</span><span class="p">(</span><span class="mi">150</span><span class="p">)</span></div>
|
|
|
|
|
|
<div class="viewcode-block" id="ST7789.sleep_mode">
|
|
<a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.sleep_mode">[docs]</a>
|
|
<span class="k">def</span> <span class="nf">sleep_mode</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Enable or disable display sleep mode.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> value (bool): if True enable sleep mode. if False disable sleep</span>
|
|
<span class="sd"> mode</span>
|
|
<span class="sd"> """</span>
|
|
<span class="k">if</span> <span class="n">value</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_write</span><span class="p">(</span><span class="n">_ST7789_SLPIN</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_write</span><span class="p">(</span><span class="n">_ST7789_SLPOUT</span><span class="p">)</span></div>
|
|
|
|
|
|
<div class="viewcode-block" id="ST7789.inversion_mode">
|
|
<a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.inversion_mode">[docs]</a>
|
|
<span class="k">def</span> <span class="nf">inversion_mode</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Enable or disable display inversion mode.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> value (bool): if True enable inversion mode. if False disable</span>
|
|
<span class="sd"> inversion mode</span>
|
|
<span class="sd"> """</span>
|
|
<span class="k">if</span> <span class="n">value</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_write</span><span class="p">(</span><span class="n">_ST7789_INVON</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_write</span><span class="p">(</span><span class="n">_ST7789_INVOFF</span><span class="p">)</span></div>
|
|
|
|
|
|
<div class="viewcode-block" id="ST7789.rotation">
|
|
<a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.rotation">[docs]</a>
|
|
<span class="k">def</span> <span class="nf">rotation</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">rotation</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Set display rotation.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> rotation (int):</span>
|
|
<span class="sd"> - 0-Portrait</span>
|
|
<span class="sd"> - 1-Landscape</span>
|
|
<span class="sd"> - 2-Inverted Portrait</span>
|
|
<span class="sd"> - 3-Inverted Landscape</span>
|
|
|
|
<span class="sd"> custom_rotations can have any number of rotations</span>
|
|
<span class="sd"> """</span>
|
|
<span class="n">rotation</span> <span class="o">%=</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rotations</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_rotation</span> <span class="o">=</span> <span class="n">rotation</span>
|
|
<span class="p">(</span>
|
|
<span class="n">madctl</span><span class="p">,</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">width</span><span class="p">,</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">height</span><span class="p">,</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">xstart</span><span class="p">,</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">ystart</span><span class="p">,</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">needs_swap</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">rotations</span><span class="p">[</span><span class="n">rotation</span><span class="p">]</span>
|
|
|
|
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">color_order</span> <span class="o">==</span> <span class="n">BGR</span><span class="p">:</span>
|
|
<span class="n">madctl</span> <span class="o">|=</span> <span class="n">_ST7789_MADCTL_BGR</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">madctl</span> <span class="o">&=</span> <span class="o">~</span><span class="n">_ST7789_MADCTL_BGR</span>
|
|
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_write</span><span class="p">(</span><span class="n">_ST7789_MADCTL</span><span class="p">,</span> <span class="nb">bytes</span><span class="p">([</span><span class="n">madctl</span><span class="p">]))</span></div>
|
|
|
|
|
|
<span class="k">def</span> <span class="nf">_set_window</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x0</span><span class="p">,</span> <span class="n">y0</span><span class="p">,</span> <span class="n">x1</span><span class="p">,</span> <span class="n">y1</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Set window to column and row address.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> x0 (int): column start address</span>
|
|
<span class="sd"> y0 (int): row start address</span>
|
|
<span class="sd"> x1 (int): column end address</span>
|
|
<span class="sd"> y1 (int): row end address</span>
|
|
<span class="sd"> """</span>
|
|
<span class="k">if</span> <span class="n">x0</span> <span class="o"><=</span> <span class="n">x1</span> <span class="o"><=</span> <span class="bp">self</span><span class="o">.</span><span class="n">width</span> <span class="ow">and</span> <span class="n">y0</span> <span class="o"><=</span> <span class="n">y1</span> <span class="o"><=</span> <span class="bp">self</span><span class="o">.</span><span class="n">height</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_write</span><span class="p">(</span>
|
|
<span class="n">_ST7789_CASET</span><span class="p">,</span>
|
|
<span class="n">struct</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">_ENCODE_POS</span><span class="p">,</span> <span class="n">x0</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">xstart</span><span class="p">,</span> <span class="n">x1</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">xstart</span><span class="p">),</span>
|
|
<span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_write</span><span class="p">(</span>
|
|
<span class="n">_ST7789_RASET</span><span class="p">,</span>
|
|
<span class="n">struct</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">_ENCODE_POS</span><span class="p">,</span> <span class="n">y0</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">ystart</span><span class="p">,</span> <span class="n">y1</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">ystart</span><span class="p">),</span>
|
|
<span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_write</span><span class="p">(</span><span class="n">_ST7789_RAMWR</span><span class="p">)</span>
|
|
|
|
<div class="viewcode-block" id="ST7789.vline">
|
|
<a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.vline">[docs]</a>
|
|
<span class="k">def</span> <span class="nf">vline</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">length</span><span class="p">,</span> <span class="n">color</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Draw vertical line at the given location and color.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> x (int): x coordinate</span>
|
|
<span class="sd"> Y (int): y coordinate</span>
|
|
<span class="sd"> length (int): length of line</span>
|
|
<span class="sd"> color (int): 565 encoded color</span>
|
|
<span class="sd"> """</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">fill_rect</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">length</span><span class="p">,</span> <span class="n">color</span><span class="p">)</span></div>
|
|
|
|
|
|
<div class="viewcode-block" id="ST7789.hline">
|
|
<a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.hline">[docs]</a>
|
|
<span class="k">def</span> <span class="nf">hline</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">length</span><span class="p">,</span> <span class="n">color</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Draw horizontal line at the given location and color.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> x (int): x coordinate</span>
|
|
<span class="sd"> Y (int): y coordinate</span>
|
|
<span class="sd"> length (int): length of line</span>
|
|
<span class="sd"> color (int): 565 encoded color</span>
|
|
<span class="sd"> """</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">fill_rect</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">length</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">color</span><span class="p">)</span></div>
|
|
|
|
|
|
<div class="viewcode-block" id="ST7789.pixel">
|
|
<a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.pixel">[docs]</a>
|
|
<span class="k">def</span> <span class="nf">pixel</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">color</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Draw a pixel at the given location and color.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> x (int): x coordinate</span>
|
|
<span class="sd"> Y (int): y coordinate</span>
|
|
<span class="sd"> color (int): 565 encoded color</span>
|
|
<span class="sd"> """</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_set_window</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_write</span><span class="p">(</span>
|
|
<span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">struct</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span>
|
|
<span class="n">_ENCODE_PIXEL_SWAPPED</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">needs_swap</span> <span class="k">else</span> <span class="n">_ENCODE_PIXEL</span><span class="p">,</span> <span class="n">color</span>
|
|
<span class="p">),</span>
|
|
<span class="p">)</span></div>
|
|
|
|
|
|
<div class="viewcode-block" id="ST7789.blit_buffer">
|
|
<a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.blit_buffer">[docs]</a>
|
|
<span class="k">def</span> <span class="nf">blit_buffer</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">buffer</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">width</span><span class="p">,</span> <span class="n">height</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Copy buffer to display at the given location.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> buffer (bytes): Data to copy to display</span>
|
|
<span class="sd"> x (int): Top left corner x coordinate</span>
|
|
<span class="sd"> Y (int): Top left corner y coordinate</span>
|
|
<span class="sd"> width (int): Width</span>
|
|
<span class="sd"> height (int): Height</span>
|
|
<span class="sd"> """</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_set_window</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">x</span> <span class="o">+</span> <span class="n">width</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">y</span> <span class="o">+</span> <span class="n">height</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_write</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="n">buffer</span><span class="p">)</span></div>
|
|
|
|
|
|
<div class="viewcode-block" id="ST7789.rect">
|
|
<a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.rect">[docs]</a>
|
|
<span class="k">def</span> <span class="nf">rect</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">w</span><span class="p">,</span> <span class="n">h</span><span class="p">,</span> <span class="n">color</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Draw a rectangle at the given location, size and color.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> x (int): Top left corner x coordinate</span>
|
|
<span class="sd"> y (int): Top left corner y coordinate</span>
|
|
<span class="sd"> width (int): Width in pixels</span>
|
|
<span class="sd"> height (int): Height in pixels</span>
|
|
<span class="sd"> color (int): 565 encoded color</span>
|
|
<span class="sd"> """</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">hline</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">w</span><span class="p">,</span> <span class="n">color</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">vline</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">h</span><span class="p">,</span> <span class="n">color</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">vline</span><span class="p">(</span><span class="n">x</span> <span class="o">+</span> <span class="n">w</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">h</span><span class="p">,</span> <span class="n">color</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">hline</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="o">+</span> <span class="n">h</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">w</span><span class="p">,</span> <span class="n">color</span><span class="p">)</span></div>
|
|
|
|
|
|
<div class="viewcode-block" id="ST7789.fill_rect">
|
|
<a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.fill_rect">[docs]</a>
|
|
<span class="k">def</span> <span class="nf">fill_rect</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">width</span><span class="p">,</span> <span class="n">height</span><span class="p">,</span> <span class="n">color</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Draw a rectangle at the given location, size and filled with color.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> x (int): Top left corner x coordinate</span>
|
|
<span class="sd"> y (int): Top left corner y coordinate</span>
|
|
<span class="sd"> width (int): Width in pixels</span>
|
|
<span class="sd"> height (int): Height in pixels</span>
|
|
<span class="sd"> color (int): 565 encoded color</span>
|
|
<span class="sd"> """</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_set_window</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">x</span> <span class="o">+</span> <span class="n">width</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">y</span> <span class="o">+</span> <span class="n">height</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>
|
|
<span class="n">chunks</span><span class="p">,</span> <span class="n">rest</span> <span class="o">=</span> <span class="nb">divmod</span><span class="p">(</span><span class="n">width</span> <span class="o">*</span> <span class="n">height</span><span class="p">,</span> <span class="n">_BUFFER_SIZE</span><span class="p">)</span>
|
|
<span class="n">pixel</span> <span class="o">=</span> <span class="n">struct</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span>
|
|
<span class="n">_ENCODE_PIXEL_SWAPPED</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">needs_swap</span> <span class="k">else</span> <span class="n">_ENCODE_PIXEL</span><span class="p">,</span> <span class="n">color</span>
|
|
<span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">dc</span><span class="o">.</span><span class="n">on</span><span class="p">()</span>
|
|
<span class="k">if</span> <span class="n">chunks</span><span class="p">:</span>
|
|
<span class="n">data</span> <span class="o">=</span> <span class="n">pixel</span> <span class="o">*</span> <span class="n">_BUFFER_SIZE</span>
|
|
<span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">chunks</span><span class="p">):</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_write</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span>
|
|
<span class="k">if</span> <span class="n">rest</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_write</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="n">pixel</span> <span class="o">*</span> <span class="n">rest</span><span class="p">)</span></div>
|
|
|
|
|
|
<div class="viewcode-block" id="ST7789.fill">
|
|
<a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.fill">[docs]</a>
|
|
<span class="k">def</span> <span class="nf">fill</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">color</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Fill the entire FrameBuffer with the specified color.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> color (int): 565 encoded color</span>
|
|
<span class="sd"> """</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">fill_rect</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">width</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">height</span><span class="p">,</span> <span class="n">color</span><span class="p">)</span></div>
|
|
|
|
|
|
<div class="viewcode-block" id="ST7789.line">
|
|
<a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.line">[docs]</a>
|
|
<span class="k">def</span> <span class="nf">line</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x0</span><span class="p">,</span> <span class="n">y0</span><span class="p">,</span> <span class="n">x1</span><span class="p">,</span> <span class="n">y1</span><span class="p">,</span> <span class="n">color</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Draw a single pixel wide line starting at x0, y0 and ending at x1, y1.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> x0 (int): Start point x coordinate</span>
|
|
<span class="sd"> y0 (int): Start point y coordinate</span>
|
|
<span class="sd"> x1 (int): End point x coordinate</span>
|
|
<span class="sd"> y1 (int): End point y coordinate</span>
|
|
<span class="sd"> color (int): 565 encoded color</span>
|
|
<span class="sd"> """</span>
|
|
<span class="n">steep</span> <span class="o">=</span> <span class="nb">abs</span><span class="p">(</span><span class="n">y1</span> <span class="o">-</span> <span class="n">y0</span><span class="p">)</span> <span class="o">></span> <span class="nb">abs</span><span class="p">(</span><span class="n">x1</span> <span class="o">-</span> <span class="n">x0</span><span class="p">)</span>
|
|
<span class="k">if</span> <span class="n">steep</span><span class="p">:</span>
|
|
<span class="n">x0</span><span class="p">,</span> <span class="n">y0</span> <span class="o">=</span> <span class="n">y0</span><span class="p">,</span> <span class="n">x0</span>
|
|
<span class="n">x1</span><span class="p">,</span> <span class="n">y1</span> <span class="o">=</span> <span class="n">y1</span><span class="p">,</span> <span class="n">x1</span>
|
|
<span class="k">if</span> <span class="n">x0</span> <span class="o">></span> <span class="n">x1</span><span class="p">:</span>
|
|
<span class="n">x0</span><span class="p">,</span> <span class="n">x1</span> <span class="o">=</span> <span class="n">x1</span><span class="p">,</span> <span class="n">x0</span>
|
|
<span class="n">y0</span><span class="p">,</span> <span class="n">y1</span> <span class="o">=</span> <span class="n">y1</span><span class="p">,</span> <span class="n">y0</span>
|
|
<span class="n">dx</span> <span class="o">=</span> <span class="n">x1</span> <span class="o">-</span> <span class="n">x0</span>
|
|
<span class="n">dy</span> <span class="o">=</span> <span class="nb">abs</span><span class="p">(</span><span class="n">y1</span> <span class="o">-</span> <span class="n">y0</span><span class="p">)</span>
|
|
<span class="n">err</span> <span class="o">=</span> <span class="n">dx</span> <span class="o">//</span> <span class="mi">2</span>
|
|
<span class="n">ystep</span> <span class="o">=</span> <span class="mi">1</span> <span class="k">if</span> <span class="n">y0</span> <span class="o"><</span> <span class="n">y1</span> <span class="k">else</span> <span class="o">-</span><span class="mi">1</span>
|
|
<span class="k">while</span> <span class="n">x0</span> <span class="o"><=</span> <span class="n">x1</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="n">steep</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">pixel</span><span class="p">(</span><span class="n">y0</span><span class="p">,</span> <span class="n">x0</span><span class="p">,</span> <span class="n">color</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">pixel</span><span class="p">(</span><span class="n">x0</span><span class="p">,</span> <span class="n">y0</span><span class="p">,</span> <span class="n">color</span><span class="p">)</span>
|
|
<span class="n">err</span> <span class="o">-=</span> <span class="n">dy</span>
|
|
<span class="k">if</span> <span class="n">err</span> <span class="o"><</span> <span class="mi">0</span><span class="p">:</span>
|
|
<span class="n">y0</span> <span class="o">+=</span> <span class="n">ystep</span>
|
|
<span class="n">err</span> <span class="o">+=</span> <span class="n">dx</span>
|
|
<span class="n">x0</span> <span class="o">+=</span> <span class="mi">1</span></div>
|
|
|
|
|
|
<div class="viewcode-block" id="ST7789.vscrdef">
|
|
<a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.vscrdef">[docs]</a>
|
|
<span class="k">def</span> <span class="nf">vscrdef</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">tfa</span><span class="p">,</span> <span class="n">vsa</span><span class="p">,</span> <span class="n">bfa</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Set Vertical Scrolling Definition.</span>
|
|
|
|
<span class="sd"> To scroll a 135x240 display these values should be 40, 240, 40.</span>
|
|
<span class="sd"> There are 40 lines above the display that are not shown followed by</span>
|
|
<span class="sd"> 240 lines that are shown followed by 40 more lines that are not shown.</span>
|
|
<span class="sd"> You could write to these areas off display and scroll them into view by</span>
|
|
<span class="sd"> changing the TFA, VSA and BFA values.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> tfa (int): Top Fixed Area</span>
|
|
<span class="sd"> vsa (int): Vertical Scrolling Area</span>
|
|
<span class="sd"> bfa (int): Bottom Fixed Area</span>
|
|
<span class="sd"> """</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_write</span><span class="p">(</span><span class="n">_ST7789_VSCRDEF</span><span class="p">,</span> <span class="n">struct</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="s2">">HHH"</span><span class="p">,</span> <span class="n">tfa</span><span class="p">,</span> <span class="n">vsa</span><span class="p">,</span> <span class="n">bfa</span><span class="p">))</span></div>
|
|
|
|
|
|
<div class="viewcode-block" id="ST7789.vscsad">
|
|
<a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.vscsad">[docs]</a>
|
|
<span class="k">def</span> <span class="nf">vscsad</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">vssa</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Set Vertical Scroll Start Address of RAM.</span>
|
|
|
|
<span class="sd"> Defines which line in the Frame Memory will be written as the first</span>
|
|
<span class="sd"> line after the last line of the Top Fixed Area on the display</span>
|
|
|
|
<span class="sd"> Example:</span>
|
|
|
|
<span class="sd"> for line in range(40, 280, 1):</span>
|
|
<span class="sd"> tft.vscsad(line)</span>
|
|
<span class="sd"> utime.sleep(0.01)</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> vssa (int): Vertical Scrolling Start Address</span>
|
|
|
|
<span class="sd"> """</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_write</span><span class="p">(</span><span class="n">_ST7789_VSCSAD</span><span class="p">,</span> <span class="n">struct</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="s2">">H"</span><span class="p">,</span> <span class="n">vssa</span><span class="p">))</span></div>
|
|
|
|
|
|
<span class="nd">@micropython</span><span class="o">.</span><span class="n">viper</span>
|
|
<span class="nd">@staticmethod</span>
|
|
<span class="k">def</span> <span class="nf">_pack8</span><span class="p">(</span><span class="n">glyphs</span><span class="p">,</span> <span class="n">idx</span><span class="p">:</span> <span class="n">uint</span><span class="p">,</span> <span class="n">fg_color</span><span class="p">:</span> <span class="n">uint</span><span class="p">,</span> <span class="n">bg_color</span><span class="p">:</span> <span class="n">uint</span><span class="p">):</span>
|
|
<span class="n">buffer</span> <span class="o">=</span> <span class="nb">bytearray</span><span class="p">(</span><span class="mi">128</span><span class="p">)</span>
|
|
<span class="n">bitmap</span> <span class="o">=</span> <span class="n">ptr16</span><span class="p">(</span><span class="n">buffer</span><span class="p">)</span>
|
|
<span class="n">glyph</span> <span class="o">=</span> <span class="n">ptr8</span><span class="p">(</span><span class="n">glyphs</span><span class="p">)</span>
|
|
|
|
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">64</span><span class="p">,</span> <span class="mi">8</span><span class="p">):</span>
|
|
<span class="n">byte</span> <span class="o">=</span> <span class="n">glyph</span><span class="p">[</span><span class="n">idx</span><span class="p">]</span>
|
|
<span class="n">bitmap</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">fg_color</span> <span class="k">if</span> <span class="n">byte</span> <span class="o">&</span> <span class="n">_BIT7</span> <span class="k">else</span> <span class="n">bg_color</span>
|
|
<span class="n">bitmap</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">fg_color</span> <span class="k">if</span> <span class="n">byte</span> <span class="o">&</span> <span class="n">_BIT6</span> <span class="k">else</span> <span class="n">bg_color</span>
|
|
<span class="n">bitmap</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">fg_color</span> <span class="k">if</span> <span class="n">byte</span> <span class="o">&</span> <span class="n">_BIT5</span> <span class="k">else</span> <span class="n">bg_color</span>
|
|
<span class="n">bitmap</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">3</span><span class="p">]</span> <span class="o">=</span> <span class="n">fg_color</span> <span class="k">if</span> <span class="n">byte</span> <span class="o">&</span> <span class="n">_BIT4</span> <span class="k">else</span> <span class="n">bg_color</span>
|
|
<span class="n">bitmap</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">4</span><span class="p">]</span> <span class="o">=</span> <span class="n">fg_color</span> <span class="k">if</span> <span class="n">byte</span> <span class="o">&</span> <span class="n">_BIT3</span> <span class="k">else</span> <span class="n">bg_color</span>
|
|
<span class="n">bitmap</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">5</span><span class="p">]</span> <span class="o">=</span> <span class="n">fg_color</span> <span class="k">if</span> <span class="n">byte</span> <span class="o">&</span> <span class="n">_BIT2</span> <span class="k">else</span> <span class="n">bg_color</span>
|
|
<span class="n">bitmap</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">6</span><span class="p">]</span> <span class="o">=</span> <span class="n">fg_color</span> <span class="k">if</span> <span class="n">byte</span> <span class="o">&</span> <span class="n">_BIT1</span> <span class="k">else</span> <span class="n">bg_color</span>
|
|
<span class="n">bitmap</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">7</span><span class="p">]</span> <span class="o">=</span> <span class="n">fg_color</span> <span class="k">if</span> <span class="n">byte</span> <span class="o">&</span> <span class="n">_BIT0</span> <span class="k">else</span> <span class="n">bg_color</span>
|
|
<span class="n">idx</span> <span class="o">+=</span> <span class="mi">1</span>
|
|
|
|
<span class="k">return</span> <span class="n">buffer</span>
|
|
|
|
<span class="nd">@micropython</span><span class="o">.</span><span class="n">viper</span>
|
|
<span class="nd">@staticmethod</span>
|
|
<span class="k">def</span> <span class="nf">_pack16</span><span class="p">(</span><span class="n">glyphs</span><span class="p">,</span> <span class="n">idx</span><span class="p">:</span> <span class="n">uint</span><span class="p">,</span> <span class="n">fg_color</span><span class="p">:</span> <span class="n">uint</span><span class="p">,</span> <span class="n">bg_color</span><span class="p">:</span> <span class="n">uint</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Pack a character into a byte array.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> char (str): character to pack</span>
|
|
|
|
<span class="sd"> Returns:</span>
|
|
<span class="sd"> 128 bytes: character bitmap in color565 format</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="n">buffer</span> <span class="o">=</span> <span class="nb">bytearray</span><span class="p">(</span><span class="mi">256</span><span class="p">)</span>
|
|
<span class="n">bitmap</span> <span class="o">=</span> <span class="n">ptr16</span><span class="p">(</span><span class="n">buffer</span><span class="p">)</span>
|
|
<span class="n">glyph</span> <span class="o">=</span> <span class="n">ptr8</span><span class="p">(</span><span class="n">glyphs</span><span class="p">)</span>
|
|
|
|
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">128</span><span class="p">,</span> <span class="mi">16</span><span class="p">):</span>
|
|
<span class="n">byte</span> <span class="o">=</span> <span class="n">glyph</span><span class="p">[</span><span class="n">idx</span><span class="p">]</span>
|
|
|
|
<span class="n">bitmap</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">fg_color</span> <span class="k">if</span> <span class="n">byte</span> <span class="o">&</span> <span class="n">_BIT7</span> <span class="k">else</span> <span class="n">bg_color</span>
|
|
<span class="n">bitmap</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">fg_color</span> <span class="k">if</span> <span class="n">byte</span> <span class="o">&</span> <span class="n">_BIT6</span> <span class="k">else</span> <span class="n">bg_color</span>
|
|
<span class="n">bitmap</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">fg_color</span> <span class="k">if</span> <span class="n">byte</span> <span class="o">&</span> <span class="n">_BIT5</span> <span class="k">else</span> <span class="n">bg_color</span>
|
|
<span class="n">bitmap</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">3</span><span class="p">]</span> <span class="o">=</span> <span class="n">fg_color</span> <span class="k">if</span> <span class="n">byte</span> <span class="o">&</span> <span class="n">_BIT4</span> <span class="k">else</span> <span class="n">bg_color</span>
|
|
<span class="n">bitmap</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">4</span><span class="p">]</span> <span class="o">=</span> <span class="n">fg_color</span> <span class="k">if</span> <span class="n">byte</span> <span class="o">&</span> <span class="n">_BIT3</span> <span class="k">else</span> <span class="n">bg_color</span>
|
|
<span class="n">bitmap</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">5</span><span class="p">]</span> <span class="o">=</span> <span class="n">fg_color</span> <span class="k">if</span> <span class="n">byte</span> <span class="o">&</span> <span class="n">_BIT2</span> <span class="k">else</span> <span class="n">bg_color</span>
|
|
<span class="n">bitmap</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">6</span><span class="p">]</span> <span class="o">=</span> <span class="n">fg_color</span> <span class="k">if</span> <span class="n">byte</span> <span class="o">&</span> <span class="n">_BIT1</span> <span class="k">else</span> <span class="n">bg_color</span>
|
|
<span class="n">bitmap</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">7</span><span class="p">]</span> <span class="o">=</span> <span class="n">fg_color</span> <span class="k">if</span> <span class="n">byte</span> <span class="o">&</span> <span class="n">_BIT0</span> <span class="k">else</span> <span class="n">bg_color</span>
|
|
<span class="n">idx</span> <span class="o">+=</span> <span class="mi">1</span>
|
|
|
|
<span class="n">byte</span> <span class="o">=</span> <span class="n">glyph</span><span class="p">[</span><span class="n">idx</span><span class="p">]</span>
|
|
<span class="n">bitmap</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">8</span><span class="p">]</span> <span class="o">=</span> <span class="n">fg_color</span> <span class="k">if</span> <span class="n">byte</span> <span class="o">&</span> <span class="n">_BIT7</span> <span class="k">else</span> <span class="n">bg_color</span>
|
|
<span class="n">bitmap</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">9</span><span class="p">]</span> <span class="o">=</span> <span class="n">fg_color</span> <span class="k">if</span> <span class="n">byte</span> <span class="o">&</span> <span class="n">_BIT6</span> <span class="k">else</span> <span class="n">bg_color</span>
|
|
<span class="n">bitmap</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">10</span><span class="p">]</span> <span class="o">=</span> <span class="n">fg_color</span> <span class="k">if</span> <span class="n">byte</span> <span class="o">&</span> <span class="n">_BIT5</span> <span class="k">else</span> <span class="n">bg_color</span>
|
|
<span class="n">bitmap</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">11</span><span class="p">]</span> <span class="o">=</span> <span class="n">fg_color</span> <span class="k">if</span> <span class="n">byte</span> <span class="o">&</span> <span class="n">_BIT4</span> <span class="k">else</span> <span class="n">bg_color</span>
|
|
<span class="n">bitmap</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">12</span><span class="p">]</span> <span class="o">=</span> <span class="n">fg_color</span> <span class="k">if</span> <span class="n">byte</span> <span class="o">&</span> <span class="n">_BIT3</span> <span class="k">else</span> <span class="n">bg_color</span>
|
|
<span class="n">bitmap</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">13</span><span class="p">]</span> <span class="o">=</span> <span class="n">fg_color</span> <span class="k">if</span> <span class="n">byte</span> <span class="o">&</span> <span class="n">_BIT2</span> <span class="k">else</span> <span class="n">bg_color</span>
|
|
<span class="n">bitmap</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">14</span><span class="p">]</span> <span class="o">=</span> <span class="n">fg_color</span> <span class="k">if</span> <span class="n">byte</span> <span class="o">&</span> <span class="n">_BIT1</span> <span class="k">else</span> <span class="n">bg_color</span>
|
|
<span class="n">bitmap</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">15</span><span class="p">]</span> <span class="o">=</span> <span class="n">fg_color</span> <span class="k">if</span> <span class="n">byte</span> <span class="o">&</span> <span class="n">_BIT0</span> <span class="k">else</span> <span class="n">bg_color</span>
|
|
<span class="n">idx</span> <span class="o">+=</span> <span class="mi">1</span>
|
|
|
|
<span class="k">return</span> <span class="n">buffer</span>
|
|
|
|
<span class="k">def</span> <span class="nf">_text8</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">font</span><span class="p">,</span> <span class="n">text</span><span class="p">,</span> <span class="n">x0</span><span class="p">,</span> <span class="n">y0</span><span class="p">,</span> <span class="n">fg_color</span><span class="o">=</span><span class="n">WHITE</span><span class="p">,</span> <span class="n">bg_color</span><span class="o">=</span><span class="n">BLACK</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Internal method to write characters with width of 8 and</span>
|
|
<span class="sd"> heights of 8 or 16.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> font (module): font module to use</span>
|
|
<span class="sd"> text (str): text to write</span>
|
|
<span class="sd"> x0 (int): column to start drawing at</span>
|
|
<span class="sd"> y0 (int): row to start drawing at</span>
|
|
<span class="sd"> color (int): 565 encoded color to use for characters</span>
|
|
<span class="sd"> background (int): 565 encoded color to use for background</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="k">for</span> <span class="n">char</span> <span class="ow">in</span> <span class="n">text</span><span class="p">:</span>
|
|
<span class="n">ch</span> <span class="o">=</span> <span class="nb">ord</span><span class="p">(</span><span class="n">char</span><span class="p">)</span>
|
|
<span class="k">if</span> <span class="p">(</span>
|
|
<span class="n">font</span><span class="o">.</span><span class="n">FIRST</span> <span class="o"><=</span> <span class="n">ch</span> <span class="o"><</span> <span class="n">font</span><span class="o">.</span><span class="n">LAST</span>
|
|
<span class="ow">and</span> <span class="n">x0</span> <span class="o">+</span> <span class="n">font</span><span class="o">.</span><span class="n">WIDTH</span> <span class="o"><=</span> <span class="bp">self</span><span class="o">.</span><span class="n">width</span>
|
|
<span class="ow">and</span> <span class="n">y0</span> <span class="o">+</span> <span class="n">font</span><span class="o">.</span><span class="n">HEIGHT</span> <span class="o"><=</span> <span class="bp">self</span><span class="o">.</span><span class="n">height</span>
|
|
<span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">font</span><span class="o">.</span><span class="n">HEIGHT</span> <span class="o">==</span> <span class="mi">8</span><span class="p">:</span>
|
|
<span class="n">passes</span> <span class="o">=</span> <span class="mi">1</span>
|
|
<span class="n">size</span> <span class="o">=</span> <span class="mi">8</span>
|
|
<span class="n">each</span> <span class="o">=</span> <span class="mi">0</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">passes</span> <span class="o">=</span> <span class="mi">2</span>
|
|
<span class="n">size</span> <span class="o">=</span> <span class="mi">16</span>
|
|
<span class="n">each</span> <span class="o">=</span> <span class="mi">8</span>
|
|
|
|
<span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">passes</span><span class="p">):</span>
|
|
<span class="n">idx</span> <span class="o">=</span> <span class="p">(</span><span class="n">ch</span> <span class="o">-</span> <span class="n">font</span><span class="o">.</span><span class="n">FIRST</span><span class="p">)</span> <span class="o">*</span> <span class="n">size</span> <span class="o">+</span> <span class="p">(</span><span class="n">each</span> <span class="o">*</span> <span class="n">line</span><span class="p">)</span>
|
|
<span class="n">buffer</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_pack8</span><span class="p">(</span><span class="n">font</span><span class="o">.</span><span class="n">FONT</span><span class="p">,</span> <span class="n">idx</span><span class="p">,</span> <span class="n">fg_color</span><span class="p">,</span> <span class="n">bg_color</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">blit_buffer</span><span class="p">(</span><span class="n">buffer</span><span class="p">,</span> <span class="n">x0</span><span class="p">,</span> <span class="n">y0</span> <span class="o">+</span> <span class="mi">8</span> <span class="o">*</span> <span class="n">line</span><span class="p">,</span> <span class="mi">8</span><span class="p">,</span> <span class="mi">8</span><span class="p">)</span>
|
|
|
|
<span class="n">x0</span> <span class="o">+=</span> <span class="mi">8</span>
|
|
|
|
<span class="k">def</span> <span class="nf">_text16</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">font</span><span class="p">,</span> <span class="n">text</span><span class="p">,</span> <span class="n">x0</span><span class="p">,</span> <span class="n">y0</span><span class="p">,</span> <span class="n">fg_color</span><span class="o">=</span><span class="n">WHITE</span><span class="p">,</span> <span class="n">bg_color</span><span class="o">=</span><span class="n">BLACK</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Internal method to draw characters with width of 16 and heights of 16</span>
|
|
<span class="sd"> or 32.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> font (module): font module to use</span>
|
|
<span class="sd"> text (str): text to write</span>
|
|
<span class="sd"> x0 (int): column to start drawing at</span>
|
|
<span class="sd"> y0 (int): row to start drawing at</span>
|
|
<span class="sd"> color (int): 565 encoded color to use for characters</span>
|
|
<span class="sd"> background (int): 565 encoded color to use for background</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="k">for</span> <span class="n">char</span> <span class="ow">in</span> <span class="n">text</span><span class="p">:</span>
|
|
<span class="n">ch</span> <span class="o">=</span> <span class="nb">ord</span><span class="p">(</span><span class="n">char</span><span class="p">)</span>
|
|
<span class="k">if</span> <span class="p">(</span>
|
|
<span class="n">font</span><span class="o">.</span><span class="n">FIRST</span> <span class="o"><=</span> <span class="n">ch</span> <span class="o"><</span> <span class="n">font</span><span class="o">.</span><span class="n">LAST</span>
|
|
<span class="ow">and</span> <span class="n">x0</span> <span class="o">+</span> <span class="n">font</span><span class="o">.</span><span class="n">WIDTH</span> <span class="o"><=</span> <span class="bp">self</span><span class="o">.</span><span class="n">width</span>
|
|
<span class="ow">and</span> <span class="n">y0</span> <span class="o">+</span> <span class="n">font</span><span class="o">.</span><span class="n">HEIGHT</span> <span class="o"><=</span> <span class="bp">self</span><span class="o">.</span><span class="n">height</span>
|
|
<span class="p">):</span>
|
|
<span class="n">each</span> <span class="o">=</span> <span class="mi">16</span>
|
|
<span class="k">if</span> <span class="n">font</span><span class="o">.</span><span class="n">HEIGHT</span> <span class="o">==</span> <span class="mi">16</span><span class="p">:</span>
|
|
<span class="n">passes</span> <span class="o">=</span> <span class="mi">2</span>
|
|
<span class="n">size</span> <span class="o">=</span> <span class="mi">32</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">passes</span> <span class="o">=</span> <span class="mi">4</span>
|
|
<span class="n">size</span> <span class="o">=</span> <span class="mi">64</span>
|
|
|
|
<span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">passes</span><span class="p">):</span>
|
|
<span class="n">idx</span> <span class="o">=</span> <span class="p">(</span><span class="n">ch</span> <span class="o">-</span> <span class="n">font</span><span class="o">.</span><span class="n">FIRST</span><span class="p">)</span> <span class="o">*</span> <span class="n">size</span> <span class="o">+</span> <span class="p">(</span><span class="n">each</span> <span class="o">*</span> <span class="n">line</span><span class="p">)</span>
|
|
<span class="n">buffer</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_pack16</span><span class="p">(</span><span class="n">font</span><span class="o">.</span><span class="n">FONT</span><span class="p">,</span> <span class="n">idx</span><span class="p">,</span> <span class="n">fg_color</span><span class="p">,</span> <span class="n">bg_color</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">blit_buffer</span><span class="p">(</span><span class="n">buffer</span><span class="p">,</span> <span class="n">x0</span><span class="p">,</span> <span class="n">y0</span> <span class="o">+</span> <span class="mi">8</span> <span class="o">*</span> <span class="n">line</span><span class="p">,</span> <span class="mi">16</span><span class="p">,</span> <span class="mi">8</span><span class="p">)</span>
|
|
<span class="n">x0</span> <span class="o">+=</span> <span class="mi">16</span>
|
|
|
|
<div class="viewcode-block" id="ST7789.text">
|
|
<a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.text">[docs]</a>
|
|
<span class="k">def</span> <span class="nf">text</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">font</span><span class="p">,</span> <span class="n">text</span><span class="p">,</span> <span class="n">x0</span><span class="p">,</span> <span class="n">y0</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="n">WHITE</span><span class="p">,</span> <span class="n">background</span><span class="o">=</span><span class="n">BLACK</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Draw text on display in specified font and colors. 8 and 16 bit wide</span>
|
|
<span class="sd"> fonts are supported.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> font (module): font module to use.</span>
|
|
<span class="sd"> text (str): text to write</span>
|
|
<span class="sd"> x0 (int): column to start drawing at</span>
|
|
<span class="sd"> y0 (int): row to start drawing at</span>
|
|
<span class="sd"> color (int): 565 encoded color to use for characters</span>
|
|
<span class="sd"> background (int): 565 encoded color to use for background</span>
|
|
<span class="sd"> """</span>
|
|
<span class="n">fg_color</span> <span class="o">=</span> <span class="n">color</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">needs_swap</span> <span class="k">else</span> <span class="p">((</span><span class="n">color</span> <span class="o"><<</span> <span class="mi">8</span><span class="p">)</span> <span class="o">&</span> <span class="mh">0xFF00</span><span class="p">)</span> <span class="o">|</span> <span class="p">(</span><span class="n">color</span> <span class="o">>></span> <span class="mi">8</span><span class="p">)</span>
|
|
<span class="n">bg_color</span> <span class="o">=</span> <span class="p">(</span>
|
|
<span class="n">background</span>
|
|
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">needs_swap</span>
|
|
<span class="k">else</span> <span class="p">((</span><span class="n">background</span> <span class="o"><<</span> <span class="mi">8</span><span class="p">)</span> <span class="o">&</span> <span class="mh">0xFF00</span><span class="p">)</span> <span class="o">|</span> <span class="p">(</span><span class="n">background</span> <span class="o">>></span> <span class="mi">8</span><span class="p">)</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="k">if</span> <span class="n">font</span><span class="o">.</span><span class="n">WIDTH</span> <span class="o">==</span> <span class="mi">8</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_text8</span><span class="p">(</span><span class="n">font</span><span class="p">,</span> <span class="n">text</span><span class="p">,</span> <span class="n">x0</span><span class="p">,</span> <span class="n">y0</span><span class="p">,</span> <span class="n">fg_color</span><span class="p">,</span> <span class="n">bg_color</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_text16</span><span class="p">(</span><span class="n">font</span><span class="p">,</span> <span class="n">text</span><span class="p">,</span> <span class="n">x0</span><span class="p">,</span> <span class="n">y0</span><span class="p">,</span> <span class="n">fg_color</span><span class="p">,</span> <span class="n">bg_color</span><span class="p">)</span></div>
|
|
|
|
|
|
<div class="viewcode-block" id="ST7789.bitmap">
|
|
<a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.bitmap">[docs]</a>
|
|
<span class="k">def</span> <span class="nf">bitmap</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bitmap</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">index</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Draw a bitmap on display at the specified column and row</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> bitmap (bitmap_module): The module containing the bitmap to draw</span>
|
|
<span class="sd"> x (int): column to start drawing at</span>
|
|
<span class="sd"> y (int): row to start drawing at</span>
|
|
<span class="sd"> index (int): Optional index of bitmap to draw from multiple bitmap</span>
|
|
<span class="sd"> module</span>
|
|
<span class="sd"> """</span>
|
|
<span class="n">width</span> <span class="o">=</span> <span class="n">bitmap</span><span class="o">.</span><span class="n">WIDTH</span>
|
|
<span class="n">height</span> <span class="o">=</span> <span class="n">bitmap</span><span class="o">.</span><span class="n">HEIGHT</span>
|
|
<span class="n">to_col</span> <span class="o">=</span> <span class="n">x</span> <span class="o">+</span> <span class="n">width</span> <span class="o">-</span> <span class="mi">1</span>
|
|
<span class="n">to_row</span> <span class="o">=</span> <span class="n">y</span> <span class="o">+</span> <span class="n">height</span> <span class="o">-</span> <span class="mi">1</span>
|
|
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">width</span> <span class="o"><=</span> <span class="n">to_col</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">height</span> <span class="o"><=</span> <span class="n">to_row</span><span class="p">:</span>
|
|
<span class="k">return</span>
|
|
|
|
<span class="n">bitmap_size</span> <span class="o">=</span> <span class="n">height</span> <span class="o">*</span> <span class="n">width</span>
|
|
<span class="n">buffer_len</span> <span class="o">=</span> <span class="n">bitmap_size</span> <span class="o">*</span> <span class="mi">2</span>
|
|
<span class="n">bpp</span> <span class="o">=</span> <span class="n">bitmap</span><span class="o">.</span><span class="n">BPP</span>
|
|
<span class="n">bs_bit</span> <span class="o">=</span> <span class="n">bpp</span> <span class="o">*</span> <span class="n">bitmap_size</span> <span class="o">*</span> <span class="n">index</span> <span class="c1"># if index > 0 else 0</span>
|
|
<span class="n">palette</span> <span class="o">=</span> <span class="n">bitmap</span><span class="o">.</span><span class="n">PALETTE</span>
|
|
<span class="n">needs_swap</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">needs_swap</span>
|
|
<span class="n">buffer</span> <span class="o">=</span> <span class="nb">bytearray</span><span class="p">(</span><span class="n">buffer_len</span><span class="p">)</span>
|
|
|
|
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">buffer_len</span><span class="p">,</span> <span class="mi">2</span><span class="p">):</span>
|
|
<span class="n">color_index</span> <span class="o">=</span> <span class="mi">0</span>
|
|
<span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">bpp</span><span class="p">):</span>
|
|
<span class="n">color_index</span> <span class="o">=</span> <span class="p">(</span><span class="n">color_index</span> <span class="o"><<</span> <span class="mi">1</span><span class="p">)</span> <span class="o">|</span> <span class="p">(</span>
|
|
<span class="p">(</span><span class="n">bitmap</span><span class="o">.</span><span class="n">BITMAP</span><span class="p">[</span><span class="n">bs_bit</span> <span class="o">>></span> <span class="mi">3</span><span class="p">]</span> <span class="o">>></span> <span class="p">(</span><span class="mi">7</span> <span class="o">-</span> <span class="p">(</span><span class="n">bs_bit</span> <span class="o">&</span> <span class="mi">7</span><span class="p">)))</span> <span class="o">&</span> <span class="mi">1</span>
|
|
<span class="p">)</span>
|
|
<span class="n">bs_bit</span> <span class="o">+=</span> <span class="mi">1</span>
|
|
|
|
<span class="n">color</span> <span class="o">=</span> <span class="n">palette</span><span class="p">[</span><span class="n">color_index</span><span class="p">]</span>
|
|
<span class="k">if</span> <span class="n">needs_swap</span><span class="p">:</span>
|
|
<span class="n">buffer</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">color</span> <span class="o">&</span> <span class="mh">0xFF</span>
|
|
<span class="n">buffer</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">color</span> <span class="o">>></span> <span class="mi">8</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">buffer</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">color</span> <span class="o">>></span> <span class="mi">8</span>
|
|
<span class="n">buffer</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">color</span> <span class="o">&</span> <span class="mh">0xFF</span>
|
|
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_set_window</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">to_col</span><span class="p">,</span> <span class="n">to_row</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_write</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="n">buffer</span><span class="p">)</span></div>
|
|
|
|
|
|
<div class="viewcode-block" id="ST7789.pbitmap">
|
|
<a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.pbitmap">[docs]</a>
|
|
<span class="k">def</span> <span class="nf">pbitmap</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bitmap</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">index</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Draw a bitmap on display at the specified column and row one row at a time</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> bitmap (bitmap_module): The module containing the bitmap to draw</span>
|
|
<span class="sd"> x (int): column to start drawing at</span>
|
|
<span class="sd"> y (int): row to start drawing at</span>
|
|
<span class="sd"> index (int): Optional index of bitmap to draw from multiple bitmap</span>
|
|
<span class="sd"> module</span>
|
|
|
|
<span class="sd"> """</span>
|
|
<span class="n">width</span> <span class="o">=</span> <span class="n">bitmap</span><span class="o">.</span><span class="n">WIDTH</span>
|
|
<span class="n">height</span> <span class="o">=</span> <span class="n">bitmap</span><span class="o">.</span><span class="n">HEIGHT</span>
|
|
<span class="n">bitmap_size</span> <span class="o">=</span> <span class="n">height</span> <span class="o">*</span> <span class="n">width</span>
|
|
<span class="n">bpp</span> <span class="o">=</span> <span class="n">bitmap</span><span class="o">.</span><span class="n">BPP</span>
|
|
<span class="n">bs_bit</span> <span class="o">=</span> <span class="n">bpp</span> <span class="o">*</span> <span class="n">bitmap_size</span> <span class="o">*</span> <span class="n">index</span> <span class="c1"># if index > 0 else 0</span>
|
|
<span class="n">palette</span> <span class="o">=</span> <span class="n">bitmap</span><span class="o">.</span><span class="n">PALETTE</span>
|
|
<span class="n">needs_swap</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">needs_swap</span>
|
|
<span class="n">buffer</span> <span class="o">=</span> <span class="nb">bytearray</span><span class="p">(</span><span class="n">bitmap</span><span class="o">.</span><span class="n">WIDTH</span> <span class="o">*</span> <span class="mi">2</span><span class="p">)</span>
|
|
|
|
<span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">height</span><span class="p">):</span>
|
|
<span class="k">for</span> <span class="n">col</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">width</span><span class="p">):</span>
|
|
<span class="n">color_index</span> <span class="o">=</span> <span class="mi">0</span>
|
|
<span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">bpp</span><span class="p">):</span>
|
|
<span class="n">color_index</span> <span class="o"><<=</span> <span class="mi">1</span>
|
|
<span class="n">color_index</span> <span class="o">|=</span> <span class="p">(</span>
|
|
<span class="n">bitmap</span><span class="o">.</span><span class="n">BITMAP</span><span class="p">[</span><span class="n">bs_bit</span> <span class="o">//</span> <span class="mi">8</span><span class="p">]</span> <span class="o">&</span> <span class="mi">1</span> <span class="o"><<</span> <span class="p">(</span><span class="mi">7</span> <span class="o">-</span> <span class="p">(</span><span class="n">bs_bit</span> <span class="o">%</span> <span class="mi">8</span><span class="p">))</span>
|
|
<span class="p">)</span> <span class="o">></span> <span class="mi">0</span>
|
|
<span class="n">bs_bit</span> <span class="o">+=</span> <span class="mi">1</span>
|
|
<span class="n">color</span> <span class="o">=</span> <span class="n">palette</span><span class="p">[</span><span class="n">color_index</span><span class="p">]</span>
|
|
<span class="k">if</span> <span class="n">needs_swap</span><span class="p">:</span>
|
|
<span class="n">buffer</span><span class="p">[</span><span class="n">col</span> <span class="o">*</span> <span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">color</span> <span class="o">&</span> <span class="mh">0xFF</span>
|
|
<span class="n">buffer</span><span class="p">[</span><span class="n">col</span> <span class="o">*</span> <span class="mi">2</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">color</span> <span class="o">>></span> <span class="mi">8</span> <span class="o">&</span> <span class="mh">0xFF</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">buffer</span><span class="p">[</span><span class="n">col</span> <span class="o">*</span> <span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">color</span> <span class="o">>></span> <span class="mi">8</span> <span class="o">&</span> <span class="mh">0xFF</span>
|
|
<span class="n">buffer</span><span class="p">[</span><span class="n">col</span> <span class="o">*</span> <span class="mi">2</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">color</span> <span class="o">&</span> <span class="mh">0xFF</span>
|
|
|
|
<span class="n">to_col</span> <span class="o">=</span> <span class="n">x</span> <span class="o">+</span> <span class="n">width</span> <span class="o">-</span> <span class="mi">1</span>
|
|
<span class="n">to_row</span> <span class="o">=</span> <span class="n">y</span> <span class="o">+</span> <span class="n">row</span>
|
|
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">width</span> <span class="o">></span> <span class="n">to_col</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">height</span> <span class="o">></span> <span class="n">to_row</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_set_window</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="o">+</span> <span class="n">row</span><span class="p">,</span> <span class="n">to_col</span><span class="p">,</span> <span class="n">to_row</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_write</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="n">buffer</span><span class="p">)</span></div>
|
|
|
|
|
|
<div class="viewcode-block" id="ST7789.write">
|
|
<a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.write">[docs]</a>
|
|
<span class="k">def</span> <span class="nf">write</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">font</span><span class="p">,</span> <span class="n">string</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">fg</span><span class="o">=</span><span class="n">WHITE</span><span class="p">,</span> <span class="n">bg</span><span class="o">=</span><span class="n">BLACK</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Write a string using a converted true-type font on the display starting</span>
|
|
<span class="sd"> at the specified column and row</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> font (font): The module containing the converted true-type font</span>
|
|
<span class="sd"> s (string): The string to write</span>
|
|
<span class="sd"> x (int): column to start writing</span>
|
|
<span class="sd"> y (int): row to start writing</span>
|
|
<span class="sd"> fg (int): foreground color, optional, defaults to WHITE</span>
|
|
<span class="sd"> bg (int): background color, optional, defaults to BLACK</span>
|
|
<span class="sd"> """</span>
|
|
<span class="n">buffer_len</span> <span class="o">=</span> <span class="n">font</span><span class="o">.</span><span class="n">HEIGHT</span> <span class="o">*</span> <span class="n">font</span><span class="o">.</span><span class="n">MAX_WIDTH</span> <span class="o">*</span> <span class="mi">2</span>
|
|
<span class="n">buffer</span> <span class="o">=</span> <span class="nb">bytearray</span><span class="p">(</span><span class="n">buffer_len</span><span class="p">)</span>
|
|
<span class="n">fg_hi</span> <span class="o">=</span> <span class="n">fg</span> <span class="o">>></span> <span class="mi">8</span>
|
|
<span class="n">fg_lo</span> <span class="o">=</span> <span class="n">fg</span> <span class="o">&</span> <span class="mh">0xFF</span>
|
|
|
|
<span class="n">bg_hi</span> <span class="o">=</span> <span class="n">bg</span> <span class="o">>></span> <span class="mi">8</span>
|
|
<span class="n">bg_lo</span> <span class="o">=</span> <span class="n">bg</span> <span class="o">&</span> <span class="mh">0xFF</span>
|
|
|
|
<span class="k">for</span> <span class="n">character</span> <span class="ow">in</span> <span class="n">string</span><span class="p">:</span>
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="n">char_index</span> <span class="o">=</span> <span class="n">font</span><span class="o">.</span><span class="n">MAP</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="n">character</span><span class="p">)</span>
|
|
<span class="n">offset</span> <span class="o">=</span> <span class="n">char_index</span> <span class="o">*</span> <span class="n">font</span><span class="o">.</span><span class="n">OFFSET_WIDTH</span>
|
|
<span class="n">bs_bit</span> <span class="o">=</span> <span class="n">font</span><span class="o">.</span><span class="n">OFFSETS</span><span class="p">[</span><span class="n">offset</span><span class="p">]</span>
|
|
<span class="k">if</span> <span class="n">font</span><span class="o">.</span><span class="n">OFFSET_WIDTH</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span>
|
|
<span class="n">bs_bit</span> <span class="o">=</span> <span class="p">(</span><span class="n">bs_bit</span> <span class="o"><<</span> <span class="mi">8</span><span class="p">)</span> <span class="o">+</span> <span class="n">font</span><span class="o">.</span><span class="n">OFFSETS</span><span class="p">[</span><span class="n">offset</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span>
|
|
|
|
<span class="k">if</span> <span class="n">font</span><span class="o">.</span><span class="n">OFFSET_WIDTH</span> <span class="o">></span> <span class="mi">2</span><span class="p">:</span>
|
|
<span class="n">bs_bit</span> <span class="o">=</span> <span class="p">(</span><span class="n">bs_bit</span> <span class="o"><<</span> <span class="mi">8</span><span class="p">)</span> <span class="o">+</span> <span class="n">font</span><span class="o">.</span><span class="n">OFFSETS</span><span class="p">[</span><span class="n">offset</span> <span class="o">+</span> <span class="mi">2</span><span class="p">]</span>
|
|
|
|
<span class="n">char_width</span> <span class="o">=</span> <span class="n">font</span><span class="o">.</span><span class="n">WIDTHS</span><span class="p">[</span><span class="n">char_index</span><span class="p">]</span>
|
|
<span class="n">buffer_needed</span> <span class="o">=</span> <span class="n">char_width</span> <span class="o">*</span> <span class="n">font</span><span class="o">.</span><span class="n">HEIGHT</span> <span class="o">*</span> <span class="mi">2</span>
|
|
|
|
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">buffer_needed</span><span class="p">,</span> <span class="mi">2</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">font</span><span class="o">.</span><span class="n">BITMAPS</span><span class="p">[</span><span class="n">bs_bit</span> <span class="o">//</span> <span class="mi">8</span><span class="p">]</span> <span class="o">&</span> <span class="mi">1</span> <span class="o"><<</span> <span class="p">(</span><span class="mi">7</span> <span class="o">-</span> <span class="p">(</span><span class="n">bs_bit</span> <span class="o">%</span> <span class="mi">8</span><span class="p">))</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span>
|
|
<span class="n">buffer</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">fg_hi</span>
|
|
<span class="n">buffer</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">fg_lo</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">buffer</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">bg_hi</span>
|
|
<span class="n">buffer</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">bg_lo</span>
|
|
|
|
<span class="n">bs_bit</span> <span class="o">+=</span> <span class="mi">1</span>
|
|
|
|
<span class="n">to_col</span> <span class="o">=</span> <span class="n">x</span> <span class="o">+</span> <span class="n">char_width</span> <span class="o">-</span> <span class="mi">1</span>
|
|
<span class="n">to_row</span> <span class="o">=</span> <span class="n">y</span> <span class="o">+</span> <span class="n">font</span><span class="o">.</span><span class="n">HEIGHT</span> <span class="o">-</span> <span class="mi">1</span>
|
|
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">width</span> <span class="o">></span> <span class="n">to_col</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">height</span> <span class="o">></span> <span class="n">to_row</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_set_window</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">to_col</span><span class="p">,</span> <span class="n">to_row</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_write</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="n">buffer</span><span class="p">[:</span><span class="n">buffer_needed</span><span class="p">])</span>
|
|
|
|
<span class="n">x</span> <span class="o">+=</span> <span class="n">char_width</span>
|
|
|
|
<span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span>
|
|
<span class="k">pass</span></div>
|
|
|
|
|
|
<div class="viewcode-block" id="ST7789.write_width">
|
|
<a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.write_width">[docs]</a>
|
|
<span class="k">def</span> <span class="nf">write_width</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">font</span><span class="p">,</span> <span class="n">string</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Returns the width in pixels of the string if it was written with the</span>
|
|
<span class="sd"> specified font</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> font (font): The module containing the converted true-type font</span>
|
|
<span class="sd"> string (string): The string to measure</span>
|
|
|
|
<span class="sd"> Returns:</span>
|
|
<span class="sd"> int: The width of the string in pixels</span>
|
|
|
|
<span class="sd"> """</span>
|
|
<span class="n">width</span> <span class="o">=</span> <span class="mi">0</span>
|
|
<span class="k">for</span> <span class="n">character</span> <span class="ow">in</span> <span class="n">string</span><span class="p">:</span>
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="n">char_index</span> <span class="o">=</span> <span class="n">font</span><span class="o">.</span><span class="n">MAP</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="n">character</span><span class="p">)</span>
|
|
<span class="n">width</span> <span class="o">+=</span> <span class="n">font</span><span class="o">.</span><span class="n">WIDTHS</span><span class="p">[</span><span class="n">char_index</span><span class="p">]</span>
|
|
<span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span>
|
|
<span class="k">pass</span>
|
|
|
|
<span class="k">return</span> <span class="n">width</span></div>
|
|
|
|
|
|
<div class="viewcode-block" id="ST7789.polygon">
|
|
<a class="viewcode-back" href="../st7789py.html#st7789py.ST7789.polygon">[docs]</a>
|
|
<span class="nd">@micropython</span><span class="o">.</span><span class="n">native</span>
|
|
<span class="k">def</span> <span class="nf">polygon</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">points</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">color</span><span class="p">,</span> <span class="n">angle</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">center_x</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">center_y</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Draw a polygon on the display.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> points (list): List of points to draw.</span>
|
|
<span class="sd"> x (int): X-coordinate of the polygon's position.</span>
|
|
<span class="sd"> y (int): Y-coordinate of the polygon's position.</span>
|
|
<span class="sd"> color (int): 565 encoded color.</span>
|
|
<span class="sd"> angle (float): Rotation angle in radians (default: 0).</span>
|
|
<span class="sd"> center_x (int): X-coordinate of the rotation center (default: 0).</span>
|
|
<span class="sd"> center_y (int): Y-coordinate of the rotation center (default: 0).</span>
|
|
|
|
<span class="sd"> Raises:</span>
|
|
<span class="sd"> ValueError: If the polygon has less than 3 points.</span>
|
|
<span class="sd"> """</span>
|
|
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">points</span><span class="p">)</span> <span class="o"><</span> <span class="mi">3</span><span class="p">:</span>
|
|
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Polygon must have at least 3 points."</span><span class="p">)</span>
|
|
|
|
<span class="k">if</span> <span class="n">angle</span><span class="p">:</span>
|
|
<span class="n">cos_a</span> <span class="o">=</span> <span class="n">cos</span><span class="p">(</span><span class="n">angle</span><span class="p">)</span>
|
|
<span class="n">sin_a</span> <span class="o">=</span> <span class="n">sin</span><span class="p">(</span><span class="n">angle</span><span class="p">)</span>
|
|
<span class="n">rotated</span> <span class="o">=</span> <span class="p">[</span>
|
|
<span class="p">(</span>
|
|
<span class="n">x</span>
|
|
<span class="o">+</span> <span class="n">center_x</span>
|
|
<span class="o">+</span> <span class="nb">int</span><span class="p">(</span>
|
|
<span class="p">(</span><span class="n">point</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">-</span> <span class="n">center_x</span><span class="p">)</span> <span class="o">*</span> <span class="n">cos_a</span> <span class="o">-</span> <span class="p">(</span><span class="n">point</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="n">center_y</span><span class="p">)</span> <span class="o">*</span> <span class="n">sin_a</span>
|
|
<span class="p">),</span>
|
|
<span class="n">y</span>
|
|
<span class="o">+</span> <span class="n">center_y</span>
|
|
<span class="o">+</span> <span class="nb">int</span><span class="p">(</span>
|
|
<span class="p">(</span><span class="n">point</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">-</span> <span class="n">center_x</span><span class="p">)</span> <span class="o">*</span> <span class="n">sin_a</span> <span class="o">+</span> <span class="p">(</span><span class="n">point</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="n">center_y</span><span class="p">)</span> <span class="o">*</span> <span class="n">cos_a</span>
|
|
<span class="p">),</span>
|
|
<span class="p">)</span>
|
|
<span class="k">for</span> <span class="n">point</span> <span class="ow">in</span> <span class="n">points</span>
|
|
<span class="p">]</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">rotated</span> <span class="o">=</span> <span class="p">[(</span><span class="n">x</span> <span class="o">+</span> <span class="nb">int</span><span class="p">((</span><span class="n">point</span><span class="p">[</span><span class="mi">0</span><span class="p">])),</span> <span class="n">y</span> <span class="o">+</span> <span class="nb">int</span><span class="p">((</span><span class="n">point</span><span class="p">[</span><span class="mi">1</span><span class="p">])))</span> <span class="k">for</span> <span class="n">point</span> <span class="ow">in</span> <span class="n">points</span><span class="p">]</span>
|
|
|
|
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">rotated</span><span class="p">)):</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">line</span><span class="p">(</span>
|
|
<span class="n">rotated</span><span class="p">[</span><span class="n">i</span> <span class="o">-</span> <span class="mi">1</span><span class="p">][</span><span class="mi">0</span><span class="p">],</span>
|
|
<span class="n">rotated</span><span class="p">[</span><span class="n">i</span> <span class="o">-</span> <span class="mi">1</span><span class="p">][</span><span class="mi">1</span><span class="p">],</span>
|
|
<span class="n">rotated</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="mi">0</span><span class="p">],</span>
|
|
<span class="n">rotated</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="mi">1</span><span class="p">],</span>
|
|
<span class="n">color</span><span class="p">,</span>
|
|
<span class="p">)</span></div>
|
|
</div>
|
|
|
|
</pre></div>
|
|
|
|
</div>
|
|
</div>
|
|
<footer>
|
|
|
|
<hr/>
|
|
|
|
<div role="contentinfo">
|
|
<p></p>
|
|
</div>
|
|
|
|
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
|
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
|
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
|
|
|
|
|
</footer>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
</div>
|
|
<script>
|
|
jQuery(function () {
|
|
SphinxRtdTheme.Navigation.enable(true);
|
|
});
|
|
</script>
|
|
|
|
</body>
|
|
</html> |