Me da la impresión que estás agarrando el problema por donde no es, en
el siguiente sentido:
Poco Project es una librería C++ de propósito general, que en sí misma
"poco" tiene que ver con la creación de plugins para PhotoShop, Maya
3D, etc.
Mientras que la docu que mandaste tiene que ver con facilidades
multiplataforma que provee la librería "Poco" para cargar
dinámicamente librerías ".dll" en windows, y ".so" en unixes y afines.
Encará el problema más por el lado de investigar cómo se hace un
plugin para el software que te interesa en particular, el caso más
clásico, y seguramente mejor documentado es el de Adobe PhotoShop.
No va a existir un plugin universal que sea entendido por todos los
otros softwares, cada software tiene su protocolo. Dicho esto, te
aclaro que los plugins de PhotoShop son "cuasi"-standard en el sentido
que muchos otros softwares que no son de Adobe se pueden comunicar con
plugins de PhotoShop.
Para arrancar con PhotoShop, tenés esto:
http://www.adobe.com/devnet/photoshop/sdk.html
Si usás Mac OS X, viene con proyectos listos para compilar en XCode,
mientras que si usás Windows, viene con proyectos listos para usar en
Visual Studio .
Listos, significa que compilás y te produce el plugin.
Fijate.
saludos,
- Enrique
2011/11/16 Joaquin Duo <joa...@gmail.com>:
> --
> ¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido
> este mesaje por error.
> En caso de duda visita "http://groups.google.com/group/cppba"
No se exactamente que estás buscando, pero en términos generales,
puede que te resulte interesante "The Software Architecture of the
GIMP" [1]
En la práctica, si la idea es reutilizar plugins de terceros, hay
algunos temas que pueden hacer una arquitectura inutilizable por lo
que te recomiendo que tengas muy en cuenta los requerimientos no
funcionales. Algunos que limitaron mis opciones en un proyecto que
trabajé fueron:
- la compatibilidad binaria 32 vs 64 bits
- tamaño de las imágenes
- la mayoría de las APIs son estilo C con todo lo bueno y lo malo que
ello implica, pero las hay tambien en C++, managed .NET, etc
- como manejan situaciones inesperadas como crashes, timeouts, excepciones.
- la posibilidad de utilizar la GPU, las ganancias en performance son tremendas.
Por último, creo que video e imagenes son arenas muy diferentes. Si
nos contás un poco más del proyecto por ahí te podamos aportar algo
más concreto. Saludos!
--Pablo Ybalo
[1] http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.84.7715
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
Hola,no leí los comentarios anteriores, ni tampoco mucho tu correo, pero creo:a) que a vos no te interesa tanto cómo arquitecturar extensibilidad en un sistema, osea, no es que querés diseñarle a un sistema soporte para plugins, sino que te interesa hacer plugins nuevos a un sistema que ya soporta, correcto?b) en tal caso, creo que los links q pusiste no te sirven; te sirve entender cómo hacer un plugin específico, y en tal caso te puedo dar una explicación (estoy creando unplugged.googlecode.com), pero antes decíme para qué plataforma para hacerlo un poco más específico.
Como est�s tanto tiempo?
En la lista de boost una vez apareci� esto:
http://dynobj.sourceforge.net/
Y esto otro:
Tal vez te sirva.
Saludos
--
---
Fernando Cacciola
SciSoft Consulting, Founder
http://www.scisoft-consulting.com
Hola Joaquin,
Como estás tanto tiempo?
En la lista de boost una vez apareció esto:
http://dynobj.sourceforge.net/
Hablando en términos de patrones de diseño de objetos, un plugin es un
Strategy. Si necesitás algo un poco más complicado vas a estar usando
un Observer. También vas a necesitar un Abstract Factory, Builder y/o
Factory Method para crear las instancias de tus objetos.
--
Alejandro Santos
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
Joaquin,
Hace un tiempo colabore en el desarrollo de esta libreria que aun esta en el sandbox de Boost:
http://boost-extension.redshoelace.com/docs/boost/extension/index.html