diff options
-rw-r--r-- | externals/grill/guitest/flgui.cpp | 646 | ||||
-rw-r--r-- | externals/grill/guitest/flgui.h | 232 | ||||
-rw-r--r-- | externals/grill/guitest/flguiobj.cpp | 801 | ||||
-rw-r--r-- | externals/grill/guitest/flguiobj.h | 362 | ||||
-rw-r--r-- | externals/grill/guitest/guitest.dsp | 112 | ||||
-rw-r--r-- | externals/grill/guitest/main.cpp | 152 |
6 files changed, 0 insertions, 2305 deletions
diff --git a/externals/grill/guitest/flgui.cpp b/externals/grill/guitest/flgui.cpp deleted file mode 100644 index 86d8e4ea..00000000 --- a/externals/grill/guitest/flgui.cpp +++ /dev/null @@ -1,646 +0,0 @@ -#include "flgui.h" -#include "flguiobj.h" -#include "flinternal.h" - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> - - -#ifdef PD -t_class *flext_gui::px_class = NULL; -t_class *flext_gui::pxkey_class = NULL; - -struct flext_gui::px_object // no virtual table! -{ - t_object obj; // MUST reside at memory offset 0 - t_canvas *canv; - - void init(t_canvas *c) { canv = c; } -}; - -struct flext_gui::pxkey_object // no virtual table! -{ - t_object obj; // MUST reside at memory offset 0 - flext_gui *th; - - void init(flext_gui *t) { th = t; } -}; -#endif - - -flext_gui::flext_gui(int xs,int ys): - objs(NULL), -#ifdef PD - xsize(xs),ysize(ys), -#endif -#ifdef MAXMSP - curx(-1),cury(-1),curmod(-1), - created(false), -#endif - bindsym(NULL) -{ - canvas = new Canvas(thisCanvas()); - objs = new GuiGroup(canvas); - -#ifdef PD - AddCanvas(); -#else - t_box *b = (t_box *)gensym("#B")->s_thing; - - int x = b->b_rect.left,y = b->b_rect.top; - t_pxbox *p = thisHdr(); - box_new(&p->z_box, thisCanvas(), F_DRAWFIRSTIN | F_GROWBOTH | F_SAVVY,x,y,x+xs,y+ys); - p->z_box.b_firstin = (void *)p; /* it's not really an inlet */ - box_ready(&p->z_box); -#endif -} - -flext_gui::~flext_gui() -{ -#ifdef PD - RmvCanvas(); -#endif - - delete objs; - delete canvas; -} - - -void flext_gui::setup(t_class *c) -{ -#ifdef PD - SetWidget(c); - - pxkey_class = class_new(gensym("flext_gui key proxy"),NULL,NULL,sizeof(pxkey_object),CLASS_PD|CLASS_NOINLET, A_NULL); - add_anything(pxkey_class,pxkey_method); - pxkey = (pxkey_object *)pd_new(pxkey_class); - - pd_bind(&pxkey_class,gensym("#keyname")); -// pd_bind(&pxkey_class,gensym("#key")); -// pd_bind(&pxkey_class,gensym("#keyup")); - - gcanv = NULL; - -#ifdef DIRECT_TK - px_class = class_new(gensym("flext_gui proxy"),NULL,NULL,sizeof(px_object),CLASS_PD|CLASS_NOINLET, A_NULL); - add_anything(px_class,px_method); - - gcm_motion = MakeSymbol("_tk_motion"); - gcm_mousekey = MakeSymbol("_tk_mousekey"); - gcm_mousewheel = MakeSymbol("_tk_mousewheel"); - gcm_key = MakeSymbol("_tk_key"); - gcm_destroy = MakeSymbol("_tk_destroy"); -#endif - - // this is wrong if a modifier key is pressed during creation of the first object..... - curmod = 0; -#else - addmess((method)sg_update, "update", A_CANT, A_NULL); - addmess((method)sg_click, "click", A_CANT, A_NULL); - addmess((method)sg_psave, "psave", A_CANT, A_NULL); - addmess((method)sg_bfont, "bfont", A_CANT, A_NULL); - addmess((method)sg_key, "key", A_CANT, A_NULL); - addmess((method)sg_bidle, "bidle", A_CANT, A_NULL); -#endif -} - -#ifdef PD - -int flext_gui::evmask = evMotion|evMouseDown|evKeyDown|evKeyUp; -int flext_gui::curmod = 0; -flext_gui::pxkey_object *flext_gui::pxkey = NULL; -flext_gui::guicanv *flext_gui::gcanv = NULL; - -#ifdef DIRECT_TK -const t_symbol *flext_gui::gcm_motion = NULL; -const t_symbol *flext_gui::gcm_mousekey = NULL; -const t_symbol *flext_gui::gcm_mousewheel = NULL; -const t_symbol *flext_gui::gcm_key = NULL; -const t_symbol *flext_gui::gcm_destroy = NULL; - -void flext_gui::px_method(px_object *obj,const t_symbol *s,int argc,t_atom *argv) -{ - guicanv *ix = gcanv; - for(; ix && ix->canv != obj->canv; ix = ix->nxt); - - if(ix) { - CBParams parms; - - if(s == gcm_motion) { - parms.kind = evMotion; - parms.pMotion.x = GetAInt(argv[0]); - parms.pMotion.y = GetAInt(argv[1]); - parms.pMotion.mod = GetAInt(argv[2]); - } - else if(s == gcm_mousekey) { - parms.kind = GetAInt(argv[0])?evMouseDown:evMouseUp; - parms.pMouseKey.x = GetAInt(argv[1]); - parms.pMouseKey.y = GetAInt(argv[2]); - parms.pMouseKey.b = GetAInt(argv[3]); - parms.pMouseKey.mod = GetAInt(argv[4]); - } - else if(s == gcm_mousewheel) { - parms.kind = evMouseWheel; - parms.pMouseWheel.x = GetAInt(argv[0]); - parms.pMouseWheel.y = GetAInt(argv[1]); - parms.pMouseWheel.mod = GetAInt(argv[2]); - parms.pMouseWheel.delta = GetAInt(argv[3]); - } - else if(s == gcm_key) { - parms.kind = GetAInt(argv[0])?evKeyDown:evKeyUp; - parms.pKey.k = GetAInt(argv[1]); - parms.pKey.a = GetAInt(argv[2]); -// parms.pKey.n = GetAInt(argv[3]); - parms.pKey.mod = GetAInt(argv[4]); - } - else if(s == gcm_destroy) { -// post("TK destroy"); - DelCanvas(ix->canv); - } - - if(parms.kind != evNone) { - for(canvobj *co = ix->head; co; co = co->nxt) - co->guiobj->m_Method(parms); - } - - } - else - error("flext_gui: canvas not found!"); -} - -#endif - -static const char *extkeys[] = { - "Escape","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12", - "Prior","Next","Home","End","Delete","Insert","" -}; - -void flext_gui::pxkey_method(pxkey_object *obj,const t_symbol *s,int argc,t_atom *argv) -{ -/* - if(s == sym_float && argc == 1) { - lastkey = GetInt(argv[0]); - } - else -*/ - if(s == sym_list && argc == 2) { - CBParams p; - - bool down = GetABool(argv[0]); - const char *str = GetString(argv[1]); - int code = str[0]; - int asc = code; - int mod = mod_None; - if(code && str[1] != 0) { - code = asc = 0; - if(GetSymbol(argv[1]) == MakeSymbol("Shift_L") || GetSymbol(argv[1]) == MakeSymbol("Shift_R")) { - code = 2001; - mod = mod_Shift; - } - else if(GetSymbol(argv[1]) == MakeSymbol("Control_L") || GetSymbol(argv[1]) == MakeSymbol("Control_R")) { - code = 2002; - mod = mod_Ctrl; - } - else if(GetSymbol(argv[1]) == MakeSymbol("Alt_L") || GetSymbol(argv[1]) == MakeSymbol("Alt_R")) { - code = 2003; - mod = mod_Alt; - } - else { - for(int i = 0;; ++i) { - const char *ci = extkeys[i]; - if(!*ci) break; - if(GetSymbol(argv[1]) == MakeSymbol(ci)) { - code = 1000+i; - break; - } - } - } -#ifdef DEBUG - else - post("unknown modifier %s",str); -#endif - } - - if(down) curmod |= mod; - else curmod &= ~mod; - -// post("Key down=%i c=%c mod=%i",down?1:0,code,curmod); - - if(code || mod) { - // button is pressed - p.kind = down?evKeyDown:evKeyUp; - p.ext = true; - p.pKey.k = code; //lastkey; - p.pKey.a = asc; - p.pKey.mod = curmod; - - for(guicanv *ix = gcanv; ix; ix = ix->nxt) - for(canvobj *ci = ix->head; ci; ci = ci->nxt) - ci->guiobj->m_Method(p); - } - } - else - post("flext_gui key proxy - unknown method"); -} - - -flext_gui::guicanv::guicanv(t_canvas *c): - canv(c),nxt(NULL),ref(0), - head(NULL),tail(NULL) -{ - char tmp[25]; - sprintf(tmp,"FLCANV%x",c); - sym = MakeSymbol(tmp); - -#ifdef DIRECT_TK - // proxy for canvas messages - (px = (px_object *)pd_new(px_class))->init(c); -#endif -} - -flext_gui::guicanv::~guicanv() -{ -#ifdef DIRECT_TK - if(px) pd_free(&px->obj.ob_pd); -#endif -} - -void flext_gui::guicanv::Push(flext_gui *o) -{ - canvobj *co = new canvobj(o); - if(tail) tail->nxt = co; - tail = co; - if(!head) head = tail; - - ++ref; -} - -void flext_gui::guicanv::Pop(flext_gui *o) -{ - canvobj *prv = NULL,*ix = head; - for(; ix && ix->guiobj != o; prv = ix,ix = ix->nxt); - - if(ix) { - --ref; - if(prv) prv->nxt = ix->nxt; - else head = ix->nxt; - if(!ix->nxt) tail = prv; - } - else - error("flext_gui: object not found in canvas!"); -} - - -void flext_gui::AddCanvas() -{ - t_canvas *c = thisCanvas(); - guicanv *prv = NULL,*ix = gcanv; - for(; ix && ix->canv != c; prv = ix,ix = ix->nxt); - - if(ix) { - ix->Push(this); - } - else { - guicanv *nc = new guicanv(c); - if(prv) prv->nxt = nc; - else gcanv = nc; - - nc->Push(this); - -#ifdef DIRECT_TK - pd_bind(&nc->px->obj.ob_pd,(t_symbol *)nc->sym); - -/* - // initialize new canvas object - sys_vgui("bind .x%x.c <Motion> {pd %s %s %%x %%y %%s \\;}\n",c,GetString(nc->sym),GetString(gcm_motion)); - - sys_vgui("bind .x%x.c <ButtonPress> {pd %s %s 1 %%x %%y %%b %%s \\;}\n",c,GetString(nc->sym),GetString(gcm_mousekey)); - sys_vgui("bind .x%x.c <ButtonRelease> {pd %s %s 0 %%x %%y %%b %%s \\;}\n",c,GetString(nc->sym),GetString(gcm_mousekey)); - sys_vgui("bind .x%x.c <MouseWheel> {pd %s %s %%x %%y %%s %%D \\;}\n",c,GetString(nc->sym),GetString(gcm_mousewheel)); - sys_vgui("bind .x%x.c <KeyPress> {pd %s %s 1 %%k %%A %%N %%s \\;}\n",c,GetString(nc->sym),GetString(gcm_key)); - sys_vgui("bind .x%x.c <KeyRelease> {pd %s %s 0 %%k %%A %%N %%s \\;}\n",c,GetString(nc->sym),GetString(gcm_key)); - - // what happend to objects in subpatchers? - sys_vgui("bind .x%x.c <Destroy> {pd %s %s \\;}\n",c,GetString(nc->sym),GetString(gcm_destroy)); - - // sys_vgui("bind .x%x.c <Visibility> {pd %s %s %x %s \\;}\n",c,GetString(nc->sym),"_tk_visibility",this); -*/ -#endif - } -} - -void flext_gui::RmvCanvas() -{ - guicanv *ix = gcanv; - for(; ix && ix->canv != thisCanvas(); ix = ix->nxt); - - if(ix) { - ix->Pop(this); - if(!ix->Refs()) DelCanvas(thisCanvas()); - } - else { - error("flext_gui: Canvas not found!"); - } -} - -void flext_gui::DelCanvas(t_canvas *c) -{ - guicanv *prv = NULL,*ix = gcanv; - for(; ix && ix->canv != c; prv = ix,ix = ix->nxt); - - if(ix) { -#ifdef DIRECT_TK - pd_unbind(&ix->px->obj.ob_pd,(t_symbol *)ix->sym); -#endif - - if(prv) prv->nxt = ix->nxt; - else gcanv = ix->nxt; - } - else { - error("flext_gui: Canvas not found!"); - } -} - -static GuiObj *GetGuiObj(const t_atom &a) -{ - GuiObj *th = NULL; - sscanf(flext::GetString(a),"%x",&th); - return th; -} - -void flext_gui::g_Displace(int dx, int dy) -{ -// post("Displace"); - - XLo(XLo()+dx); - YLo(YLo()+dy); - - Group().MoveRel(dx,dy); - FixLines(); -} - -void flext_gui::g_Delete() -{ - objs->Clear(); - DelLines(); -} - - - -t_widgetbehavior flext_gui::widgetbehavior; - -void flext_gui::SetWidget(t_class *c) -{ - // widgetbehavior struct MUST be resident... (static is just ok here) - - widgetbehavior.w_getrectfn = sg_getrect; - widgetbehavior.w_displacefn = sg_displace; - widgetbehavior.w_selectfn = sg_select; - widgetbehavior.w_activatefn = NULL; //sg_activate; - widgetbehavior.w_deletefn = sg_delete; - widgetbehavior.w_visfn = sg_vis; - widgetbehavior.w_clickfn = sg_click; - widgetbehavior.w_propertiesfn = sg_properties; - widgetbehavior.w_savefn = sg_save; - class_setwidget(c, &widgetbehavior); -} - -void flext_gui::sg_getrect(t_gobj *c, t_glist *,int *xp1, int *yp1, int *xp2, int *yp2) -{ - flext_gui *th = thisObject(c); - /*th->g_GetRect(*xp1,*yp1,*xp2,*yp2);*/ - *xp1 = th->XLo(),*yp1 = th->YLo(),*xp2 = th->XHi(),*yp2 = th->YHi(); -} - -void flext_gui::sg_displace(t_gobj *c, t_glist *, int dx, int dy) -{ - thisObject(c)->g_Displace(dx,dy); -} - -void flext_gui::sg_select(t_gobj *c, t_glist *, int selected) -{ -// post("Select"); - - flext_gui *th = thisObject(c); - th->g_Edit(th->selected = (selected != 0)); -} - -void flext_gui::sg_vis(t_gobj *c, t_glist *, int vis) -{ - post("Visible %i",vis); - - if(vis) { - flext_gui *g = thisObject(c); - g->g_Create(); - g->Group().MoveRel(g->XLo(),g->YLo()); - g->FixLines(); - } -} - -int flext_gui::sg_click(t_gobj *c, t_glist *,int xpix, int ypix, int shift, int alt, int dbl, int doit) -{ - flext_gui *g = thisObject(c); - CBParams p; - int x = xpix-g->XLo(); - int y = ypix-g->YLo(); - - // PD bug: shift isn't reported for idle mousing -// int mod = (alt?mod_Alt:0)+(shift?mod_Shift:0)+(dbl?mod_Double:0); - - if(doit) { - // button is pressed - p.kind = evMouseDown; - p.pMouseKey.x = x; - p.pMouseKey.y = y; - p.pMouseKey.b = 1; - p.pMouseKey.mod = curmod; //mod; - } - else { - // only mouse position change - p.kind = evMotion; - p.pMotion.x = x; - p.pMotion.y = y; - p.pMotion.mod = curmod; //mod; - } - g->m_Method(p); - return 1; -} - -void flext_gui::sg_delete(t_gobj *c, t_glist *) -{ - thisObject(c)->g_Delete(); -} - -void flext_gui::sg_properties(t_gobj *c, t_glist *) -{ - thisObject(c)->g_Properties(); -} - -void flext_gui::sg_save(t_gobj *c, t_binbuf *b) -{ - thisObject(c)->g_Save(b); -} - -/* -bool flext_gui::sg_Key(flext_base *c,int argc,t_atom *argv) -{ - return true; -} - -bool flext_gui::sg_KeyNum(flext_base *c,int &keynum) -{ - flext_gui *g = dynamic_cast<flext_gui *>(c); - post("KeyNum %i",keynum); - return true; -} - -bool flext_gui::sg_KeyUp(flext_base *c,int &keynum) -{ - flext_gui *g = dynamic_cast<flext_gui *>(c); - post("KeyUp %i",keynum); - return true; -} -*/ - -#else // MAXMSP - -int flext_gui::evmask = evMotion|evMouseDown|evKeyDown; - -static void dragfun() -{ -} - -static void tmfun() -{ -} - -void flext_gui::sg_click(t_object *x, Point pt, short m) -{ - flext_gui *g = thisObject(x); - CBParams p(evMouseDown); - p.pMouseKey.x = pt.h-g->XLo(); - p.pMouseKey.y = pt.v-g->YLo(); - p.pMouseKey.b = 0; - p.pMouseKey.mod = (m&256?mod_Meta:0)+(m&512?mod_Shift:0)+(m&1024?mod_Caps:0)+(m&2048?mod_Alt:0)+(m&4096?mod_Ctrl:0); - g->m_Method(p); -} - -void flext_gui::sg_update(t_object *x) -{ - flext_gui *g = thisObject(x); - if(!g->created) { g->g_Create(); g->created = true; } - - // draw elements - g->Update(); -} - -void flext_gui::sg_psave (t_object *x, t_binbuf *dest) { thisObject(x)->g_Save(dest); } - -void flext_gui::sg_bfont (t_object *x, short size, short font) {} - -void flext_gui::sg_key (t_object *x, short keyvalue) -{ - flext_gui *g = thisObject(x); - - CBParams p(evKeyDown); - p.pKey.k = keyvalue; - p.pKey.a = 0; - p.pKey.mod = 0; - g->m_Method(p); -} - -void flext_gui::sg_enter (t_object *x) {} - -void flext_gui::sg_clipregion (t_object *x, RgnHandle *rgn, short *result) {} - -void flext_gui::sg_bidle (t_object *x) -{ - flext_gui *g = thisObject(x); - Point pnt; GetMouse(&pnt); - - CBParams p(evMotion); - p.pMotion.x = pnt.h-g->XLo(); - p.pMotion.y = pnt.v-g->YLo(); - p.pMotion.mod = 0; - - if(p.pMotion.x != g->curx || p.pMotion.y != g->cury || p.pMotion.mod != g->curmod) { - g->m_Method(p); - g->curx = p.pMotion.x; - g->cury = p.pMotion.y; - g->curmod = p.pMotion.mod; - } -} - -void flext_gui::g_Displace(int dx, int dy) -{ -} - -void flext_gui::g_Delete() -{ - objs->Clear(); -} - -void flext_gui::Update() -{ - box_ready(&thisHdr()->z_box); - - if(Group().Canv().Pre(XLo(),YLo())) - Group().Draw(); - Group().Canv().Post(); -} - -#endif // PD / MAXMSP - -void flext_gui::m_Method(const CBParams &p) -{ -/* - switch(p.kind) { - case evMotion: { - // if(!g->Selected() || mod) - post("Motion: x=%i y=%i m=%i",p.pMotion.x,p.pMotion.y,p.pMotion.mod); - break; - } - case evMouseDown: { - post("MouseDown: x=%i y=%i b=%i m=%i",p.pMouseKey.x,p.pMouseKey.y,p.pMouseKey.b,p.pMouseKey.mod); - break; - } - case evMouseUp: { - post("MouseUp: x=%i y=%i b=%i m=%i",p.pMouseKey.x,p.pMouseKey.y,p.pMouseKey.b,p.pMouseKey.mod); - break; - } - case evMouseWheel: { - post("Mousewheel: x=%i y=%i m=%i d=%i",p.pMouseWheel.x,p.pMouseWheel.y,p.pMouseWheel.mod,p.pMouseWheel.delta); - break; - } - case evKeyDown: { - post("KeyDown: k=%i a=%i m=%i",p.pKey.k,p.pKey.a,p.pKey.mod); - break; - } - case evKeyUp: { - post("KeyUp: k=%i a=%i m=%i",p.pKey.k,p.pKey.a,p.pKey.mod); - break; - } - } -*/ - if(!Selected() || p.kind != evMotion || p.kind != evMouseDown || p.kind != evMouseUp) - Group().Method(*this,p); - } - -bool flext_gui::BindEvent(GuiSingle &o,bool (*cb)(flext_gui &o,GuiSingle &obj,const CBParams &p),int evs) -{ - if((evs&EventMask()) == evs) { - o.AddEvent(evs,cb); - return true; - } - else - // not all requested events supported - return false; -} - -void flext_gui::UnbindEvent(GuiSingle &o,bool (*cb)(flext_gui &o,GuiSingle &obj,const CBParams &p),int evs) -{ - o.RmvEvent(evs,cb); -} - - diff --git a/externals/grill/guitest/flgui.h b/externals/grill/guitest/flgui.h deleted file mode 100644 index ac42ab7b..00000000 --- a/externals/grill/guitest/flgui.h +++ /dev/null @@ -1,232 +0,0 @@ -#ifndef __FLEXT_GUI -#define __FLEXT_GUI - -#define FLEXT_GUI -#include <flext.h> - -#ifdef PD -#pragma warning( disable : 4091 ) -#include <g_canvas.h> -#endif - -class Canvas; -class GuiObj; -class GuiGroup; -class GuiSingle; - -class flext_gui: - virtual public flext_base -{ - FLEXT_HEADER_S(flext_gui,flext_base,setup) - -public: - flext_gui(int xs,int ys); - ~flext_gui(); - - enum CBEvs { - evNone = 0, - evMotion = 0x01, - evMouseDown = 0x02, - evMouseUp = 0x04, - evMouseWheel = 0x08, - evKeyDown = 0x10, - evKeyUp = 0x20 - }; - - class CBParams { - public: - CBParams(CBEvs k = evNone): kind(k),ext(false) {} - - CBEvs kind; - union { - struct { int x,y,mod; } pMotion; - struct { int x,y,b,mod; } pMouseKey; - struct { int x,y,mod,delta; } pMouseWheel; - struct { int k,a,mod; } pKey; - }; - bool ext; - }; - - static int EventMask() { return evmask; } - - bool BindEvent(GuiSingle &o,bool (*cb)(flext_gui &o,GuiSingle &obj,const CBParams &p),int evs); - void UnbindEvent(GuiSingle &o,bool (*cb)(flext_gui &o,GuiSingle &obj,const CBParams &p),int evs); - -protected: - - virtual void g_Create() {} - virtual void g_Delete(); -// virtual void g_GetRect(int &xp1,int &yp1,int &xp2,int &yp2); - virtual void g_Edit(bool selected) {} - virtual void g_Displace(int dx, int dy); -// virtual void g_Activate(bool state) {} -// virtual int g_Click(int xpix, int ypix, int shift, int alt, int dbl, int doit) { return 0; } - virtual void g_Properties() {} - virtual void g_Save(t_binbuf *b) {} -/* - virtual bool g_Motion(GuiObj &obj,int x,int y,int mod) { return false; } - virtual bool g_MouseKey(GuiObj &obj,bool down,int x,int y,int b,int mod) { return false; } - virtual bool g_MouseWheel(GuiObj &obj,int x,int y,int d,int mod) { return false; } - virtual bool g_Key(GuiObj &obj,bool down,int k,int a,int n,int mod) { return false; } - virtual bool g_Region(GuiObj &obj,bool on,int mod) { return false; } - virtual bool g_Focus(GuiObj &obj,bool on,int mod) { return false; } -*/ - -#ifdef PD - bool Selected() const { return selected; } - - void FixLines() { canvas_fixlinesfor( thisCanvas(), thisHdr() ); } - void DelLines() { canvas_deletelinesfor( glist_getcanvas(thisCanvas()), (t_text *)thisHdr()); } - - int XLo() const { return thisHdr()->te_xpix; } - int YLo() const { return thisHdr()->te_ypix; } - int XHi() const { return XLo()+XSize()-1; } - int YHi() const { return YLo()+YSize()-1; } - void XLo(int x) { thisHdr()->te_xpix = x; } - void YLo(int y) { thisHdr()->te_ypix = y; } - - int XSize() const { return xsize; } - int YSize() const { return ysize; } -#else // MAXMSP - bool Selected() const { return box_ownerlocked((t_box *)(&thisHdr()->z_box)) == 0; } - - void FixLines() {} - void DelLines() {} - - int XLo() const { return thisHdr()->z_box.b_rect.left; } - int YLo() const { return thisHdr()->z_box.b_rect.top; } - int XHi() const { return thisHdr()->z_box.b_rect.right; } - int YHi() const { return thisHdr()->z_box.b_rect.bottom; } - void XLo(int x) { thisHdr()->z_box.b_rect.left = x; } - void YLo(int y) { thisHdr()->z_box.b_rect.top = y; } - - int XSize() const { return XHi()-XLo()+1; } - int YSize() const { return YHi()-YLo()+1; } -#endif - - const t_symbol *Id() const { return bindsym; } - - GuiGroup &Group() { return *objs; } - - - static void Setup(t_class *c); - - - enum Modifier { - mod_None = 0, - mod_Ctrl = 0x0001, - mod_Shift = 0x0002, - mod_Alt = 0x0004, - mod_Meta = 0x0008, - mod_Mod1 = 0x0010, - mod_Mod2 = 0x0020, - mod_Mod3 = 0x0040, - mod_Caps = 0x0080, - mod_Double = 0x0100, -// mod_Triple = 0x0200, - mod_Button1 = 0x1000, - mod_Button2 = 0x2000, - mod_Button3 = 0x4000, - mod_Button4 = 0x8000 - }; - -private: - bool visible; - Canvas *canvas; - GuiGroup *objs; - - const t_symbol *bindsym; - - static int evmask; - - static void setup(t_class *); - - virtual void m_Method(const CBParams &p); - -#ifdef PD - bool selected; - int xsize,ysize; - - static void sg_getrect(t_gobj *c, t_glist *,int *xp1, int *yp1, int *xp2, int *yp2); - static void sg_displace(t_gobj *c, t_glist *, int dx, int dy); - static void sg_select(t_gobj *c, t_glist *, int selected); -// static void sg_activate(t_gobj *c, t_glist *, int state) { thisObject(c)->g_Activate(state != 0); } - static void sg_delete(t_gobj *c, t_glist *); - static void sg_vis(t_gobj *c, t_glist *, int vis); - static int sg_click(t_gobj *c, t_glist *,int xpix, int ypix, int shift, int alt, int dbl, int doit); - static void sg_properties(t_gobj *c, t_glist *); - static void sg_save(t_gobj *c, t_binbuf *b); -// static void sg_motion(void *c, float dx,float dy) { thisObject((t_gobj *)c)->g_Motion(dx,dy); } - - static bool sg_Key(flext_base *c,int argc,t_atom *argv); - static bool sg_KeyNum(flext_base *c,int &keynum); - static bool sg_KeyUp(flext_base *c,int &keynum); - - static t_widgetbehavior widgetbehavior; - static void SetWidget(t_class *c); - - struct px_object; - struct pxkey_object; - static int curmod; //,lastkey; - static pxkey_object *pxkey; - - class canvobj { - public: - canvobj(flext_gui *go): guiobj(go),nxt(NULL) {} - - flext_gui *guiobj; - canvobj *nxt; - }; - - class guicanv { - public: - guicanv(t_canvas *c); - ~guicanv(); - - int Refs() const { return ref; } - void Push(flext_gui *o); - void Pop(flext_gui *o); - -#ifdef DIRECT_TK - px_object *px; -#endif - const t_symbol *sym; - t_canvas *canv; - guicanv *nxt; - canvobj *head,*tail; - int ref; - }; - - static guicanv *gcanv; - static const t_symbol *gcm_motion,*gcm_mousekey,*gcm_mousewheel,*gcm_key,*gcm_destroy; - static void px_method(px_object *c,const t_symbol *s,int argc,t_atom *argv); - static void pxkey_method(pxkey_object *c,const t_symbol *s,int argc,t_atom *argv); - - void AddCanvas(); - void RmvCanvas(); - static void DelCanvas(t_canvas *c); - -public: - static t_class *px_class,*pxkey_class; - static void sg_tk(t_canvas *c,const t_symbol *s,int argc,t_atom *argv); - -#else - int curx,cury,curmod; - bool created; - static t_clock clock; - static t_qelem qelem; - - void Update(); - - static void sg_click(t_object *x, Point pt, short modifiers); - static void sg_update(t_object *x); - static void sg_psave (t_object *x, t_binbuf *dest); - static void sg_bfont (t_object *x, short size, short font); - static void sg_key (t_object *x,short keyvalue); - static void sg_enter (t_object *x); - static void sg_clipregion (t_object *x, RgnHandle *rgn, short *result); - static void sg_bidle(t_object *x); -#endif -}; - -#endif diff --git a/externals/grill/guitest/flguiobj.cpp b/externals/grill/guitest/flguiobj.cpp deleted file mode 100644 index b845ae5e..00000000 --- a/externals/grill/guitest/flguiobj.cpp +++ /dev/null @@ -1,801 +0,0 @@ -#include "flguiobj.h" - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <stdarg.h> - - -#define USETAGS - -#define BUFSIZE 20000 -#define ZONE 1000 - - -#ifdef PD -bool Canvas::store = true; -bool Canvas::debug = false; -#endif - -Canvas::Canvas(t_canvas *c): - canvas(c) -#ifdef PD - ,buffer(new char[BUFSIZE]),bufix(0),waiting(0) -#endif -{} - -Canvas::~Canvas() -{ -#ifdef PD - if(buffer) delete[] buffer; -#endif -} - -#ifdef PD -void Canvas::Send(const char *t) -{ - if(debug) post("GUI - %s",t); - sys_gui((char *)t); -} - -void Canvas::SendBuf() -{ - if(bufix) { - Send(buffer); - bufix = 0; - } -} - -void Canvas::ToBuf(const char *t) -{ - int len = strlen(t); - if(!len) return; - - bool end = t[len-1] == '\n'; - if((store && waiting) || !end) { - int nxt = bufix+len; - if(nxt >= BUFSIZE || (end && nxt >= BUFSIZE-ZONE)) SendBuf(); - - memcpy(buffer+bufix,t,len); - buffer[bufix += len] = 0; - } - else { - SendBuf(); - Send(t); - } -} - -Canvas &Canvas::TkC() -{ - char tmp[20]; - sprintf(tmp,".x%x.c ",canvas); - ToBuf(tmp); - return *this; -} - -Canvas &Canvas::TkE() -{ - ToBuf("\n"); - return *this; -} - -Canvas &Canvas::Tk(char *fmt,...) -{ - // int result, i; - char buf[2048]; - va_list ap; - - va_start(ap, fmt); - vsprintf(buf, fmt, ap); - ToBuf(buf); - va_end(ap); - return *this; -} -#endif - -bool Canvas::Pre(int x,int y) -{ - xpos = x,ypos = y; -#ifdef PD - ++waiting; - return true; -#else - svgp = patcher_setport(canvas); - if(svgp != NULL) { - GetForeColor(&svcol); - GetPenState(&svpen); - ::PenMode(patCopy); - return true; - } - else return false; -#endif -} - -void Canvas::Post() -{ -#ifdef PD - if(!--waiting) SendBuf(); -#else - if(svgp) { - RGBForeColor(&svcol); - SetPenState(&svpen); - SetPort(svgp); - } -#endif -} - - -// -------------------------------------------------------------------------- - - -Rect &Rect::Add(const Pnt &p) -{ - if(p.x < lo.x) lo.x = p.x; - if(p.y < lo.y) lo.y = p.y; - if(p.x > hi.x) hi.x = p.x; - if(p.y > hi.y) hi.y = p.y; - return *this; -} - -Rect &Rect::Add(const Rect &r) -{ - if(r.lo.x < lo.x) lo.x = r.lo.x; - if(r.lo.y < lo.y) lo.y = r.lo.y; - if(r.hi.x > hi.x) hi.x = r.hi.x; - if(r.hi.y > hi.y) hi.y = r.hi.y; - return *this; -} - -bool Rect::In(const Pnt &p) const -{ - return p.x >= lo.x && p.x <= hi.x && p.y >= lo.y && p.y <= hi.y; -} - -bool Rect::Inter(const Rect &r) const -{ - return true; -} - - -// -------------------------------------------------------------------------- - - -GuiObj::GuiObj(Canvas *c,GuiGroup *p): - canvas(c),idsym(NULL), - parent(p) -// ,ori(0,0) -{} - -GuiObj::~GuiObj() -{ -// Delete(); -} - - -// -------------------------------------------------------------------------- - -GuiSingle::Event::Event(int evmask,bool (*m)(flext_gui &g,GuiSingle &obj,const flext_gui::CBParams &p)): - methfl(evmask),method(m),ext(false),nxt(NULL) -{} - -GuiSingle::Event::~Event() { if(nxt) delete nxt; } - - -GuiSingle::GuiSingle(Canvas *c,GuiGroup *p,const t_symbol *s): - GuiObj(c,p),sym(s),active(false),event(NULL) -{ - char tmp[20]; -#ifdef __MWERKS__ - std:: -#endif - sprintf(tmp,"GUI%x",this); - idsym = MakeSymbol(tmp); -} - -GuiSingle::~GuiSingle() -{ - Delete(); - if(event) delete event; -} - -void GuiSingle::Symbol(const t_symbol *s) -{ - sym = s; -} - -GuiSingle *GuiSingle::Find(const t_symbol *s) -{ - return sym == s?this:NULL; -} - -GuiObj &GuiSingle::MoveTo(int x,int y) -{ -#ifdef PD - if(active) { - canvas->TkC().Tk("coords %s %i %i\n",GetString(Id()), x, y); - } -#endif - rect.MoveTo(x,y); - return *this; -} - -GuiObj &GuiSingle::MoveRel(int dx,int dy) -{ -#ifdef PD - if(active) { - canvas->TkC().Tk("move %s %i %i\n",GetString(Id()), dx, dy); - } -#endif - rect.Move(dx,dy); - return *this; -} - -GuiObj &GuiSingle::Delete() -{ -#ifdef PD - if(active) { - canvas->TkC().Tk("delete -tags %s\n",GetString(Id())); - active = false; - } -#endif - return *this; -} - -GuiObj &GuiSingle::FillColor(unsigned long col) -{ -#ifdef PD - if(active) { - canvas->TkC().Tk("itemconfigure %s -fill #%06x\n",GetString(Id()),col); - } -#endif - return *this; -} - -GuiObj &GuiSingle::Outline(unsigned long col) -{ -#ifdef PD - if(active) { - canvas->TkC().Tk("itemconfigure %s -outline #%06x\n",GetString(Id()),col); - } -#endif - return *this; -} - -GuiObj &GuiSingle::Focus() -{ -#ifdef PD - if(active) { - canvas->TkC().Tk("focus %s\n",GetString(Id())); - } -#endif - return *this; -} - -bool GuiSingle::Method(flext_gui &g,const flext_gui::CBParams &p) -{ - bool ret = true; - for(Event *ei = event; ei && ret; ei = ei->nxt) - ret = ret && ((ei->method && (ei->methfl&p.kind))?ei->method(g,*this,p):true); - return ret; -} - -void GuiSingle::AddEvent(int evmask,bool (*m)(flext_gui &g,GuiSingle &obj,const flext_gui::CBParams &p)) -{ - Event *prv = NULL,*ix = event; - for(; ix && ix->method != m; prv = ix,ix = ix->nxt) {} - - if(ix) - // previous handler found -> update event mask - ix->methfl |= evmask; - else { - // no previous handler was found -> make new one - - Event *nev = new Event(evmask,m); - if(prv) prv->nxt = nev; - else event = nev; - } -} - -void GuiSingle::RmvEvent(int evmask,bool (*m)(flext_gui &g,GuiSingle &obj,const flext_gui::CBParams &p)) -{ - Event *prv = NULL,*ix = event; - for(; ix && ix->method != m; prv = ix,ix = ix->nxt) {} - - if(ix) { - // handler found - - if(!(ix->methfl &= ~evmask)) { - // mask has become zero -> remove handler - - if(prv) prv->nxt = ix->nxt; - else event = ix->nxt; - ix->nxt = NULL; - delete ix; - } - } -} - - - -// -------------------------------------------------------------------------- - - -GuiGroup::GuiGroup(Canvas *c,GuiGroup *p): - GuiObj(c,p),head(NULL),tail(NULL) -{ - char tmp[20]; -#ifdef __MWERKS__ - std:: -#endif - sprintf(tmp,"GRP%x",this); - idsym = MakeSymbol(tmp); -} - -GuiGroup::~GuiGroup() { Clear(); } - -void GuiGroup::Clear() -{ - for(Part *ix = head; ix; ) { - Part *n = ix->nxt; -#ifdef PD - RemoveTag(ix->obj); -#endif - if(ix->owner) delete ix->obj; - delete ix; - ix = n; - } - head = tail = NULL; -} - -void GuiGroup::Add(GuiObj *o,bool owner) -{ - o->canvas = canvas; -#ifdef PD - AddTag(o); // valid only for GuiSingle! -#endif - Part *n = new Part(o,owner); - if(!head) head = n; - else tail->nxt = n; - tail = n; - - rect.Add(o->rect); -} - -GuiSingle *GuiGroup::Find(const t_symbol *s) -{ - GuiSingle *r = NULL; - for(Part *ix = head; ix && !r; ix = ix->nxt) { - r = ix->obj->Find(s); - } - return r; -} - -GuiSingle *GuiGroup::Detach(const t_symbol *s) -{ - if(head) { - Part *p = NULL,*ix = head; - while(ix) { - if(ix->obj->Symbol() == s) { - // found - if(p) p->nxt = ix->nxt; - GuiSingle *ret = (GuiSingle *)(ix->obj); - -#ifdef PD - RemoveTag(ret); -#endif - if(head == ix) head = ix->nxt; - if(tail == ix) tail = p; - - delete ix; - - return ret; - } - else p = ix,ix = ix->nxt; - } - } - return NULL; -} - -GuiObj &GuiGroup::MoveRel(int dx,int dy) -{ -#ifdef PD - canvas->TkC().Tk("move %s %i %i\n",GetString(Id()), dx, dy); -#endif - for(Part *ix = head; ix; ix = ix->nxt) { - ix->obj->rect.Move(dx,dy); - } - return *this; -} - -GuiObj &GuiGroup::Delete() -{ -#ifdef PD - canvas->TkC().Tk("delete -tags %s\n",GetString(Id())); - - for(Part *ix = head; ix; ix = ix->nxt) ix->obj->Inactive(); -#endif - return *this; -} - - -GuiObj &GuiGroup::Draw() -{ - for(Part *ix = head; ix; ix = ix->nxt) ix->obj->Draw(); - return *this; -} - - -#ifdef PD - -void GuiGroup::AddTag(GuiObj *o) -{ - canvas->TkC().Tk("addtag %s withtag %s\n",GetString(Id()),GetString(o->Id())); -} - -void GuiGroup::RemoveTag(GuiObj *o) -{ - canvas->TkC().Tk("dtag %s %s\n",GetString(o->Id()),GetString(Id())); -} - -#endif - -GuiGroup *GuiGroup::Add_Group() -{ - GuiGroup *obj = new GuiGroup(canvas,this); - Add(obj); - return obj; -} - - -GuiSingle *GuiGroup::Add_Point(int x,int y,long fill) -{ - GuiPoint *obj = new GuiPoint(canvas,this); - obj->Set(x,y,fill); - Add(obj); - return obj; -} - -GuiSingle *GuiGroup::Add_Cloud(int n,const Pnt *p,long fill) -{ - GuiCloud *obj = new GuiCloud(canvas,this); - obj->Set(n,p,fill); - Add(obj); - return obj; -} - -GuiSingle *GuiGroup::Add_Box(int x,int y,int xsz,int ysz,int width,long fill,long outl) -{ - GuiBox *obj = new GuiBox(canvas,this); - obj->Set(x,y,xsz,ysz,width,fill,outl); - Add(obj); - return obj; -} - -GuiSingle *GuiGroup::Add_Rect(int x,int y,int xsz,int ysz,int width,long outl) -{ - GuiRect *obj = new GuiRect(canvas,this); - obj->Set(x,y,xsz,ysz,width,outl); - Add(obj); - return obj; -} - -GuiSingle *GuiGroup::Add_Line(int x1,int y1,int x2,int y2,int width,long fill) -{ - GuiLine *obj = new GuiLine(canvas,this); - obj->Set(x1,y1,x2,y2,width,fill); - Add(obj); - return obj; -} - -GuiSingle *GuiGroup::Add_Poly(int n,const Pnt *p,int width,long fill) -{ - GuiPoly *obj = new GuiPoly(canvas,this); - obj->Set(n,p,width,fill); - Add(obj); - return obj; -} - -GuiSingle *GuiGroup::Add_Text(int x,int y,const char *txt,long fill,GuiText::just_t just) -{ - GuiText *obj = new GuiText(canvas,this); - obj->Set(x,y,txt,fill,just); - Add(obj); - return obj; -} - -GuiSingle *GuiGroup::Remove(GuiSingle *go) -{ - for(Part *prv = NULL,*ix = head; ix; prv = ix,ix = ix->nxt) - if(ix->obj == go) { - if(prv) prv->nxt = ix->nxt; - else head = ix->nxt; - if(!head) tail = NULL; - - GuiObj *ret = ix->obj; - delete ix; - - if(head) { - rect = head->obj->rect; - for(ix = head->nxt; ix; ix = ix->nxt) rect.Add(ix->obj->rect); - } - - return (GuiSingle *)ret; - } - - return NULL; -} - -bool GuiGroup::Method(flext_gui &g,const flext_gui::CBParams &p) -{ - bool go = true; - for(Part *ix = head; go && ix; ix = ix->nxt) go = go && ix->obj->Method(g,p); - return go; -} - - -// -------------------------------------------------------------------------- - - -GuiObj &GuiPoint::Set(int x,int y,long fl) -{ - Delete(); - fill = fl; - rect(x,y,x,y); - -#ifdef PD - canvas->TkC(); - canvas->Tk("create line %i %i %i %i -tags %s",x,y,x+1,y,GetString(Id())); - if(fill >= 0) canvas->Tk(" -fill #%06x",fill); - canvas->TkE(); - - active = true; -#endif - return *this; -} - -GuiObj &GuiPoint::Draw() -{ -#ifdef MAXMSP -#endif - return *this; -} - - -GuiObj &GuiCloud::Set(int n,const Pnt *p,long fl) -{ - int i; - Delete(); - - fill = fl; - pnt = new Pnt[pnts = n]; - rect(pnt[0] = p[0],p[0]); - for(i = 1; i < n; ++i) rect.Add(pnt[i] = p[i]); - -#ifdef PD - canvas->TkC().Tk("create line"); - for(i = 0; i < n; ++i) - canvas->Tk(" %i %i",p[i].X(),p[i].Y()); - canvas->Tk(" -tags %s",GetString(Id())); - if(fill >= 0) canvas->Tk(" -fill #%06x",fill); - canvas->TkE(); - - active = true; -#endif - return *this; -} - -GuiObj &GuiCloud::Draw() -{ -#ifdef MAXMSP -#endif - return *this; -} - -GuiObj &GuiCloud::Delete() -{ - if(pnt) { delete[] pnt; pnt = NULL; } - return *this; -} - - -GuiObj &GuiBox::Set(int x,int y,int xsz,int ysz,int wd,long fl,long outl) -{ - Delete(); - rect(x,y,x+xsz-1,y+ysz-1); - width = wd,fill = fl,outln = outl; - -#ifdef PD - canvas->TkC().Tk("create rectangle %i %i %i %i -tags %s",x,y,x+xsz,y+ysz,GetString(Id())); - if(wd >= 0) canvas->Tk(" -width %i",wd); - if(fl >= 0) canvas->Tk(" -fill #%06x",fl); - if(outl >= 0) canvas->Tk(" -outline #%06x",outl); - canvas->TkE(); - - active = true; -#endif - return *this; -} - -GuiObj &GuiBox::Draw() -{ -#ifdef MAXMSP - ::Rect r; - ::RGBColor col; - int w = width; - if(!w) w = 1; - - r.left = Canv().X()+rect.Lo().X(); - r.top = Canv().Y()+rect.Lo().Y(); - r.right = Canv().X()+rect.Hi().X(); - r.bottom = Canv().Y()+rect.Hi().Y(); - - if(width >= 0) { - col.red = (outln>>8)&0xff00; - col.green = outln&0xff00; - col.blue = (outln&0xff)<<8; - ::RGBForeColor(&col); - ::PenSize(w,w); - ::FrameRect(&r); - } - col.red = (fill>>8)&0xff00; - col.green = fill&0xff00; - col.blue = (fill&0xff)<<8; - ::RGBForeColor(&col); - ::PaintRect(&r); -#endif - return *this; -} - - -GuiObj &GuiRect::Set(int x,int y,int xsz,int ysz,int wd,long outl) -{ - Delete(); - rect(x,y,x+xsz-1,y+ysz-1); - width = wd,outln = outl; - -#ifdef PD - canvas->TkC().Tk("create line %i %i %i %i %i %i %i %i %i %i -tags %s",x,y,x+xsz,y,x+xsz,y+ysz,x,y+ysz,x,y,GetString(Id())); - if(width >= 0) canvas->Tk(" -width %i",width); - if(outl >= 0) canvas->Tk(" -fill #%06x",outl); - canvas->TkE(); - - active = true; -#endif - return *this; -} - -GuiObj &GuiRect::Draw() -{ -#ifdef MAXMSP -#endif - return *this; -} - - -GuiObj &GuiLine::Set(int x1,int y1,int x2,int y2,int wd,long fl) -{ - Delete(); - rect(p1(x1,y1),p2(x2,y2)); - width = wd,fill = fl; - -#ifdef PD - canvas->TkC().Tk("create line %i %i %i %i -tags %s",x1,y1,x2,y2,GetString(Id())); - if(width >= 0) canvas->Tk(" -width %i",width); - if(fill >= 0) canvas->Tk(" -fill #%06x",fill); - canvas->TkE(); - - active = true; -#endif - return *this; -} - -GuiObj &GuiLine::Draw() -{ -#ifdef MAXMSP - ::Point p; - ::RGBColor col; - int w = width; - if(!w) w = 1; - - col.red = (fill>>8)&0xff00; - col.green = fill&0xff00; - col.blue = (fill&0xff)<<8; - ::RGBForeColor(&col); - ::PenSize(w,w); - p.h = Canv().X()+p1.X(); - p.v = Canv().Y()+p1.Y(); - ::MoveTo(p.h,p.v); - p.h = Canv().X()+p2.X(); - p.v = Canv().Y()+p2.Y(); - ::LineTo(p.h,p.v); -#endif - return *this; -} - - -GuiObj &GuiPoly::Set(int n,const Pnt *p,int wd,long fl) -{ - int i; - - Delete(); - - width = wd,fill = fl; - pnt = new Pnt[pnts = n]; - rect(pnt[0] = p[0],p[0]); - for(i = 1; i < n; ++i) rect.Add(pnt[i] = p[i]); - -#ifdef PD - canvas->TkC().Tk("create line"); - for(i = 0; i < n; ++i) - canvas->Tk(" %i %i",p[i].X(),p[i].Y()); - canvas->Tk(" -tags %s",GetString(Id())); - if(width >= 0) canvas->Tk(" -width %i",width); - if(fill >= 0) canvas->Tk(" -fill #%06x",fill); - canvas->TkE(); - - active = true; -#endif - return *this; -} - -GuiObj &GuiPoly::Draw() -{ -#ifdef MAXMSP - ::Point p; - ::RGBColor col; - int ox = Canv().X(),oy = Canv().Y(); - int w = width; - if(!w) w = 1; - - col.red = (fill>>8)&0xff00; - col.green = fill&0xff00; - col.blue = (fill&0xff)<<8; - ::RGBForeColor(&col); - ::PenSize(w,w); - p.h = ox+pnt[0].X(); - p.v = oy+pnt[0].Y(); - ::MoveTo(p.h,p.v); - for(int i = 1; i < pnts; ++i) { - p.h = ox+pnt[i].X(); - p.v = oy+pnt[i].Y(); - ::LineTo(p.h,p.v); - } -#endif - return *this; -} - -GuiObj &GuiPoly::Delete() -{ - if(pnt) { delete[] pnt; pnt = NULL; } - return *this; -} - - -GuiObj &GuiText::Set(int x,int y,const char *txt,long fl,just_t jt) -{ - Delete(); - rect(x,y,x,y); - fill = fl,just = jt; - -#ifdef PD - canvas->TkC().Tk("create text %i %i -tags %s",x,y,GetString(Id())); - if(txt) canvas->Tk(" -text %s",txt); - if(fill >= 0) canvas->Tk(" -fill #%06x",fill); - if(just != none) { - static const char justtxt[][7] = {"left","right","center"}; - canvas->Tk(" -justify %s",justtxt[(int)just]); - } - canvas->TkE(); - - active = true; -#endif - return *this; -} - -GuiObj &GuiText::Draw() -{ -#ifdef MAXMSP -#endif - return *this; -} - diff --git a/externals/grill/guitest/flguiobj.h b/externals/grill/guitest/flguiobj.h deleted file mode 100644 index 66286cef..00000000 --- a/externals/grill/guitest/flguiobj.h +++ /dev/null @@ -1,362 +0,0 @@ -#ifndef __FLGUIOBJ_H -#define __FLGUIOBJ_H - -#define FLEXT_GUI -#include <flext.h> -#include "flgui.h" - - -class Canvas -{ -public: - Canvas(t_canvas *c); - ~Canvas(); - -#ifdef PD - Canvas &Tk(char *fmt,...); - Canvas &TkC(); - Canvas &TkE(); - - void ToBuf(const char *t); -#endif - - bool Pre(int x,int y); - void Post(); - - int X() const { return xpos; } - int Y() const { return ypos; } - -protected: - - t_canvas *canvas; - int xpos,ypos; - -#ifdef PD - void Send(const char *t); - void SendBuf(); - - static bool debug,store; - - char *buffer; - int bufix; - int waiting; -#else - PenState svpen; - RGBColor svcol; - GrafPtr svgp; -#endif -}; - - -class Pnt -{ -public: - Pnt() {} - Pnt(const Pnt &p): x(p.x),y(p.y) {} - Pnt(int px,int py): x(px),y(py) {} - - Pnt &operator =(const Pnt &p) { x = p.x,y = p.y; return *this; } - Pnt &operator ()(int px,int py) { x = px,y = py; return *this; } - - Pnt &Move(int dx,int dy) { x += dx,y += dy; return *this; } - - int X() const { return x; } - int Y() const { return y; } - -//protected: - int x,y; -}; - -class Rect -{ -public: - Rect() {} - Rect(const Rect &r): lo(r.lo),hi(r.hi) {} - Rect(int xlo,int ylo,int xhi,int yhi): lo(xlo,ylo),hi(xhi,yhi) {} - - Rect &operator =(const Rect &r) { lo = r.lo; hi = r.hi; return *this; } - Rect &operator ()(const Pnt &l,const Pnt &h) { lo = l; hi = h; return *this; } - Rect &operator ()(int xlo,int ylo,int xhi,int yhi) { lo(xlo,ylo); hi(xhi,yhi); return *this; } - - Rect &Move(int dx,int dy) { lo.Move(dx,dy); hi.Move(dx,dy); return *this; } - Rect &MoveTo(int x,int y) { hi(x+hi.X()-lo.X(),y+hi.Y()-lo.Y()); lo(x,y); return *this; } - - Pnt &Lo() { return lo; } - Pnt &Hi() { return hi; } - int SizeX() const { return hi.X()-lo.X()+1; } - int SizeY() const { return hi.Y()-lo.Y()+1; } - - Rect &Add(const Pnt &p); - Rect &Add(const Rect &r); - bool In(const Pnt &p) const; - bool Inter(const Rect &r) const; - -protected: - Pnt lo,hi; -}; - -class GuiObj: - public flext -{ - friend class GuiGroup; -public: - GuiObj(Canvas *c = NULL,GuiGroup *p = NULL); - virtual ~GuiObj(); - - const t_symbol *Id() const { return idsym; } - virtual const t_symbol *Symbol() const { return NULL; } - - virtual void Active() {} - virtual void Inactive() {} - -/* - void Origin(int x,int y) { ori(x,y); } - void Origin(const Pnt &p) { ori = p; } - const Pnt &Origin() const { return ori; } - void OriMove(int dx,int dy) { ori.Move(dx,dy); } - int OriX() const { return ori.X(); } - int OriY() const { return ori.Y(); } -*/ - - virtual GuiSingle *Find(const t_symbol *s) { return NULL; } - inline GuiSingle *Find(const char *s) { return Find(MakeSymbol(s)); } - - virtual GuiObj &MoveRel(int dx,int dy) = 0; - virtual GuiObj &Focus() { return *this; } - - virtual GuiObj &Draw() = 0; - - Canvas &Canv() { return *canvas; } - -protected: - virtual GuiObj &Delete() = 0; - - GuiGroup *parent; - Canvas *canvas; - const t_symbol *idsym; - - virtual bool Method(flext_gui &g,const flext_gui::CBParams &p) = 0; - - Rect rect; -}; - - -class GuiSingle: - public GuiObj -{ - friend class flext_gui; -public: - GuiSingle(Canvas *c = NULL,GuiGroup *p = NULL,const t_symbol *s = NULL); - ~GuiSingle(); - - virtual const t_symbol *Symbol() const { return sym; } - virtual void Symbol(const t_symbol *s); - void Symbol(const char *s) { Symbol(MakeSymbol(s)); } - - virtual void Active() { active = true; } - virtual void Inactive() { active = false; } - - virtual bool In(const Pnt &p) const { return false; } - - virtual GuiSingle *Find(const t_symbol *s); - virtual GuiObj &MoveTo(int x,int y); - virtual GuiObj &MoveRel(int dx,int dy); - virtual GuiObj &FillColor(unsigned long col); - virtual GuiObj &Outline(unsigned long col); - - virtual GuiObj &Focus(); - - GuiGroup &Parent() { return *parent; } - -protected: - virtual GuiObj &Delete(); - - const t_symbol *sym; - bool active; - - class Event { - public: - Event(int evmask,bool (*m)(flext_gui &g,GuiSingle &obj,const flext_gui::CBParams &p)); - ~Event(); - - int methfl; - bool (*method)(flext_gui &g,GuiSingle &obj,const flext_gui::CBParams &p); - bool ext; - Event *nxt; - } *event; - - void AddEvent(int evmask,bool (*m)(flext_gui &g,GuiSingle &obj,const flext_gui::CBParams &p)); - void RmvEvent(int evmask,bool (*m)(flext_gui &g,GuiSingle &obj,const flext_gui::CBParams &p)); - - virtual bool Method(flext_gui &g,const flext_gui::CBParams &p); -}; - - -class GuiPoint: - public GuiSingle -{ - friend class GuiGroup; - - GuiPoint(Canvas *c = NULL,GuiGroup *p = NULL,const t_symbol *s = NULL): GuiSingle(c,p,s) {} - GuiObj &Set(int x,int y,long fill = -1); - virtual GuiObj &Draw(); - - long fill; -public: -}; - - -class GuiCloud: - public GuiSingle -{ - friend class GuiGroup; - - GuiCloud(Canvas *c = NULL,GuiGroup *p = NULL,const t_symbol *s = NULL): GuiSingle(c,p,s),pnt(NULL) {} - GuiObj &Set(int n,const Pnt *p,long fill = -1); - virtual GuiObj &Draw(); - virtual GuiObj &Delete(); - - long fill; - int pnts; - Pnt *pnt; -public: -}; - - -class GuiBox: - public GuiSingle -{ - friend class GuiGroup; - - GuiBox(Canvas *c = NULL,GuiGroup *p = NULL,const t_symbol *s = NULL): GuiSingle(c,p,s) {} - GuiObj &Set(int x,int y,int xsz,int ysz,int width = -1,long fill = -1,long outl = -1); - virtual GuiObj &Draw(); - - virtual bool In(const Pnt &p) const { return rect.In(p); } - - int width; - long fill,outln; -public: -}; - - -class GuiRect: - public GuiSingle -{ - friend class GuiGroup; - - GuiRect(Canvas *c = NULL,GuiGroup *p = NULL,const t_symbol *s = NULL): GuiSingle(c,p,s) {} - GuiObj &Set(int x,int y,int xsz,int ysz,int width = -1,long outl = -1); - virtual GuiObj &Draw(); - - virtual bool In(const Pnt &p) const { return rect.In(p); } - - int width; - long outln; -public: -}; - - -class GuiLine: - public GuiSingle -{ - friend class GuiGroup; - - GuiLine(Canvas *c = NULL,GuiGroup *p = NULL,const t_symbol *s = NULL): GuiSingle(c,p,s) {} - GuiObj &Set(int x1,int y1,int x2,int y2,int width = -1,long fill = -1); - virtual GuiObj &Draw(); - - int width; - long fill; - Pnt p1,p2; -public: -}; - - -class GuiPoly: - public GuiSingle -{ - friend class GuiGroup; - - GuiPoly(Canvas *c = NULL,GuiGroup *p = NULL,const t_symbol *s = NULL): GuiSingle(c,p,s),pnt(NULL) {} - GuiObj &Set(int n,const Pnt *p,int width = -1,long fill = -1); - virtual GuiObj &Draw(); - virtual GuiObj &Delete(); - - int width; - long fill; - int pnts; - Pnt *pnt; -public: -}; - - -class GuiText: - public GuiSingle -{ - friend class GuiGroup; -public: - enum just_t { none = -1,left = 0,right,center }; -protected: - GuiText(Canvas *c = NULL,GuiGroup *p = NULL,const t_symbol *s = NULL): GuiSingle(c,p,s) {} - GuiObj &Set(int x,int y,const char *txt = NULL,long fill = -1,just_t just = none); - virtual GuiObj &Draw(); - - just_t just; - long fill; -}; - - -class GuiGroup: - public GuiObj -{ - friend class flext_gui; -public: - GuiGroup(Canvas *c,GuiGroup *p = NULL); - ~GuiGroup(); - - virtual GuiSingle *Find(const t_symbol *s); - virtual GuiObj &MoveRel(int dx,int dy); - - void Clear(); - void Add(GuiObj *o,bool own = true); - GuiSingle *Detach(const t_symbol *s); - - virtual GuiObj &Draw(); - - GuiGroup *Add_Group(); - GuiSingle *Add_Point(int x,int y,long fill = -1); - inline GuiSingle *Add_Point(const Pnt &p,long fill = -1) { return Add_Point(p.X(),p.Y(),fill); } - GuiSingle *Add_Cloud(int n,const Pnt *p,long fill = -1); - GuiSingle *Add_Box(int x,int y,int xsz,int ysz,int width = -1,long fill = -1,long outl = -1); - GuiSingle *Add_Rect(int x,int y,int xsz,int ysz,int width = -1,long outl = -1); - GuiSingle *Add_Line(int x1,int y1,int x2,int y2,int width = -1,long fill = -1); - inline GuiSingle *Add_Line(const Pnt &p1,const Pnt &p2,int width = -1,long fill = -1) { return Add_Line(p1.X(),p1.Y(),p2.X(),p2.Y(),width,fill); } - GuiSingle *Add_Poly(int n,const Pnt *p,int width = -1,long fill = -1); - GuiSingle *Add_Text(int x,int y,const char *txt,long fill = -1,GuiText::just_t just = GuiText::none); - inline GuiSingle *Add_Text(const Pnt &p,const char *txt,long fill = -1,GuiText::just_t just = GuiText::none) { return Add_Text(p.X(),p.Y(),txt,fill,just); } - - GuiSingle *Remove(GuiSingle *obj); - -protected: -#ifdef PD - void AddTag(GuiObj *o); - void RemoveTag(GuiObj *o); -#endif - - virtual GuiObj &Delete(); - - class Part - { - public: - Part(GuiObj *o,bool own = true): obj(o),owner(own),nxt(NULL) {} - - GuiObj *obj; - bool owner; - Part *nxt; - } *head,*tail; - - virtual bool Method(flext_gui &g,const flext_gui::CBParams &p); -}; - -#endif diff --git a/externals/grill/guitest/guitest.dsp b/externals/grill/guitest/guitest.dsp deleted file mode 100644 index e7dcf20e..00000000 --- a/externals/grill/guitest/guitest.dsp +++ /dev/null @@ -1,112 +0,0 @@ -# Microsoft Developer Studio Project File - Name="guitest" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** NICHT BEARBEITEN ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=guitest - Win32 Debug -!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE -!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl -!MESSAGE -!MESSAGE NMAKE /f "guitest.mak". -!MESSAGE -!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben -!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel: -!MESSAGE -!MESSAGE NMAKE /f "guitest.mak" CFG="guitest - Win32 Debug" -!MESSAGE -!MESSAGE Für die Konfiguration stehen zur Auswahl: -!MESSAGE -!MESSAGE "guitest - Win32 Release" (basierend auf "Win32 (x86) Dynamic-Link Library") -!MESSAGE "guitest - Win32 Debug" (basierend auf "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "max/guitest" -# PROP Scc_LocalPath "." -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "guitest - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "msvc\r" -# PROP Intermediate_Dir "msvc\r" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GUITEST_EXPORTS" /YX /FD /c -# ADD CPP /nologo /W3 /GR /O2 /I "c:\programme\audio\pd\src" /I "f:\prog\max\flext\source" /I "F:\prog\packs\wxwindows-2.3.2\include" /I "F:\prog\packs\wxwindows-2.3.2\lib\mswdll" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "NT" /D "PD" /YX /FD /c -# SUBTRACT CPP /Fr -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0xc07 /d "NDEBUG" -# ADD RSC /l 0xc07 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 -# ADD LINK32 kernel32.lib user32.lib pd.lib flext-pdwin.lib /nologo /dll /machine:I386 /libpath:"c:\programme\audio\pd\bin" /libpath:"f:\prog\max\flext\pd-msvc" /libpath:"F:\prog\packs\wxwindows-2.2.9\lib" - -!ELSEIF "$(CFG)" == "guitest - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "msvc\d" -# PROP Intermediate_Dir "msvc\d" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GUITEST_EXPORTS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GR /ZI /Od /I "c:\programme\audio\pd\src" /I "f:\prog\max\flext\source" /I "F:\prog\packs\wxwindows-2.3.2\include" /I "F:\prog\packs\wxwindows-2.3.2\lib\mswdlld" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "NT" /D "PD" /FR /YX /FD /GZ /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0xc07 /d "_DEBUG" -# ADD RSC /l 0xc07 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib pd.lib flext_d-pdwin.lib /nologo /dll /debug /machine:I386 /pdbtype:sept /libpath:"c:\programme\audio\pd\bin" /libpath:"f:\prog\max\flext\pd-msvc" /libpath:"F:\prog\packs\wxwindows-2.3.2\lib" - -!ENDIF - -# Begin Target - -# Name "guitest - Win32 Release" -# Name "guitest - Win32 Debug" -# Begin Source File - -SOURCE=.\flgui.cpp -# End Source File -# Begin Source File - -SOURCE=.\flgui.h -# End Source File -# Begin Source File - -SOURCE=.\flguiobj.cpp -# End Source File -# Begin Source File - -SOURCE=.\flguiobj.h -# End Source File -# Begin Source File - -SOURCE=.\main.cpp -# End Source File -# End Target -# End Project diff --git a/externals/grill/guitest/main.cpp b/externals/grill/guitest/main.cpp deleted file mode 100644 index 775a206b..00000000 --- a/externals/grill/guitest/main.cpp +++ /dev/null @@ -1,152 +0,0 @@ -#include "flgui.h" -#include "flguiobj.h" - -#include <stdlib.h> -/* -#include <stdio.h> -#include <string.h> -#include <stdarg.h> -*/ - -#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 303) -#error You need at least flext version 0.3.3 -#endif - - -#define V void -#define I int -#define C char -#define BL bool -#define L long -#define UL unsigned long - -class guitest: -public flext_gui,virtual public flext_base -{ - FLEXT_HEADER(guitest,flext_gui) - -public: - guitest(I argc,t_atom *argv); - ~guitest(); - - virtual void m_bang() - { - post("%s - bang!",thisName()); - } - -protected: - - virtual void g_Create(); - virtual void g_Edit(bool selected); - - static bool g_Motion(flext_gui &g,GuiSingle &obj,const CBParams &p); - static bool g_MouseKey(flext_gui &g,GuiSingle &obj,const CBParams &p); - static bool g_Key(flext_gui &g,GuiSingle &obj,const CBParams &p); - - virtual void g_Properties(); - virtual void g_Save(t_binbuf *b); - -private: - FLEXT_CALLBACK(m_bang); -}; - -FLEXT_NEW_V("guitest",guitest) - - -void guitest::g_Create() -{ - GuiSingle *frame = Group().Add_Box(0,0,XSize(),YSize(),-1,0xE0E0E0); - frame->Symbol("rect1"); - GuiSingle *wave = Group().Add_Box(8,10,XSize()-16,YSize()-11,0,0x4040FF); - Group().Add_Text(1,1,"Hula",-1); - - I n = XSize()-16; - Pnt *p = new Pnt[n]; - for(int i = 0; i < n; ++i) { - p[i](8+i,10+rand()%(YSize()-11)); - } - Group().Add_Poly(n,p,-1,0xC0C0C0); - delete[] p; - - if(!BindEvent(*frame,g_Motion,evMotion)) post("Motion not supported"); - if(!BindEvent(*wave,g_MouseKey,evMouseDown)) post("MouseDown not supported"); - if(!BindEvent(*wave,g_MouseKey,evKeyDown)) post("KeyDown not supported"); - if(!BindEvent(*wave,g_MouseKey,evKeyUp)) post("KeyUp not supported"); -} - -void guitest::g_Properties() -{ - post("properties"); -} - -void guitest::g_Save(t_binbuf *b) -{ - post("save"); -#ifdef PD - binbuf_addv(b, "ssiis;", gensym("#X"),gensym("obj"), - (t_int)XLo(), (t_int)YLo(),MakeSymbol(thisName()) - // here the arguments - ); -#else -#endif -} - -void guitest::g_Edit(bool selected) -{ - post("select is=%d", selected); - - GuiSingle *obj = Group().Find(MakeSymbol("rect1")); - if(obj) - obj->Outline(selected?0xFF0000:0x000000); - else - post("obj not found"); -} - -bool guitest::g_Motion(flext_gui &g,GuiSingle &obj,const CBParams &p) -{ - if(p.kind == evMotion) { - post("Motion %s x:%i y:%i mod:%i",GetString(obj.Id()),p.pMotion.x,p.pMotion.y,p.pMotion.mod); - } - else - post("Motion"); - return true; -} - -bool guitest::g_MouseKey(flext_gui &g,GuiSingle &obj,const CBParams &p) -{ - if(p.kind == evMouseDown) { - post("MouseDown %s x:%i y:%i b:%i mod:%i",GetString(obj.Id()),p.pMouseKey.x,p.pMouseKey.y,p.pMouseKey.b,p.pMouseKey.mod); - } - else if(p.kind == evKeyDown) { - post("KeyDown %s asc:%i key:%i mod:%i",GetString(obj.Id()),p.pKey.a,p.pKey.k,p.pKey.mod); - } - else if(p.kind == evKeyUp) { - post("KeyUp %s asc:%i key:%i mod:%i",GetString(obj.Id()),p.pKey.a,p.pKey.k,p.pKey.mod); - } - return true; -} - -bool guitest::g_Key(flext_gui &g,GuiSingle &obj,const CBParams &p) -{ - post("Key"); - return true; -} - - - - - -guitest::guitest(I argc,t_atom *argv): - flext_gui(400,100) -{ - AddInAnything(); - AddOutInt(2); - - FLEXT_ADDBANG(0,m_bang); -} - -guitest::~guitest() -{ -} - - |