New personal graphics tool for Garmin

Long story short (not to short as it seems).

I was still a newbie on the garmin platform. But in that short time and a few finished watch faces, I found out that there is probably no proper tool that could help me enough when working with graphics, especially with regard to bitmap character sets, and fully automated it. Everyone knows that garmin can't use antialiasing for maps, so it's necessary to do these things as a character set that can handle it. I wasted hours and even days of work on this. Since I use about 4 character sets for one resolution, it was necessary to constantly set up the software (FontBuilder is very nicely done by the way) and export character set after character set. In my case, a total of 28 times. In addition, FontBuilder exported .png images with a transparent background, so additional editing of both the image and the generated .fnt file was necessary.

However, what I couldn't do at all is creating a character set using my own images (icons). I had to design everything first, draw it in a graphic editor, export it as an png image and later manually define .fnt file for the layout of the elements. Time-consuming work and all this 7x, while each resolution has different sized icons and they are in different positions. Yes, I could use one, the largest size, and for lower resolutions scale the icons but keep them at the same coordinates, but the problem is that I almost always use different icon sizes for each watch face + I need to add different icons depending on the watch face = still a lot of manual work.

That's why I decided to automate it all and I made this simple tool in PHP that can do all this difficult work for me in one minute.

It all runs on my home server, so I can access the tool from any PC in the home. In the future, I am thinking, if I catch all the flies and maybe add some other useful tools, to publish the GGT tool somewhere on the Internet and give others access to it. However, it is still only at the level of reasoning. I would definitely like to include in the tool the possibility of generating bitmap character sets for generating analog hands. At the moment, I don't know if I will create my own model for rotation and character generation, but maybe user ftrimboli allows me to use his great python script, which should also be executable on PHP, which I found out (I can install python on my home server).

And the reason why I don't publish it right away is that the whole tool is tailored to my needs based on what I've learned in that short time and what I need to achieve with automation and it's not optimized to work for other users. For example, I only have fonts in the list that I use when creating watch faces and if I need a new font, I simply copy it to a folder on the server by hand. There is no possibility to upload your own and work with it. Also, since it's PHP and I didn't design any form input protections at all, it's quite dangerous for the live server. I think.

I'm quite interested what graphic tools do you use when creating watch faces? Do you also have and use some simple scripts for example written in python that you use to make things easier? Especially with those more design-oriented, where it's more about graphics than data and texts. To me it seemed endlessly exhausting. Until now...

  • But in the time that you wrote this whole PHP site I could have written 20 bash scripts that do exactly the same? Still don't get what the difference really is tbh :) But yeah if your happy with it its only great for you :) everyone has their own way. Was just saying that BMFont is basically a command line util and you can do whatever with it programmatically. You can even run it from python if you wish.  Just wanted to let you know before you invest a lot of time into something for nothing. 

    Watch face looks awesome btw, won't work on MIP screens tho, they don't have all those colors :) 

    Wondering how you made those progress bars fill up in that shape? 

    If you want to send over the code for your project I can give it a test on my own server, maybe I will like it too :)

  • Looks cool, I can also give it a try if you wish to share?

  • I could have written 20 bash scripts

    this :) I really don't like writing bash scripts and doing it for every single watch face, as each one is graphically different. different sizes of fonts, different sizes of icons. I wasted many hours  on these adjustments for other resolutions. Of course, thank you, I didn't know that bmfont has a command line, but I didn't use it anyway. i used fontbuilder (https://github.com/andryblack/fontbuilder

    colors on MIPS devices will be fine. not that saturated, but it will be there. On the enlarged image from the simulator, you can see how the system coped with graphics and colors.

    Each progress bar consists of an arc and a rectangle. the arc is filled first, and when it is full, the rectangle starts to be drawn (they are just simple conditions and calculations with regard to the goal for each activity). When it comes together, it looks like one object. For example. if you merge these 3 objects at the position x=0 and y=0, the left part of the watch face will be created.

  •  Another watch face where I fully used only GGT and I must honestly admit that it is a huge time saver for me. Even if I spent some time on development (and I will have to sacrifice some time yet, because I discovered small bugs), it comes back to me very quickly. For other resolutions than the native one I work in (454), I didn't even have to lift a finger. No lengthy export from a graphics program, no recalculation using a calculator.

    (the watch faces images are taken from the simulator,
    no further editing in the graphic software)

  • Work on the clock hand generator has begun Slight smile

    edit: this gives my server quite a decent amount of work Slight smile

  • Please share! I could have a try.

  • it is not yet in such a state that it could be productive for someone else. basically, it only automates everything that I had to do manually while working, and everyone has a different way of working. For me, it was a lot of work with exporting graphics for all resolutions, recalculating the size of character sets, editing .fnt files...

  • quick update. at this moment, after supplying three images (hour, minute, second),

    the script will create a bitmap character set for all resolutions (240, 260, 280, 360, 390, 416, 454) with an adaptable size for the tiles and automatic split so that the size of the bitmap character set is no larger than 576px thanks ftrimboli for the explanation Slight smile

    ...now i still need to generate all data for .fnt files.

  • Test looks functional. each clock hand has 4 colors.

  • Let me know when it is. Looks promising Thumbsup tone1