python: Finished all NcPlane functions

This commit is contained in:
igo95862 2021-04-24 20:40:11 +03:00 committed by Nick Black
parent ccddd0fd72
commit 8f083b4cce

View File

@ -1010,6 +1010,660 @@ NcPlane_erase(NcPlaneObject *self, PyObject *Py_UNUSED(args))
Py_RETURN_NONE;
}
static PyObject *
NcPlane_bchannel(NcPlaneObject *self, PyObject *Py_UNUSED(args))
{
return Py_BuildValue("k", (unsigned long)ncplane_bchannel(self->ncplane_ptr));
}
static PyObject *
NcPlane_fchannel(NcPlaneObject *self, PyObject *Py_UNUSED(args))
{
return Py_BuildValue("k", (unsigned long)ncplane_fchannel(self->ncplane_ptr));
}
static PyObject *
NcPlane_set_channels(NcPlaneObject *self, PyObject *args)
{
unsigned long long channels = 0;
GNU_PY_CHECK_INT(PyArg_ParseTuple(args, "K", &channels));
ncplane_set_channels(self->ncplane_ptr, (uint64_t)channels);
Py_RETURN_NONE;
}
static PyObject *
NcPlane_set_styles(NcPlaneObject *self, PyObject *args)
{
unsigned int stylebits = 0;
GNU_PY_CHECK_INT(PyArg_ParseTuple(args, "I", &stylebits));
ncplane_set_styles(self->ncplane_ptr, stylebits);
Py_RETURN_NONE;
}
static PyObject *
NcPlane_on_styles(NcPlaneObject *self, PyObject *args)
{
unsigned int stylebits = 0;
GNU_PY_CHECK_INT(PyArg_ParseTuple(args, "I", &stylebits));
ncplane_on_styles(self->ncplane_ptr, stylebits);
Py_RETURN_NONE;
}
static PyObject *
NcPlane_off_styles(NcPlaneObject *self, PyObject *args)
{
unsigned int stylebits = 0;
GNU_PY_CHECK_INT(PyArg_ParseTuple(args, "I", &stylebits));
ncplane_off_styles(self->ncplane_ptr, stylebits);
Py_RETURN_NONE;
}
static PyObject *
NcPlane_fg_rgb(NcPlaneObject *self, PyObject *Py_UNUSED(args))
{
return Py_BuildValue("k", (unsigned long)ncplane_fg_rgb(self->ncplane_ptr));
}
static PyObject *
NcPlane_bg_rgb(NcPlaneObject *self, PyObject *Py_UNUSED(args))
{
return Py_BuildValue("k", (unsigned long)ncplane_bg_rgb(self->ncplane_ptr));
}
static PyObject *
NcPlane_fg_alpha(NcPlaneObject *self, PyObject *Py_UNUSED(args))
{
return Py_BuildValue("k", (unsigned long)ncplane_fg_alpha(self->ncplane_ptr));
}
static PyObject *
NcPlane_fg_default_p(NcPlaneObject *self, PyObject *Py_UNUSED(args))
{
return PyBool_FromLong((long)ncplane_fg_default_p(self->ncplane_ptr));
}
static PyObject *
NcPlane_bg_alpha(NcPlaneObject *self, PyObject *Py_UNUSED(args))
{
return Py_BuildValue("k", (unsigned long)ncplane_bg_alpha(self->ncplane_ptr));
}
static PyObject *
NcPlane_bg_default_p(NcPlaneObject *self, PyObject *Py_UNUSED(args))
{
return PyBool_FromLong((long)ncplane_bg_default_p(self->ncplane_ptr));
}
static PyObject *
NcPlane_fg_rgb8(NcPlaneObject *self, PyObject *Py_UNUSED(args))
{
unsigned int r = 0, g = 0, b = 0;
ncplane_fg_rgb8(self->ncplane_ptr, &r, &g, &b);
return Py_BuildValue("III", r, g, b);
}
static PyObject *
NcPlane_bg_rgb8(NcPlaneObject *self, PyObject *Py_UNUSED(args))
{
unsigned int r = 0, g = 0, b = 0;
ncplane_bg_rgb8(self->ncplane_ptr, &r, &g, &b);
return Py_BuildValue("III", r, g, b);
}
static PyObject *
NcPlane_set_fchannel(NcPlaneObject *self, PyObject *args)
{
unsigned long channel = 0;
GNU_PY_CHECK_INT(PyArg_ParseTuple(args, "k", &channel));
return Py_BuildValue("K", (unsigned long long)ncplane_set_fchannel(self->ncplane_ptr, (uint32_t)channel));
}
static PyObject *
NcPlane_set_bchannel(NcPlaneObject *self, PyObject *args)
{
unsigned long channel = 0;
GNU_PY_CHECK_INT(PyArg_ParseTuple(args, "k", &channel));
return Py_BuildValue("K", (unsigned long long)ncplane_set_bchannel(self->ncplane_ptr, (uint32_t)channel));
}
static PyObject *
NcPlane_set_fg_rgb8(NcPlaneObject *self, PyObject *args)
{
int r = 0, g = 0, b = 0;
GNU_PY_CHECK_INT(PyArg_ParseTuple(args, "iii", &r, &g, &b));
CHECK_NOTCURSES(ncplane_set_fg_rgb8(self->ncplane_ptr, r, g, b));
Py_RETURN_NONE;
}
static PyObject *
NcPlane_set_bg_rgb8(NcPlaneObject *self, PyObject *args)
{
int r = 0, g = 0, b = 0;
GNU_PY_CHECK_INT(PyArg_ParseTuple(args, "iii", &r, &g, &b));
CHECK_NOTCURSES(ncplane_set_bg_rgb8(self->ncplane_ptr, r, g, b));
Py_RETURN_NONE;
}
static PyObject *
NcPlane_set_bg_rgb8_clipped(NcPlaneObject *self, PyObject *args)
{
int r = 0, g = 0, b = 0;
GNU_PY_CHECK_INT(PyArg_ParseTuple(args, "iii", &r, &g, &b));
ncplane_set_bg_rgb8_clipped(self->ncplane_ptr, r, g, b);
Py_RETURN_NONE;
}
static PyObject *
NcPlane_set_fg_rgb8_clipped(NcPlaneObject *self, PyObject *args)
{
int r = 0, g = 0, b = 0;
GNU_PY_CHECK_INT(PyArg_ParseTuple(args, "iii", &r, &g, &b));
ncplane_set_fg_rgb8_clipped(self->ncplane_ptr, r, g, b);
Py_RETURN_NONE;
}
static PyObject *
NcPlane_set_fg_rgb(NcPlaneObject *self, PyObject *args)
{
unsigned long channel = 0;
GNU_PY_CHECK_INT(PyArg_ParseTuple(args, "k", &channel));
CHECK_NOTCURSES(ncplane_set_fg_rgb(self->ncplane_ptr, (uint32_t)channel));
Py_RETURN_NONE;
}
static PyObject *
NcPlane_set_bg_rgb(NcPlaneObject *self, PyObject *args)
{
unsigned long channel = 0;
GNU_PY_CHECK_INT(PyArg_ParseTuple(args, "k", &channel));
CHECK_NOTCURSES(ncplane_set_bg_rgb(self->ncplane_ptr, (uint32_t)channel));
Py_RETURN_NONE;
}
static PyObject *
NcPlane_set_fg_default(NcPlaneObject *self, PyObject *Py_UNUSED(args))
{
ncplane_set_fg_default(self->ncplane_ptr);
Py_RETURN_NONE;
}
static PyObject *
NcPlane_set_bg_default(NcPlaneObject *self, PyObject *Py_UNUSED(args))
{
ncplane_set_bg_default(self->ncplane_ptr);
Py_RETURN_NONE;
}
static PyObject *
NcPlane_set_fg_palindex(NcPlaneObject *self, PyObject *args)
{
int idx = 0;
GNU_PY_CHECK_INT(PyArg_ParseTuple(args, "i", &idx));
ncplane_set_fg_palindex(self->ncplane_ptr, idx);
Py_RETURN_NONE;
}
static PyObject *
NcPlane_set_bg_palindex(NcPlaneObject *self, PyObject *args)
{
int idx = 0;
GNU_PY_CHECK_INT(PyArg_ParseTuple(args, "i", &idx));
ncplane_set_bg_palindex(self->ncplane_ptr, idx);
Py_RETURN_NONE;
}
static PyObject *
NcPlane_set_fg_alpha(NcPlaneObject *self, PyObject *args)
{
int alpha = 0;
GNU_PY_CHECK_INT(PyArg_ParseTuple(args, "i", &alpha));
ncplane_set_fg_alpha(self->ncplane_ptr, alpha);
Py_RETURN_NONE;
}
static PyObject *
NcPlane_set_bg_alpha(NcPlaneObject *self, PyObject *args)
{
int alpha = 0;
GNU_PY_CHECK_INT(PyArg_ParseTuple(args, "i", &alpha));
ncplane_set_bg_alpha(self->ncplane_ptr, alpha);
Py_RETURN_NONE;
}
static PyObject *
NcPlane_fadeout(NcPlaneObject *Py_UNUSED(self), PyObject *Py_UNUSED(args))
{
PyErr_SetString(PyExc_NotImplementedError, "TODO when fader is added");
return NULL;
// ncplane_fadeout
}
static PyObject *
NcPlane_fadein(NcPlaneObject *Py_UNUSED(self), PyObject *Py_UNUSED(args))
{
PyErr_SetString(PyExc_NotImplementedError, "TODO when fader is added");
return NULL;
// ncplane_fadein
}
static PyObject *
NcPlane_fade_setup(NcPlaneObject *Py_UNUSED(self), PyObject *Py_UNUSED(args))
{
PyErr_SetString(PyExc_NotImplementedError, "TODO when fader is added");
return NULL;
// ncfadectx_setup
}
static PyObject *
NcPlane_fadeout_iteration(NcPlaneObject *Py_UNUSED(self), PyObject *Py_UNUSED(args))
{
PyErr_SetString(PyExc_NotImplementedError, "TODO when fader is added");
return NULL;
// ncplane_fadeout_iteration
}
static PyObject *
NcPlane_fadein_iteration(NcPlaneObject *Py_UNUSED(self), PyObject *Py_UNUSED(args))
{
PyErr_SetString(PyExc_NotImplementedError, "TODO when fader is added");
return NULL;
// ncplane_fadein_iteration
}
static PyObject *
NcPlane_pulse(NcPlaneObject *Py_UNUSED(self), PyObject *Py_UNUSED(args))
{
PyErr_SetString(PyExc_NotImplementedError, "TODO when fader is added");
return NULL;
// ncplane_pulse
}
static PyObject *
NcPlane_cells_load_box(NcPlaneObject *Py_UNUSED(self), PyObject *Py_UNUSED(args), PyObject *Py_UNUSED(kwds))
{
PyErr_SetString(PyExc_NotImplementedError, "TODO when cells are added");
return NULL;
// nccells_load_box
}
static PyObject *
NcPlane_cells_rounded_box(NcPlaneObject *Py_UNUSED(self), PyObject *Py_UNUSED(args), PyObject *Py_UNUSED(kwds))
{
PyErr_SetString(PyExc_NotImplementedError, "TODO when cells are added");
return NULL;
// nccells_rounded_box
}
static PyObject *
NcPlane_perimeter_rounded(NcPlaneObject *self, PyObject *args, PyObject *kwds)
{
unsigned long stylemask = 0;
unsigned long long channels = 0;
unsigned int ctlword = 0;
char *keywords[] = {"stylemask", "channels", "ctlword", NULL};
GNU_PY_CHECK_INT(PyArg_ParseTupleAndKeywords(args, kwds, "", keywords,
&stylemask,
&channels,
&ctlword));
CHECK_NOTCURSES(ncplane_perimeter_rounded(self->ncplane_ptr, (uint32_t)stylemask, (uint64_t)channels, ctlword));
Py_RETURN_NONE;
}
static PyObject *
NcPlane_rounded_box_sized(NcPlaneObject *self, PyObject *args, PyObject *kwds)
{
unsigned long styles = 0;
unsigned long long channels = 0;
int ylen = 0, xlen = 0;
unsigned int ctlword = 0;
char *keywords[] = {"styles",
"channels",
"ylen", "xlen",
"ctlword",
NULL};
GNU_PY_CHECK_INT(
PyArg_ParseTupleAndKeywords(
args, kwds, "kK ii I", keywords,
&styles, &channels,
&ylen, &xlen,
&ctlword));
CHECK_NOTCURSES(ncplane_rounded_box_sized(
self->ncplane_ptr,
(uint32_t)styles,
(uint64_t)channels,
ylen, xlen,
ctlword));
Py_RETURN_NONE;
}
static PyObject *
NcPlane_cells_double_box(NcPlaneObject *Py_UNUSED(self), PyObject *Py_UNUSED(args), PyObject *Py_UNUSED(kwds))
{
PyErr_SetString(PyExc_NotImplementedError, "TODO when cells are added");
return NULL;
// nccells_double_box
}
static PyObject *
NcPlane_double_box(NcPlaneObject *self, PyObject *args, PyObject *kwds)
{
unsigned long styles = 0;
unsigned long long channels = 0;
int ylen = 0, xlen = 0;
unsigned int ctlword = 0;
char *keywords[] = {"styles",
"channels",
"ylen", "xlen",
"ctlword",
NULL};
GNU_PY_CHECK_INT(
PyArg_ParseTupleAndKeywords(
args, kwds, "kK ii I", keywords,
&styles, &channels,
&ylen, &xlen,
&ctlword));
CHECK_NOTCURSES(ncplane_double_box(
self->ncplane_ptr,
(uint32_t)styles,
(uint64_t)channels,
ylen, xlen,
ctlword));
Py_RETURN_NONE;
}
static PyObject *
NcPlane_perimeter_double(NcPlaneObject *self, PyObject *args, PyObject *kwds)
{
unsigned long styles = 0;
unsigned long long channels = 0;
unsigned int ctlword = 0;
char *keywords[] = {"styles",
"channels",
"ctlword",
NULL};
GNU_PY_CHECK_INT(
PyArg_ParseTupleAndKeywords(
args, kwds, "kK I", keywords,
&styles, &channels,
&ctlword));
CHECK_NOTCURSES(ncplane_perimeter_double(
self->ncplane_ptr,
(uint32_t)styles,
(uint64_t)channels,
ctlword));
Py_RETURN_NONE;
}
static PyObject *
NcPlane_double_box_sized(NcPlaneObject *self, PyObject *args, PyObject *kwds)
{
unsigned long styles = 0;
unsigned long long channels = 0;
int ylen = 0, xlen = 0;
unsigned int ctlword = 0;
char *keywords[] = {"styles",
"channels",
"ylen", "xlen",
"ctlword",
NULL};
GNU_PY_CHECK_INT(
PyArg_ParseTupleAndKeywords(
args, kwds, "kK ii I", keywords,
&styles, &channels,
&ylen, &xlen,
&ctlword));
CHECK_NOTCURSES(ncplane_double_box_sized(
self->ncplane_ptr,
(uint32_t)styles,
(uint64_t)channels,
ylen, xlen,
ctlword));
Py_RETURN_NONE;
}
static PyObject *
NcPlane_ncvisual_from_plane(NcPlaneObject *Py_UNUSED(self), PyObject *Py_UNUSED(args), PyObject *Py_UNUSED(kwds))
{
PyErr_SetString(PyExc_NotImplementedError, "TODO when visual is added");
return NULL;
// ncvisual_from_plane
}
static PyObject *
NcPlane_as_rgba(NcPlaneObject *Py_UNUSED(self), PyObject *Py_UNUSED(args), PyObject *Py_UNUSED(kwds))
{
PyErr_SetString(PyExc_NotImplementedError, "TODO when visual is added");
return NULL;
// ncplane_as_rgba
}
static PyObject *
NcPlane_reel_create(NcPlaneObject *Py_UNUSED(self), PyObject *Py_UNUSED(args), PyObject *Py_UNUSED(kwds))
{
PyErr_SetString(PyExc_NotImplementedError, "TODO when NcReel is added");
return NULL;
// ncreel_create
}
static PyObject *
NcPlane_greyscale(NcPlaneObject *self, PyObject *Py_UNUSED(args))
{
ncplane_greyscale(self->ncplane_ptr);
Py_RETURN_NONE;
}
static PyObject *
NcPlane_selector_create(NcPlaneObject *Py_UNUSED(self), PyObject *Py_UNUSED(args), PyObject *Py_UNUSED(kwds))
{
PyErr_SetString(PyExc_NotImplementedError, "TODO when NcSelector is added");
return NULL;
// ncselector_create
}
static PyObject *
NcPlane_multiselector_create(NcPlaneObject *Py_UNUSED(self), PyObject *Py_UNUSED(args), PyObject *Py_UNUSED(kwds))
{
PyErr_SetString(PyExc_NotImplementedError, "TODO when NcSelector is added");
return NULL;
// ncmultiselector_create
}
static PyObject *
NcPlane_tree_create(NcPlaneObject *Py_UNUSED(self), PyObject *Py_UNUSED(args), PyObject *Py_UNUSED(kwds))
{
PyErr_SetString(PyExc_NotImplementedError, "TODO when NcTree is added");
return NULL;
// nctree_create
}
static PyObject *
NcPlane_menu_create(NcPlaneObject *Py_UNUSED(self), PyObject *Py_UNUSED(args), PyObject *Py_UNUSED(kwds))
{
PyErr_SetString(PyExc_NotImplementedError, "TODO when NcMenu is added");
return NULL;
// ncmenu_create
}
static PyObject *
NcPlane_progbar_create(NcPlaneObject *Py_UNUSED(self), PyObject *Py_UNUSED(args), PyObject *Py_UNUSED(kwds))
{
PyErr_SetString(PyExc_NotImplementedError, "TODO when NcProgbar is added");
return NULL;
// ncprogbar_create
}
static PyObject *
NcPlane_tabbed_create(NcPlaneObject *Py_UNUSED(self), PyObject *Py_UNUSED(args), PyObject *Py_UNUSED(kwds))
{
PyErr_SetString(PyExc_NotImplementedError, "TODO when NcTabbed is added");
return NULL;
// nctabbed_create
}
static PyObject *
NcPlane_uplot_create(NcPlaneObject *Py_UNUSED(self), PyObject *Py_UNUSED(args), PyObject *Py_UNUSED(kwds))
{
PyErr_SetString(PyExc_NotImplementedError, "TODO when NcUplot is added");
return NULL;
// ncuplot_create
}
static PyObject *
NcPlane_dplot_create(NcPlaneObject *Py_UNUSED(self), PyObject *Py_UNUSED(args), PyObject *Py_UNUSED(kwds))
{
PyErr_SetString(PyExc_NotImplementedError, "TODO when NcDplot is added");
return NULL;
// ncdplot_create
}
static PyObject *
NcPlane_fdplane_create(NcPlaneObject *Py_UNUSED(self), PyObject *Py_UNUSED(args), PyObject *Py_UNUSED(kwds))
{
PyErr_SetString(PyExc_NotImplementedError, "TODO when NcFdPlane is added");
return NULL;
// ncfdplane_create
}
static PyObject *
NcPlane_subproc_createv(NcPlaneObject *Py_UNUSED(self), PyObject *Py_UNUSED(args), PyObject *Py_UNUSED(kwds))
{
PyErr_SetString(PyExc_NotImplementedError, "TODO when NcFdPlane is added");
return NULL;
// ncsubproc_createv
}
static PyObject *
NcPlane_subproc_createvp(NcPlaneObject *Py_UNUSED(self), PyObject *Py_UNUSED(args), PyObject *Py_UNUSED(kwds))
{
PyErr_SetString(PyExc_NotImplementedError, "TODO when NcFdPlane is added");
return NULL;
// ncsubproc_createvp
}
static PyObject *
NcPlane_subproc_createvpe(NcPlaneObject *Py_UNUSED(self), PyObject *Py_UNUSED(args), PyObject *Py_UNUSED(kwds))
{
PyErr_SetString(PyExc_NotImplementedError, "TODO when NcFdPlane is added");
return NULL;
// ncsubproc_createvpe
}
static PyObject *
NcPlane_qrcode(NcPlaneObject *self, PyObject *args)
{
const char *data = NULL;
Py_ssize_t len = 0;
GNU_PY_CHECK_INT(PyArg_ParseTuple(args, "s#", &data, &len));
int ymax = 0, xmax = 0;
CHECK_NOTCURSES(ncplane_qrcode(self->ncplane_ptr, &ymax, &xmax, (void *)data, (size_t)len));
return Py_BuildValue("ii", &ymax, &xmax);
}
static PyObject *
NcPlane_reader_create(NcPlaneObject *Py_UNUSED(self), PyObject *Py_UNUSED(args), PyObject *Py_UNUSED(kwds))
{
PyErr_SetString(PyExc_NotImplementedError, "TODO when NcReader is added");
return NULL;
// ncreader_create
}
static PyObject *
NcPlane_pile_top(NcPlaneObject *self, PyObject *Py_UNUSED(args))
{
PyObject *new_object = NcPlane_Type.tp_alloc((PyTypeObject *)&NcPlane_Type, 0);
NcPlaneObject *new_plane = (NcPlaneObject *)new_object;
new_plane->ncplane_ptr = ncpile_top(self->ncplane_ptr);
return new_object;
}
static PyObject *
NcPlane_pile_bottom(NcPlaneObject *self, PyObject *Py_UNUSED(args))
{
PyObject *new_object = NcPlane_Type.tp_alloc((PyTypeObject *)&NcPlane_Type, 0);
NcPlaneObject *new_plane = (NcPlaneObject *)new_object;
new_plane->ncplane_ptr = ncpile_bottom(self->ncplane_ptr);
return new_object;
}
static PyObject *
NcPlane_pile_render(NcPlaneObject *self, PyObject *Py_UNUSED(args))
{
ncpile_render(self->ncplane_ptr);
Py_RETURN_NONE;
}
static PyObject *
NcPlane_pile_rasterize(NcPlaneObject *self, PyObject *Py_UNUSED(args))
{
ncpile_rasterize(self->ncplane_ptr);
Py_RETURN_NONE;
}
/*
static PyObject *
NcPlane_(NcPlaneObject *self, PyObject *args)
@ -1121,7 +1775,85 @@ static PyMethodDef NcPlane_methods[] = {
{"mergedown", (void *)NcPlane_mergedown, METH_VARARGS | METH_KEYWORDS, PyDoc_STR("Merge with parameters the ncplane down onto the passed ncplane.")},
{"erase", (PyCFunction)NcPlane_erase, METH_NOARGS, PyDoc_STR("Erase every cell in the ncplane.")},
// {"", () NULL, METH_VARARGS, PyDoc_STR("")},
{"bchannel", (PyCFunction)NcPlane_bchannel, METH_NOARGS, PyDoc_STR("Extract the 32-bit working background channel from an ncplane.")},
{"fchannel", (PyCFunction)NcPlane_fchannel, METH_NOARGS, PyDoc_STR("Extract the 32-bit working foreground channel from an ncplane.")},
{"set_channels", (PyCFunction)NcPlane_set_channels, METH_VARARGS, PyDoc_STR("Set both foreground and background channels of the plane.")},
{"set_styles", (PyCFunction)NcPlane_set_styles, METH_VARARGS, PyDoc_STR("Set the specified style bits for the ncplane 'n', whether they're actively supported or not.")},
{"on_styles", (PyCFunction)NcPlane_on_styles, METH_VARARGS, PyDoc_STR("Add the specified styles to the ncplane's existing spec.")},
{"off_styles", (PyCFunction)NcPlane_off_styles, METH_VARARGS, PyDoc_STR("Remove the specified styles from the ncplane's existing spec.")},
{"fg_rgb", (PyCFunction)NcPlane_fg_rgb, METH_NOARGS, PyDoc_STR("Extract 24 bits of working foreground RGB from an ncplane, shifted to LSBs.")},
{"bg_rgb", (PyCFunction)NcPlane_bg_rgb, METH_NOARGS, PyDoc_STR("Extract 24 bits of working background RGB from an ncplane, shifted to LSBs.")},
{"fg_alpha", (PyCFunction)NcPlane_fg_alpha, METH_NOARGS, PyDoc_STR("Extract 2 bits of foreground alpha from 'struct ncplane', shifted to LSBs.")},
{"fg_default_p", (PyCFunction)NcPlane_fg_default_p, METH_NOARGS, PyDoc_STR("Is the plane's foreground using the \"default foreground color\"?")},
{"bg_alpha", (PyCFunction)NcPlane_bg_alpha, METH_NOARGS, PyDoc_STR("Extract 2 bits of background alpha from 'struct ncplane', shifted to LSBs.")},
{"bg_default_p", (PyCFunction)NcPlane_bg_default_p, METH_NOARGS, PyDoc_STR("Is the plane's background using the \"default background color\"?")},
{"fg_rgb8", (PyCFunction)NcPlane_fg_rgb8, METH_NOARGS, PyDoc_STR("Extract 24 bits of foreground RGB from 'n', split into components.")},
{"bg_rgb8", (PyCFunction)NcPlane_bg_rgb8, METH_NOARGS, PyDoc_STR("Extract 24 bits of background RGB from 'n', split into components.")},
{"set_fchannel", (PyCFunction)NcPlane_set_fchannel, METH_VARARGS, PyDoc_STR("Set an entire foreground channel of the plane, return new channels.")},
{"set_bchannel", (PyCFunction)NcPlane_set_bchannel, METH_VARARGS, PyDoc_STR("Set an entire background channel of the plane, return new channels.")},
{"set_fg_rgb8", (PyCFunction)NcPlane_set_fg_rgb8, METH_VARARGS, PyDoc_STR("Set the current foreground color using RGB specifications.")},
{"set_bg_rgb8", (PyCFunction)NcPlane_set_bg_rgb8, METH_VARARGS, PyDoc_STR("Set the current background color using RGB specifications.")},
{"set_bg_rgb8_clipped", (PyCFunction)NcPlane_set_bg_rgb8_clipped, METH_VARARGS, PyDoc_STR("Set the current foreground color using RGB specifications but clipped to [0..255].")},
{"set_fg_rgb8_clipped", (PyCFunction)NcPlane_set_fg_rgb8_clipped, METH_VARARGS, PyDoc_STR("Set the current background color using RGB specifications but clipped to [0..255].")},
{"set_fg_rgb", (PyCFunction)NcPlane_set_fg_rgb, METH_VARARGS, PyDoc_STR("Set the current foreground color using channel.")},
{"set_bg_rgb", (PyCFunction)NcPlane_set_bg_rgb, METH_VARARGS, PyDoc_STR("Set the current background color using channel.")},
{"set_fg_default", (PyCFunction)NcPlane_set_fg_default, METH_NOARGS, PyDoc_STR("Use the default color for the foreground.")},
{"set_bg_default", (PyCFunction)NcPlane_set_bg_default, METH_NOARGS, PyDoc_STR("Use the default color for the background.")},
{"set_fg_palindex", (PyCFunction)NcPlane_set_fg_palindex, METH_VARARGS, PyDoc_STR("Set the ncplane's foreground palette index.")},
{"set_bg_palindex", (PyCFunction)NcPlane_set_bg_palindex, METH_VARARGS, PyDoc_STR("Set the ncplane's background palette index.")},
{"set_fg_alpha", (PyCFunction)NcPlane_set_fg_alpha, METH_VARARGS, PyDoc_STR("Set the foreground alpha parameters for the plane.")},
{"set_bg_alpha", (PyCFunction)NcPlane_set_bg_alpha, METH_VARARGS, PyDoc_STR("Set the background alpha parameters for the plane.")},
{"fadeout", (PyCFunction)NcPlane_fadeout, METH_VARARGS, PyDoc_STR("Fade the ncplane out over the provided time, calling 'fader' at each iteration.")},
{"fadein", (PyCFunction)NcPlane_fadein, METH_VARARGS, PyDoc_STR("Fade the ncplane in over the specified time. ")},
{"fade_setup", (PyCFunction)NcPlane_fade_setup, METH_VARARGS, PyDoc_STR("Create NcFadeCtx.")},
{"fadeout_iteration", (PyCFunction)NcPlane_fadeout_iteration, METH_VARARGS, PyDoc_STR("TODO")},
{"fadein_iteration", (PyCFunction)NcPlane_fadein_iteration, METH_VARARGS, PyDoc_STR("TODO")},
{"pulse", (PyCFunction)NcPlane_pulse, METH_VARARGS, PyDoc_STR("Pulse the plane in and out until the callback returns non-zero.")},
{"cells_load_box", (void *)NcPlane_cells_load_box, METH_VARARGS | METH_KEYWORDS, PyDoc_STR("Load up six cells with the EGCs necessary to draw a box.")},
{"cells_rounded_box", (void *)NcPlane_cells_rounded_box, METH_VARARGS | METH_KEYWORDS, PyDoc_STR("Load up six cells with the EGCs necessary to draw a round box.")},
{"perimeter_rounded", (void *)NcPlane_perimeter_rounded, METH_VARARGS, PyDoc_STR("Draw a perimeter around plane.")},
{"rounded_box_sized", (void *)NcPlane_rounded_box_sized, METH_VARARGS | METH_KEYWORDS, PyDoc_STR("Draw a round box around plane.")},
{"cells_double_box", (void *)NcPlane_cells_double_box, METH_VARARGS | METH_KEYWORDS, PyDoc_STR("Draw a double box with cells.")},
{"double_box", (void *)NcPlane_double_box, METH_VARARGS | METH_KEYWORDS, PyDoc_STR("Draw a double box.")},
{"perimeter_double", (void *)NcPlane_perimeter_double, METH_VARARGS | METH_KEYWORDS, PyDoc_STR("Draw a double perimeter.")},
{"double_box_sized", (void *)NcPlane_double_box_sized, METH_VARARGS | METH_KEYWORDS, PyDoc_STR("Draw a double box sized.")},
{"ncvisual_from_plane", (void *)NcPlane_ncvisual_from_plane, METH_VARARGS | METH_KEYWORDS, PyDoc_STR("Promote an plane to an NcVisual.")},
{"as_rgba", (void *)NcPlane_as_rgba, METH_VARARGS | METH_KEYWORDS, PyDoc_STR("Create an RGBA flat array from the selected region of the plane.")},
{"reel_create", (void *)NcPlane_reel_create, METH_VARARGS | METH_KEYWORDS, PyDoc_STR("Take over the plane and use it to draw a reel.")},
{"greyscale", (PyCFunction)NcPlane_greyscale, METH_NOARGS, PyDoc_STR("Convert the plane's content to greyscale.")},
{"selector_create", (void *)NcPlane_selector_create, METH_VARARGS | METH_KEYWORDS, PyDoc_STR("Create NcSelector.")},
{"multiselector_create", (void *)NcPlane_multiselector_create, METH_VARARGS | METH_KEYWORDS, PyDoc_STR("Create MultiSelector.")},
{"tree_create", (void *)NcPlane_tree_create, METH_VARARGS | METH_KEYWORDS, PyDoc_STR("Create NcTree.")},
{"menu_create", (void *)NcPlane_menu_create, METH_VARARGS | METH_KEYWORDS, PyDoc_STR("Create NcMenu.")},
{"progbar_create", (void *)NcPlane_progbar_create, METH_VARARGS | METH_KEYWORDS, PyDoc_STR("Create NcProgbar.")},
{"tabbed_create", (void *)NcPlane_tabbed_create, METH_VARARGS | METH_KEYWORDS, PyDoc_STR("Create NcProgbar.")},
{"uplot_create", (void *)NcPlane_uplot_create, METH_VARARGS | METH_KEYWORDS, PyDoc_STR("Create NcUplot.")},
{"dplot_create", (void *)NcPlane_dplot_create, METH_VARARGS | METH_KEYWORDS, PyDoc_STR("Create NcDplot.")},
{"fdplane_create", (void *)NcPlane_fdplane_create, METH_VARARGS | METH_KEYWORDS, PyDoc_STR("Create NcFdPlane.")},
{"subproc_createv", (void *)NcPlane_subproc_createv, METH_VARARGS | METH_KEYWORDS, PyDoc_STR("Create subprocess plane.")},
{"subproc_createvp", (void *)NcPlane_subproc_createvp, METH_VARARGS | METH_KEYWORDS, PyDoc_STR("Create subprocess plane.")},
{"subproc_createvpe", (void *)NcPlane_subproc_createvpe, METH_VARARGS | METH_KEYWORDS, PyDoc_STR("Create subprocess plane.")},
{"qrcode", (void *)NcPlane_qrcode, METH_VARARGS, PyDoc_STR("Create QR code, return y and x size.")},
{"reader_create", (void *)NcPlane_reader_create, METH_VARARGS | METH_KEYWORDS, PyDoc_STR("Create NcReader.")},
{"pile_top", (PyCFunction)NcPlane_pile_top, METH_NOARGS, PyDoc_STR("Return the topmost plane of the pile.")},
{"pile_bottom", (PyCFunction)NcPlane_pile_bottom, METH_NOARGS, PyDoc_STR("Return the bottommost plane of the pile.")},
{"pile_render", (PyCFunction)NcPlane_pile_render, METH_NOARGS, PyDoc_STR("Renders the pile of which plane is a part.")},
{"pile_rasterize", (PyCFunction)NcPlane_pile_rasterize, METH_NOARGS, PyDoc_STR("Make the physical screen match the last rendered frame from the pile.")},
// {"", (PyCFunction) NULL, METH_VARARGS, PyDoc_STR("")},
{NULL, NULL, 0, NULL},
};