17 #include "jit.common.h"
18 #include "TTClassWrapperMax.h"
22 typedef struct _j_stencil {
29 typedef StencilObject* StencilObjectPtr;
33 t_jit_err StencilClassInit (
void);
34 StencilObjectPtr StencilNew (
void);
35 void StencilFree (StencilObjectPtr
self);
36 t_jit_err StencilMatrixCalc (StencilObjectPtr
self,
void *inputs,
void *outputs);
37 t_jit_err StencilGetStepSize (StencilObjectPtr
self, Ptr attr, AtomCount* ac, AtomPtr* av);
38 t_jit_err StencilSetStepSize (StencilObjectPtr
self, Ptr attr, AtomCount ac, AtomPtr av);
39 t_jit_err StencilGetEdges (StencilObjectPtr
self, Ptr attr, AtomCount* ac, AtomPtr* av);
40 t_jit_err StencilSetEdges (StencilObjectPtr
self, Ptr attr, AtomCount ac, AtomPtr av);
44 static ClassPtr sStencilClass = NULL;
49 t_jit_err StencilClassInit(
void)
55 sStencilClass = (ClassPtr)jit_class_new((
char*)
"j_stencil", (method)StencilNew, (method)StencilFree,
sizeof(StencilObject), 0);
58 mop = (t_jit_object*)jit_object_new(_jit_sym_jit_mop, 1, 1);
59 jit_class_addadornment(sStencilClass, mop);
62 jit_class_addmethod(sStencilClass, (method)StencilMatrixCalc, (
char*)
"matrix_calc", A_CANT, 0);
65 attr = (t_jit_object*)jit_object_new(_jit_sym_jit_attr_offset_array,
68 JIT_MATRIX_MAX_PLANECOUNT,
70 (method)StencilGetStepSize, (method)StencilSetStepSize,
72 jit_class_addattr(sStencilClass, attr);
74 attr = (t_jit_object*)jit_object_new(_jit_sym_jit_attr_offset,
78 (method)StencilGetEdges, (method)StencilSetEdges,
80 jit_class_addattr(sStencilClass, attr);
84 jit_class_register(sStencilClass);
92 StencilObjectPtr StencilNew(
void)
94 StencilObjectPtr
self = (StencilObjectPtr)jit_object_alloc(sStencilClass);
107 void StencilFree(StencilObjectPtr
self)
120 t_jit_err StencilMatrixCalc(StencilObjectPtr
self,
void *inputs,
void *outputs)
122 t_jit_err err = JIT_ERR_NONE;
128 in_matrix = jit_object_method(inputs,_jit_sym_getindex,0);
129 out_matrix = jit_object_method(outputs,_jit_sym_getindex,0);
131 if (
self && in_matrix && out_matrix) {
132 in_savelock = TTMatrixReferenceJitterMatrix(self->x, in_matrix);
133 out_savelock = TTMatrixReferenceJitterMatrix(self->y, out_matrix);
135 TTMatrixCopyDataFromJitterMatrix(self->x, in_matrix);
136 self->stencilObject->calculate(self->x, self->y);
137 TTMatrixCopyDataToJitterMatrix(self->y, out_matrix);
139 jit_object_method(out_matrix, _jit_sym_lock, out_savelock);
140 jit_object_method(in_matrix, _jit_sym_lock, in_savelock);
143 return JIT_ERR_INVALID_PTR;
152 t_jit_err StencilGetStepSize(StencilObjectPtr
self, Ptr attr, AtomCount* ac, AtomPtr* av)
160 *av = (AtomPtr)sysmem_newptr(
sizeof(Atom)*2);
164 self->stencilObject->getAttributeValue(
TT(
"stepSize"), v);
165 for (AtomCount k=0; k < *ac; k++) {
169 atom_setlong((*av)+k, step);
175 t_jit_err StencilSetStepSize(StencilObjectPtr
self, Ptr attr, AtomCount ac, AtomPtr av)
180 for (AtomCount k=0; k<ac; k++)
181 v.
set(k, (
int)atom_getlong(av+k));
183 self->stencilObject->setAttributeValue(
TT(
"stepSize"), v);
188 t_jit_err StencilGetEdges(StencilObjectPtr
self, Ptr attr, AtomCount* ac, AtomPtr* av)
197 *av = (AtomPtr)sysmem_newptr(
sizeof(Atom));
201 self->stencilObject->getAttributeValue(
TT(
"edges"), v);
203 atom_setsym(*av, gensym(s.
c_str()));
208 t_jit_err StencilSetEdges(StencilObjectPtr
self, Ptr attr, AtomCount ac, AtomPtr av)
210 self->stencilObject->setAttributeValue(
TT(
"edges"),
TT(atom_getsym(av)->s_name));
TTErr TTObjectBaseRelease(TTObjectBasePtr *anObject)
DEPRECATED.
TTDataObjectBase is the base class for all data generating and processing objects.
Base class for all first-class Jamoma objects.
#define TT
This macro is defined as a shortcut for doing a lookup in the symbol table.
void setSize(const TTUInt16 arg)
DEPRECATED.
The TTSymbol class is used to represent a string and efficiently pass and compare that string...
TTErr TTObjectBaseInstantiate(const TTSymbol className, TTObjectBasePtr *returnedObjectPtr, const TTValue arguments)
DEPRECATED.
void get(const TTUInt16 index, T &returnedElementValue) const
DEPRECATED.
const char * c_str() const
Return a pointer to the internal string as a C-string.
std::int32_t TTInt32
32 bit signed integer
void set(const TTUInt16 index, const T &anElementValue)
DEPRECATED.
TTErr
Jamoma Error Codes Enumeration of error codes that might be returned by any of the TTBlue functions a...
[doxygenAppendixC_copyExample]