Mercurial > hg > forks > multipaint-js
changeset 121:25a29d29ee6a
Add helper class MPWriteCtx for exporting data and source code.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Mon, 09 Jul 2018 18:07:04 +0300 |
parents | 55b0a77af602 |
children | ffa6533584ca |
files | exporters.pde |
diffstat | 1 files changed, 109 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/exporters.pde Mon Jul 09 17:44:47 2018 +0300 +++ b/exporters.pde Mon Jul 09 18:07:04 2018 +0300 @@ -11,6 +11,115 @@ int g_gridmode = OLD; +public class MPWriteCtx +{ + public int m_offs, m_bpl, m_bytes, m_indent; + public String m_byteDef, m_eol, m_src; + + MPWriteCtx() + { + m_offs = 0; + m_bpl = 32; + m_bytes = 0; + m_indent = 4; + m_byteDef = ".byte"; + m_src = ""; + m_eol = "\n"; + } + + void setOffs(int offs) + { + m_offs = offs; + } + + void setBPL(int bpl) + { + m_bpl = bpl; + } + + String getIndent() + { + String str = ""; + for (int n = 0; n < m_indent; n++) + str += " "; + return str; + } + + void label(String blabel) + { + eol(); + m_src += blabel +":"; + eol(); + m_bytes = 0; + } + + void comment(String bstr) + { + indent(); + m_src += "; "+ bstr; + eol(); + } + + void eol() + { + m_src += m_eol; + } + + void eod() + { + eol(); + eol(); + } + + void byteDef() + { + m_src += m_byteDef +" "; + } + + void indent() + { + m_src += getIndent(); + } + + void line(String str) + { + m_src += str; + eol(); + } + + void writeByte(int bval, String blabel) + { + m_data[m_offs++] = byte(bval); + + if (blabel != null) + { + m_src += blabel +": "+ m_byteDef +" "+ str(int(bval)) + m_eol; + } + else + { + m_src += str(int(bval)); + + if (m_bpl > 0 && + ++m_bytes >= m_bpl) + { + eol(); + indent(); + byteDef(); + m_bytes = 0; + } + else + m_src += ","; + } + } + + void writeByteAt(int offs, int bval, String blabel) + { + m_offs = offs; + writeByte(bval, blabel); + } +} + + void mpCopyByte(byte[] fdata, int moffs, int toffs) { g_map[moffs ] = byte((fdata[toffs] & 128) >> 7);