const_hoisted_1=/* @__PURE__ */createStaticVNode('<h1id="qmk-graphics-format"tabindex="-1">QMKGraphicsFormat<aclass="header-anchor"href="#qmk-graphics-format"aria-label="Permalink to "QMK Graphics Format {#qmk-graphics-format}""></a></h1><p>QMKusesagraphicsformat<em>("QuantumGraphicsFormat"-QGF)</em>specificallyforresource-constrainedsystems.</p><p>Thisformatiscapableofencoding1-,2-,4-,and8-bit-per-pixelgreyscale-andpalette-basedimages.ItalsoincludesRLEforpixeldataforsomebasiccompression.</p><p>Allintegervaluesareinlittle-endianformat.</p><p>TheQGFisdefinedintermsof<em>blocks</em>--each<em>block</em>containsa<em>header</em>andanoptional<em>blob</em>ofdata.The<em>header</em>containstheblock's<em>typeid</em>,andthelengthofthe<em>blob</em>thatfollows.Eachblocktypeisdenotedbyadifferent<em>typeid</em>hasitsownblockdefinitionbelow.Allblocksaredefinedaspackedstructs,containingzeropaddingbetweenfields.</p><p>Thegeneralstructureofthefileis:</p><ul><li><em>Graphicsdescriptorblock</em></li><li><em>Frameoffsetblock</em></li><li>Repeatinglistofframes:<ul><li><em>Framedescriptorblock</em></li><li><em>Framepaletteblock</em>(optional,dependingonframeformat)</li><li><em>Framedeltablock</em>(optional,dependingondeltaflag)</li><li><em>Framedatablock</em></li></ul></li></ul><p>Differentframeswithinthefileshouldbeconsidered"isolated"andmayhavetheirownimageformatand/orpalette.</p><h2id="qgf-block-header"tabindex="-1">BlockHeader<aclass="header-anchor"href="#qgf-block-header"aria-label="Permalinkto"BlockHeader{#qgf-block-header}""></a></h2><p>Thisblockheaderispresentforallblocks,includingthegraphicsdescriptor.</p><p><em>Blockheader</em>format:</p><divclass="language-cvp-adaptive-theme"><buttontitle="CopyCode"class="copy"></button><spanclass="lang">c</span><preclass="shikishiki-themesgithub-lightgithub-darkvp-code"><code><spanclass="line"><spanstyle="--shiki-light:#D73A49;--shiki-dark:#F97583;">typedef</span><spanstyle="--shiki-light:#D73A49;--shiki-dark:#F97583;">struct</span><spanstyle="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">__attribute__</span><spanstyle="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">((packed))</span><spanstyle="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">qgf_block_header_v1_t</span><spanstyle="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span>\n<spanclass="line"><spanstyle="--shiki-light:#D73A49;--shiki-dark:#F97583;">uint8_t</span><spanstyle="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">type_id;</span><spanstyle="--shiki-light:#6A737D;--shiki-dark:#6A737D;">//Seeeachrespectiveblocktype</span></span>\n<spanclass="line"><spanstyle="--shiki-light:#D73A49;--shiki-dark:#F97583;">uint8_t</span><spanstyle="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">neg_type_id;</span><spanstyle="--shiki-light:#6A737D;--shiki-dark:#6A737D;">//NegatedtypeID,usedfordetectingparsingerrors</span></span>\n<spanclass="line"><spanstyle="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">uint24_t</span><spanstyle="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">length;</span><spanstyle="--shiki-light:#6A737D;--shiki-dark:#6A737D;">//24-bitbloblength,allowingforblocksizesofamaximumof16MB</span></span>\n<spanclass="line"><spanstyle="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span><spanstyle="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">qgf_block_header_v1_t</span><spanstyle="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>\n<spanclass="line"><spanstyle="--shiki-light:#6A737D;--shiki-dark:#6A737D;">//_Static_assert(sizeof(qgf_block_header_v1_t)==5,"qgf_block_header_v1_tmustbe5bytesinv1ofQGF");</span></span></code></pre></div><p>The<em>length</em>describesthenumberofoctetsinthedatafollowingtheblockheader--ablockheadermayspecifya<em>length</em>of<code>0</code>i