TextureMind Framework – Work in progress

What is it?

TextureMind framework is a SDK to develop software with different programming languages on different platforms. The framework is composed by a set of classes to facilitate tasks that require the use of multithreading, vectors, lists, maps, multimaps, parsing, serialization, ipc, networking, graphics, computer vision. The framework will be also composed by a complete set of applications to create images, animations, GUIs and videogames. I'm creating this framework to facilitate the production of software in general. It has been coded by me from scratch and it can be seen as a collection of all the knowledge that I have in the field of computer programming. The framework is currently closed source and it will be used just for my personal creations.


20 August, 2018

  • Implement system component, open a window, handle events, draw a picture
  • Improve graphics context, add 2D shapes rendering on graphics abstraction layer
  • Implement cairo graphics context and draw 2D shapes
  • Add a simple test case that use Cairo library for drawing a rotating 2D shape

18 April, 2018

  • Implement cross-platform dynamic libraries loader
  • Dynamically link all the external libraries, when required
  • Add skeleton architecture for additional components:
    • Picture (Handle color formats, palette, images)
    • Geometrics (2D and 3D shapes, splines, nurbs)
    • Graphics (Abstract layer for rendering 2D and 3D graphics)
    • System (Set of classes to handle windows and OS functionality)
    • DevIL (Import and export popular image formats with DevIL library)
    • Cairo (Implementation of 2D rendering with Cairo library)
  • Implement image loader with DevIL
  • Add Skeleton architecture for Graphics context

31 December, 2017

  • Add math classes (Complex, Vector, Matrix) and functionality
  • Improve json and xml parser interface
  • Implement constant strings on human readable (like xml or json) serialization
  • Improve the log
  • Fix some memory leak

29 October, 2017

  • Custom set of classes to handle objects and containers (vector, list, map, multimap)
  • Serialization with 4 formats (xml, json, raw and formatted binary) optimized for speed
  • Threads, mutexes, semaphores, atomics
  • Integration with TinyC library to build and execute Just-In time code
  • Custom memory allocation methods to trace leaks and optimize fragmentation
  • Full set of methods to handle streams into files and block of memory


The CJS Framework that I was developing in my spare time now has been changed into TextureMind (TM) Framework. That happened for different kind of reasons. When I created the CJS framework, my first aim was to create an opensource project for multiple target languages, using a valid and interchangable way to serialize a full set of classes. Well, even if it could be a good idea, it was too ambitious for a single person and, for job reasons, I didn't have the time to continue. So i decided to continue the framework in my spare time just for hobby and to facilitate the creation of applications, changing the title of the project to TextureMind Framework.

If you don't have time, why not open source?

I wanted to continue the project for hobby and maintain the originality of my idea, as it was in my mind, without external contaminations. I already know that there are similar solutions (like Google protobuf) and I don't want to change the aims of my project just for the sake of competition.

You may start a project with 'A' in your mind and probably you will end up with 'B', that is a good compromise between what you had in your mind and the feasibility of the project. Then, after years of commits from other people, you may find out that your project has slowly changed to become 'C', or if you want, something so different that you cannot even recognize anymore as your original idea. I know that you, as the creator of the project, can accept or refuse the contributions of other people, but after years of peer reviews and computer programming, I know for sure that your project will clash to the duty of satisfying any kind of need, from the most complex to the most stupid one, to such a point that it will become exactly what you have hated from the start and paradoxically what pushed you to create an alternative project: a huge mountain of external dependencies, nightmare branches and oddities of any kind. I asked to myself if I want to deal with this kind of situation just to satisfy my idea of computer programming, and the answer was "NO". My idea of computer programming, for individual projects, will be satisfied just programming it by myself, and that's the way it should be for everybody. Maybe in the future my project will become something incredible and I will release it as open source, but for now I want to leave it for those who have the time for doing it, but in my spare time, I want to simply enjoy the pleasure of computer programming without any kind of restriction. This is also the reason why I abandoned the old ambitious project to start the new one. In the future I will release some demos to show the features of this framework, I want to produce something really beautiful to see but I want to do it by myself.