¿Qué libros debo leer para programar mi propia aplicación de pintura como gimp?

Cualquiera de la introducción a los libros de Computer Graphics. Luego un libro sobre composición digital. Amazon.com: The Art and Science of Digital Compositing, Second Edition: Techniques for Visual Effects, Animation and Motion Graphics (The Morgan Kaufmann Series in Computer Graphics) (9780123706386): Ron Brinkmann: Books

El código fuente de Gimp está disponible, el lenguaje de extensión es Scheme; Supongo que la mayor parte del código también está en Scheme ya que muchas de las rutinas internas tienen encabezados de función Scheme.

La implementación real de los algoritmos de dibujo está bien documentada y es bastante fácil. Las capas agregan complejidad ya que debe componer los píxeles de cada capa para mostrar el resultado.

Implementar deshacer (ctrl-Z) es mucho más difícil de implementar sin consumir toda la memoria.

Admitir imágenes muy grandes al agrupar las capas y mantener algunas en la memoria y el resto en el disco (su propio sistema de memoria caché / virtual) es un desafío.

Permitir complementos y extensiones de código es un desafío diferente. Se requiere documentación y herramientas de prueba. Respaldar menús definidos por el usuario, pinceles, texturas, fuentes y asignaciones de teclas es un desafío.

Buena suerte.

Comenzaría investigando qué kit de herramientas gráficas, si lo hubiera, sería el ideal para su objetivo previsto (es decir: QT es más “multiplataforma”, mientras que GTK, G imp’s T ool K it, literalmente, es mucho más Linux / similar al céntrico).

Entonces, la elección del kit de herramientas (si existe, también puede crear su propio kit de herramientas desde cero) posiblemente apunte a diferentes idiomas con los que está más convencionalmente emparejado.

En el camino, es posible que eche un vistazo al código de versiones tempranas / alfa de varios programas gráficos, o versiones actuales, de software que no es tan completo como GIMP. Tal vez incluso pueda crear una bifurcación de uno de esos (si la licencia lo permite, que suele ser el caso), en lugar de crear todo desde cero.

Algunas sugerencias: Kolourpaint, Pinta, MyPaint, AZ-Painter (o / también AZ-Drawing)

Incluso hay un proyecto personal de este tipo, que realmente está comenzando un programa muy simple para aprender cómo hacerlo:

bruceoutdoors / DrawingApp

Pero para los aspectos “bajo el capó” / no GUI, tal vez cosas como GraphicsMagick, ImageMagick y VIPS.

También existe la posibilidad de querer desarrollar algo para la web, posiblemente en HTML5. Eso probablemente alcanzaría el rango más amplio de SO / plataforma, pero supongo que no sería tan poderoso como una aplicación que no es web.

Entonces, todas esas preguntas implicarían posiblemente en docenas de libros diferentes, o incluso en categorías de libros. Lo siento si esta respuesta es un poco estúpida, tal vez la mejor respuesta sería un libro sobre una base sólida que se aplique independientemente de lo que sea, pero simplemente no lo sabría. No soy programador ni nada. Pensé en eso porque vagamente “planifico” aprender un poco de codificación, lo suficiente para poder corregir algunos errores o crear pequeñas mejoras yo mismo, en software como los enumerados. Eventualmente, tal vez un tenedor o algo “desde cero”, si encuentro una idea que es demasiado incompatible con la filosofía de cualquiera de esos proyectos, y si siento que al menos podría comenzar.