ciao.
Detto bevemente sto implementando un sistema per inserire oggetti grafici su un area opengl.
Il sistema grafico funziona ed è in opengl(ho gestito i vari oggetti buffer,texture,color ecc..).
Per adesso volevo poter inserire la linea e il punto per semplicità , e sto cercando di trovare un meccanismo solido per , in futuro aggiungere le CEntity che mi pare.
Un punto o una linea sono CEntity e ogni CEntity ha un suo controller(tipo MVC) che non è nient altro che una serie di funzioni che vanno a modificare le caratteristiche grafiche del punto o della linea.
Questo controller è alla fine una semplice classe con dei metodi ma puo essere diverso a seconda dell' entità.
ad es:
Alla fine volevo gestire il tutto con i function object std::function o std::memfun, non riesco bene a capire la differenza tra i due.codice:class CControllerLine { public: CControllerLine(); Move(int x, int y){...implementazione}; SetColor(int color){...implementazione}; Scale(float toX, float toY){...implementazione} Rotate(float angle){...implementazione} }; class CControllerPoint { public: CControllerLine(); Move(int x, int y){...implementazione}; SetColor(int color){...implementazione}; Scale(float toX, float toY){...implementazione} //Rotate(float angle){ATTENZIONE Inutile su un punto non è compatibile non la trovo e //agisco di conseguenza disabilitando il menu del context menu} };
Io vorrei settare un functional corrente(compatibile dopo il bind dei parametri con tutti i possibili modificatori: colore,scala,posizione ecc...) e fare il bind come mi è stato insegnato in questo forum da shodan in modo che se il tipo di ritorno è void, e lo sarà, posso dichiarare un function generico dove si inseriranno a seconda delle scelte (tramite pulsanti e altri widget) delle std::function diverse contenute direttamente nel widget ereditato con una proprietà Function.
Quando scelgo un azione premendo il button "Azione" mi basterà fare il bind sulla classe(il controller)contenuto nella CEntity(trovero' il puntatore ad essa con un sistema di picking in opengl) e all' interno del controller gestirò le modifiche alla CEntity e alla sua rappresentazione grafica a seconda di quello che faccio nella ui.
Mi serirebbe un unica cosa: è possibile sapere se su un dato controller esiste un metodo(una funzione membro) o meno?
mi servirebbe davvero tanto, potrei personalizzzare ad es un context menu o in generale l'interfaccia "polimorficamente" con le azioni possibili abilitate e quelle non possibili disabilitate a seconda se esiste la funzione di modifica o meno.
Ed eviterei casini.
I controller e tutte le altre classi di cui non ho parlato sono policy(passo il tipo di controller come parametro template).
ciao.
grazie.