[TBUI] TBUI Watch face tool. Editor for one of the FitcloudPro watch face format.

Search This thread

vxsw

Senior Member
Dec 10, 2021
106
27
hi all again,

still in "beta", but seems works fine enough to public and allow to use this format even more effective than in vendors watch faces.

what does mean "TBUI"? it's just a tag in watch face (further "wf") file, what allow you identify it. you may find it at the end of all of this type of watch faces. just open it in any editor/viewer, go at the end of the file and you'll se it:
tbui.png

it's a very flexible format, perhaps a next version of "PUSH" (yep, a similar tag again). at least it looks similar but have more powerful abilities.
this format allow you to use in any combinations a lot of elements such as:
- clock hands (as discrete as smooth)
- digital data: time markers (49 in variants), sensors data (48 in variants)
- sequential frame-based elements (time, month, progress-bars, rolled-up elements... - 30 items)
- localizeable tags (chinesse/non chinesse)
- animations (sequential frames)
- buttons to call device menu items
- internal wf configuration (ability to enable/disable some groups of elements "on the fly")
and you not limited in one item per type (if you want).

but before to continue, to be honest I'd must warn:

WARNING - theoretically you may brick your device and may not recover it without special knowledge. while I'd investigated this format it happed few times in case of wrong frames compression. now it's solved and must not happens, but chances still not a zero. for sample, few days ago I've known what a zero mirror point for clock hands may cause stuck your device too. I did set a foolproof protection for exactly this issue, but can't check all of possibilities because of over 150 available elements.

ok. if you'd not escaped yet, let's continue.
TBUITool_Main_UI.pngTBUITool_Main_IT.pngTBUITool_Main_Reg.pngTBUITool_CE.pngTBUITool_SO.pngTBUITool_BL.pngbrwww.png68.png

editor was maked closer to the file format as maximum as possible, so you must understand few basic definitions:
- frame - just an image
- char set - required for elements what uses strings to display. technically. it's a group of assignments frames to characters/symbols. if you use some char set for element, then each char in string what must be displayed, would be replaced by assigned frame. if the char would not assigned, than it'll be skipped.
- ui element - a part of a wf what do something. display some sort of data or mark some region for some action.
- region - rarely uses. if you not in plane to make a hard wf, than you may just ignore it. treat it as "layer". it assign new start point of a coordinate for child elements, but have no affect for sequential of global drawing queue and not cut elements if it's draws out of region area. each region have it's own "sets" - a group of elements what must be shown at once. what det must be shown, may be configured by special element class.

so in this case, editor have a 4 "subeditors": "UI" ("UI items" and "Regions") and "Resources" ("Char Sets" and "Frames")

main interface controls:
horizontal control panel:
"X" - remove element
"A" - add new element as next
"U" - up at one position
"D" - down at one position
"+"/"-" - expand/collapse element
vertical control panel (for ui items editor only):
"+"/"-" - expand/collapse element
"H" - hide element on branch
"L" - ignore element on branch (would be displayed, but would be ignored by mouse)

available classes:
just a frame as is. used parameters:
Code:
Target ID - id of a frame
Parent Region ID - as named
Set ID - as named for region assigned in "Parent Region ID"
used parameters:
Code:
Target ID - id of a first frame in chain or alone frame id
X, Y - top left corner coordinates
X2, Y2 - coordinates of a mirror/rotate point
Parent Region ID - as named
Set ID - as named for region assigned in "Parent Region ID"

elements:
CHHoursHand16, CHMinutesHand16, CHSecondsHand16 - uses 16 sequential frames from "N" to "E". works as a discrete clock hands. all other frames would be used as a mirrored via lines goes through mirror point (x2, y2)
CHHoursHand1, CHMinutesHand1, CHSecondsHand1 - uses only one frame ("N"). would be rotated around x2, y2. works as a discrete clock hands. a lot of cpu usage - reduce size of a frame as possible.
CHHoursHandSmooth, CHMinutesHandSmooth, CHSecondsHandSmooth - uses only one frame ("N"). would be rotated around x2, y2. works as a smooth clock hands. a lot of cpu usage - reduce size of a frame as possible.
various elements what display time parts (hours, minutes, seconds, date, month, year, day of the week in different variants) as a numeric values
used parameters:
Code:
Target ID - id of a char set
X, Y - top left corner coordinates
X2, Y2 - used only for calendar table parts as a size of a cell
Align - align of an element to x, y point
Parent Region ID - as named
Set ID - as named for region assigned in "Parent Region ID"
Params 1 - second field only - kerning (interval between chars)
various elements what display sensors data (steps, hear rate, o2, battery level etc. in different variants) as a numeric values
used parameters:
Code:
Target ID - id of a char set
X, Y - top left corner coordinates
Align - align of an element to x, y point
Parent Region ID - as named
Set ID - as named for region assigned in "Parent Region ID"
Params 1 - second field only - kerning (interval between chars)
elements what display various tags for chinesse and non-chenesse localizations ("am/pm","bpp","o2","km"/"ml" etc. )
each item must have two sequential frames: for "chinesse" locale, then for "non-chinesse" locale.
useless if you have no plans to make a chinesse variant.
used parameters:
Code:
Target ID - id of a first frame (chinesse)
X, Y - top left corner coordinates
Align - align of an element to x, y point
Parent Region ID - as named
Set ID - as named for region assigned in "Parent Region ID"
various elements displays some data as sequential frames. like a progress-bars of some data, month etc.
used parameters:
Code:
Target ID - id of a first frame in chain
X, Y - top left corner coordinates
Parent Region ID - as named
Set ID - as named for region assigned in "Parent Region ID"
some sort of elements what not assigned to any other classes
used parameters:
Code:
Target ID - id of a first frame in chain
X, Y - top left corner coordinates
Parent Region ID - as named
Set ID - as named for region assigned in "Parent Region ID"
not analyzed yet
uses to call internal watch menus if exists
used parameters:
Code:
X, Y - top left corner coordinates
X2, Y2 - width and height of a button
Parent Region ID - as named
Set ID - as named for region assigned in "Parent Region ID"
selecting id of a set what must be shown in appropriate region. works like a button, but have a some specific.
used parameters:
Code:
X, Y - top left corner coordinates
X2, Y2 - width and height of a button
Region Type - how it must be used - via internal config or by tap
Params 1 - for "RSConfig" only. first field as a count of a selectable items
Params 2 - for "RSConfig" only. list of frames id what would be used as a thumbnails for selection menu

sorry for so short manual, it's a bit hard to write that's all on not my first language. you may use an original watch faces to learn how it works in details or ask me here or in pm.
~200 original watch faces for dm50 (466x466) available on my gdrive you may use it as a sample or just a template/resources.


- Ares 3, Zeblaze (360x360)
- C60, Colmi (240x280)
- C80, Colmi (368x448)
- DM50, Lemfo (466х466)
- HD11, Huadai (240x280)
- HK8pro (360x360)
- HK28 (368х448)
- HK46 (360x360)
- i20, Colmi (360x360)
- i30, Colmi (390?x390?)
- i31, Colmi (466x466)
- L10, Colmi (360x360)
- LA24, Linwear, Tiroki (360х360)
- LF26 Max, Lemfo (360х360)
- Vibe 7 Pro, Zeblaze (466x466)
- x7, Gejian (360x360)
- C81, Colmi (410x502)
- Dizo Watch R, Realme (360х360)
- HK3Pro (360х360)
- HK9 (410x502)
- HK95 (410x502)
- L20, microwear (240x280)
- W3Pro+, XO (360х360)
all devices except dm50 tested by other users, not by me.


03 jul 2023
- added local watch face browser. it allow you to rapid view frames of watch faces and directly import it to edited watch face. supported for viewing a two type of watch faces - "PUSH" and "TBUI"
- added monitoring/working with clear black (0, 0, 0) pixels covered by alpha mask. this pixels treat by watches as transparent. you'll allowed to convert it to darkest (as possible) gray.
04 jul 2023
- minor bug fixes
10 jul 2023
- fix. crash on opening wf'ses with declared resolution "0, 0"
14 jul 2023
- added web browser. at this time for fitcloudpro only and without request constructor, but you allowed to modify request string manually.
- added alpha-chanel support for PUSH-reader module.
09.08.2023
- in the web browser, for FitCloudPro server added local data base of wf'ses info, with ability to filter it by "lcd" and "type". it works like a server response emulator, what generate a "custom" list of wf'ses. the base would be shared separately because it'll be updated separately of main tool.
- for ui bench in editor, while you move a "Clock hands" elemenst, now you able to hold "shift", to lock mirroring lines.
- some minor fixes and improvements.
05.09.2023
- added support for viewing resources of WearPro formats (except two of it), include web requests and local db
- added support for viewing resources of KospetFit formats, include web requests and local db
- added clock hands generator
- some bug fixes
last changes (in short):
12.09.2023
- added basic checks for known errors, with log and locking ability to save. you still able to force save, but required to allow errors in options.
- rebuild working with alpha channel. now any half-transparent frames displays on watches correctly. don't worry about some "rainbow" pixels on rgb part, it's highly transparent and would not be displayed in rgba mode. it's a format specific thing.
- for frame editor added ability to merge rgb and alpha parts to convert rgba frames to rgb correctly.
- for KospetFit module added soe additional resolutions (168x240, 172x320, 194x368, 200x320, 410x502). for local base too (+1118 items)

download links:
main tool: TBUIWFTool72.zip
local db of a wf'ses info (just unzip in folder of main tool):
- FitCloudPro (4744 items): fcpWFList05092023.zip
- KospetFit (4958 items): kpWFList08092023.zip
- WearPro (2080 items): wpWFList17082023.zip
 

Attachments

  • fcpWFList05092023.zip
    261.7 KB · Views: 79
  • wpWFList17082023.zip
    117.3 KB · Views: 25
  • TBUIWFTool72.zip
    110.6 KB · Views: 56
  • kpWFList08092023.zip
    272.2 KB · Views: 12
Last edited:

vxsw

Senior Member
Dec 10, 2021
106
27
watch face for sample:
analog1.jpg
it was maked by request (converted from push 240x240 to tbui 360x360) and because my watch have a 466x466 resolution it looks shifted. but on 360x360 would be fine.

if you hold tap on display to get watch face selector, you'll see a little gear icon at bottom of preview:
analog2.jpg
tap it and you'll enter in internal config menu:
analog3.jpg
you can setup:
- ability to show/hide weather applet
- using static or roll-up month/day elements
- using battery level by 10% or by 1%
- select discrete seconds clock hand or smooth
also it have a few buttons in regular mode:
- weather (by tap weather applet)
- data (by tap steps)
- heart rate (by tap heart or it's numbers)
- timer (by center of a clock)
 

Attachments

  • analog.zip
    244.4 KB · Views: 47

danjayh

Member
Dec 28, 2010
9
0
woggle.net
I tried running the tool in a clean Windows 11 VM, and it wont start. Does it require a runtime or framework (eg, .NET, Python, etc.) to be installed?

EDIT: Nevermind, Windows' had blocked the file. Anyone else has this problem, right-click->propoerties->unblock. Windows does not give a helpful error message when failing to run. FYI I also got a hit in Windows Defender, which immediately deleted this when I first downloaded it. I scanned in in Kaspersky online and it appears to be clean, so it appears to be a false-positive, but that might have something to do with why Windows is making it so hard to run it.
 
Last edited:

vxsw

Senior Member
Dec 10, 2021
106
27
...Does it require a runtime or framework (eg, .NET, Python, etc.) to be installed?
...
.net 4.7.2 only.
...FYI I also got a hit in Windows Defender, which immediately deleted this when I first downloaded it...
I use it on win 10 and never seen nothing similar. also never heard about this issue (shared on other forum from march).
also it's not finished and would be updated. m.b. even not an once.
 

Jean-DrEaD

Senior Member
May 8, 2011
296
49
Great work... But how I can upload to Colmi i30?

Thanks!

EDIT: Learned to upload and all ok, thanks again!

It's possible to easy convert 466px to 390px? Or need export and import resized all frames?
 
Last edited:

vxsw

Senior Member
Dec 10, 2021
106
27
It's possible to easy convert 466px to 390px? Or need export and import resized all frames?
no. resizing in ".net" is a... not a good quality point. you must resize frames via external specialized tools. I use a xnview (for sample). it have a fine enough algorithms and batch processing.
with next build you'll be allowed to remove all frames by one click (already implemented in debugging build). also I'll integrate local browser (at first) for viewing graphical resources of local watch face files and export it or import to current watch face.
at this time, in debugging build it supports push format for viewing too (editing not in plans, just only as sourse of images). seems public build would be able at this week.
in plans some other formats and add web browser too.
 
  • Love
Reactions: Jean-DrEaD

vxsw

Senior Member
Dec 10, 2021
106
27
updated:
03 jul 2023
- added local watch face browser. it allow you to rapid view frames of watch faces and directly import it to edited watch face. supported for viewing a two type of watch faces - "PUSH" and "TBUI"
- added monitoring/working with clear black (0, 0, 0) pixels covered by alpha mask. this pixels treat by watches as transparent. you'll allowed to convert it to darkest (as possible) gray.
 
  • Like
Reactions: Jean-DrEaD

Jean-DrEaD

Senior Member
May 8, 2011
296
49
Awesome tool, thanks for updates!

I just dont know how to generate screenshot to use in preview.

Here my mod, 360px
 

Attachments

  • 01_003.png
    01_003.png
    22.1 KB · Views: 32
  • 01_003_mod.zip
    227.1 KB · Views: 31

Jean-DrEaD

Senior Member
May 8, 2011
296
49
what do you mean? looks all is fine enough (a lot of unused frames but must works correctly).
it have a preview frame and you configured it correctly.
In all previews the clock are looking "working"... Mine is just from editor, without "data"(weather/day/hours).

The unused frames is because IDs, Im too lazy to edit all in order after deleting hahaha
 

vxsw

Senior Member
Dec 10, 2021
106
27
In all previews the clock are looking "working"... Mine is just from editor, without "data"(weather/day/hours).
just scroll your mouse on elements to set values ;)

.....
The unused frames is because IDs, Im too lazy to edit all in order after deleting
as a hint. you may add an empty frame at the end, copy it and replace unused. you'll save the id's and reduce file size. of course if you not so lazy x)

p.s. not sure if I'm allowed to post it here, but if you need google-translated manuals:
{Mod edit: Link to 4pda removed. Oswald Boelcke, Senior Moderator}
{Mod edit: Link to 4pda removed. Oswald Boelcke, Senior Moderator}
 
Last edited by a moderator:
  • Love
Reactions: Jean-DrEaD

Allanon_71

New member
Aug 9, 2023
1
1
Hi @vxsw , I registered just to thank you for what you are doing!
I hope to have the time to play with your tool, thank you so much!
:)
 
  • Like
Reactions: vxsw

vxsw

Senior Member
Dec 10, 2021
106
27
updated
last changes:
09.08.2023
- in the web browser, for FitCloudPro server added local data base of wf'ses info, with ability to filter it by "lcd" and "type". it works like a server response emulator, what generate a "custom" list of wf'ses. the base would be shared separately because it'll be updated separately of main tool.
- for ui bench in editor, while you move a "Clock hands" elemenst, now you able to hold "shift", to lock mirroring lines.
- some minor fixes and improvements.



download links:
main tool: TBUIWFTool68.zip
local db of a wf'ses info (just unzip in folder of main tool): fcpWFList07082023.zip
68.png
Hi @vxsw , I registered just to thank you for what you are doing!
I hope to have the time to play with your tool, thank you so much!
:)
feel free to ask any questions.
 
  • Like
Reactions: Allanon_71

Ashish.Yadav

Member
Jun 4, 2015
29
5
hi all again,

still in "beta", but seems works fine enough to public and allow to use this format even more effective than in vendors watch faces.

what does mean "TBUI"? it's just a tag in watch face (further "wf") file, what allow you identify it. you may find it at the end of all of this type of watch faces. just open it in any editor/viewer, go at the end of the file and you'll se it:
View attachment 5923337

it's a very flexible format, perhaps a next version of "PUSH" (yep, a similar tag again). at least it looks similar but have more powerful abilities.
this format allow you to use in any combinations a lot of elements such as:
- clock hands (as discrete as smooth)
- digital data: time markers (49 in variants), sensors data (48 in variants)
- sequential frame-based elements (time, month, progress-bars, rolled-up elements... - 30 items)
- localizeable tags (chinesse/non chinesse)
- animations (sequential frames)
- buttons to call device menu items
- internal wf configuration (ability to enable/disable some groups of elements "on the fly")
and you not limited in one item per type (if you want).

but before to continue, to be honest I'd must warn:

WARNING - theoretically you may brick your device and may not recover it without special knowledge. while I'd investigated this format it happed few times in case of wrong frames compression. now it's solved and must not happens, but chances still not a zero. for sample, few days ago I've known what a zero mirror point for clock hands may cause stuck your device too. I did set a foolproof protection for exactly this issue, but can't check all of possibilities because of over 150 available elements.

ok. if you'd not escaped yet, let's continue.

editor was maked closer to the file format as maximum as possible, so you must understand few basic definitions:
- frame - just an image
- char set - required for elements what uses strings to display. technically. it's a group of assignments frames to characters/symbols. if you use some char set for element, then each char in string what must be displayed, would be replaced by assigned frame. if the char would not assigned, than it'll be skipped.
- ui element - a part of a wf what do something. display some sort of data or mark some region for some action.
- region - rarely uses. if you not in plane to make a hard wf, than you may just ignore it. treat it as "layer". it assign new start point of a coordinate for child elements, but have no affect for sequential of global drawing queue and not cut elements if it's draws out of region area. each region have it's own "sets" - a group of elements what must be shown at once. what det must be shown, may be configured by special element class.

so in this case, editor have a 4 "subeditors": "UI" ("UI items" and "Regions") and "Resources" ("Char Sets" and "Frames")

main interface controls:
horizontal control panel:
"X" - remove element
"A" - add new element as next
"U" - up at one position
"D" - down at one position
"+"/"-" - expand/collapse element
vertical control panel (for ui items editor only):
"+"/"-" - expand/collapse element
"H" - hide element on branch
"L" - ignore element on branch (would be displayed, but would be ignored by mouse)

available classes:
just a frame as is. used parameters:
Code:
Target ID - id of a frame
Parent Region ID - as named
Set ID - as named for region assigned in "Parent Region ID"
used parameters:
Code:
Target ID - id of a first frame in chain or alone frame id
X, Y - top left corner coordinates
X2, Y2 - coordinates of a mirror/rotate point
Parent Region ID - as named
Set ID - as named for region assigned in "Parent Region ID"

elements:
CHHoursHand16, CHMinutesHand16, CHSecondsHand16 - uses 16 sequential frames from "N" to "E". works as a discrete clock hands. all other frames would be used as a mirrored via lines goes through mirror point (x2, y2)
CHHoursHand1, CHMinutesHand1, CHSecondsHand1 - uses only one frame ("N"). would be rotated around x2, y2. works as a discrete clock hands. a lot of cpu usage - reduce size of a frame as possible.
CHHoursHandSmooth, CHMinutesHandSmooth, CHSecondsHandSmooth - uses only one frame ("N"). would be rotated around x2, y2. works as a smooth clock hands. a lot of cpu usage - reduce size of a frame as possible.
various elements what display time parts (hours, minutes, seconds, date, month, year, day of the week in different variants) as a numeric values
used parameters:
Code:
Target ID - id of a char set
X, Y - top left corner coordinates
X2, Y2 - used only for calendar table parts as a size of a cell
Align - align of an element to x, y point
Parent Region ID - as named
Set ID - as named for region assigned in "Parent Region ID"
Params 1 - second field only - kerning (interval between chars)
various elements what display sensors data (steps, hear rate, o2, battery level etc. in different variants) as a numeric values
used parameters:
Code:
Target ID - id of a char set
X, Y - top left corner coordinates
Align - align of an element to x, y point
Parent Region ID - as named
Set ID - as named for region assigned in "Parent Region ID"
Params 1 - second field only - kerning (interval between chars)
elements what display various tags for chinesse and non-chenesse localizations ("am/pm","bpp","o2","km"/"ml" etc. )
each item must have two sequential frames: for "chinesse" locale, then for "non-chinesse" locale.
useless if you have no plans to make a chinesse variant.
used parameters:
Code:
Target ID - id of a first frame (chinesse)
X, Y - top left corner coordinates
Align - align of an element to x, y point
Parent Region ID - as named
Set ID - as named for region assigned in "Parent Region ID"
various elements displays some data as sequential frames. like a progress-bars of some data, month etc.
used parameters:
Code:
Target ID - id of a first frame in chain
X, Y - top left corner coordinates
Parent Region ID - as named
Set ID - as named for region assigned in "Parent Region ID"
some sort of elements what not assigned to any other classes
used parameters:
Code:
Target ID - id of a first frame in chain
X, Y - top left corner coordinates
Parent Region ID - as named
Set ID - as named for region assigned in "Parent Region ID"
not analyzed yet
uses to call internal watch menus if exists
used parameters:
Code:
X, Y - top left corner coordinates
X2, Y2 - width and height of a button
Parent Region ID - as named
Set ID - as named for region assigned in "Parent Region ID"
selecting id of a set what must be shown in appropriate region. works like a button, but have a some specific.
used parameters:
Code:
X, Y - top left corner coordinates
X2, Y2 - width and height of a button
Region Type - how it must be used - via internal config or by tap
Params 1 - for "RSConfig" only. first field as a count of a selectable items
Params 2 - for "RSConfig" only. list of frames id what would be used as a thumbnails for selection menu

sorry for so short manual, it's a bit hard to write that's all on not my first language. you may use an original watch faces to learn how it works in details or ask me here or in pm.
~200 original watch faces for dm50 (466x466) available on my gdrive you may use it as a sample or just a template/resources.


- Ares 3, Zeblaze (360x360)
- C60, Colmi (240x280)
- C80, Colmi (368x448)
- DM50, Lemfo (466х466)
- HD11, Huadai (240x280)
- HK8pro (360x360)
- HK28 (368х448)
- HK46 (360x360)
- i20, Colmi (360x360)
- i30, Colmi (390?x390?)
- i31, Colmi (466x466)
- L10, Colmi (360x360)
- LA24, Linwear, Tiroki (360х360)
- LF26 Max, Lemfo (360х360)
- Vibe 7 Pro, Zeblaze (466x466)
- x7, Gejian (360x360)
- C81, Colmi (410x502)
- Dizo Watch R, Realme (360х360)
- HK3Pro (360х360)
- HK9 (410x502)
- HK95 (410x502)
- L20, microwear (240x280)
- W3Pro+, XO (360х360)
all devices except dm50 tested by other users, not by me.


03 jul 2023
- added local watch face browser. it allow you to rapid view frames of watch faces and directly import it to edited watch face. supported for viewing a two type of watch faces - "PUSH" and "TBUI"
- added monitoring/working with clear black (0, 0, 0) pixels covered by alpha mask. this pixels treat by watches as transparent. you'll allowed to convert it to darkest (as possible) gray.
04 jul 2023
- minor bug fixes
10 jul 2023
- fix. crash on opening wf'ses with declared resolution "0, 0"
14 jul 2023
- added web browser. at this time for fitcloudpro only and without request constructor, but you allowed to modify request string manually.
- added alpha-chanel support for PUSH-reader module.
last changes:
09.08.2023
- in the web browser, for FitCloudPro server added local data base of wf'ses info, with ability to filter it by "lcd" and "type". it works like a server response emulator, what generate a "custom" list of wf'ses. the base would be shared separately because it'll be updated separately of main tool.
- for ui bench in editor, while you move a "Clock hands" elemenst, now you able to hold "shift", to lock mirroring lines.
- some minor fixes and improvements.



download links:
main tool: TBUIWFTool68.zip
local db of a wf'ses info (just unzip in folder of main tool): fcpWFList07082023.zip

Kudos to the developer. This thing works on my watch Pebble Cosmos Endure which is the Indian company label on the developer's own dm50 because the watch is exactly the same as see in pictures here.

I have now my own edited and personalised watch face on my smartwatch. Thanks a lot @vxsw
 

Ashish.Yadav

Member
Jun 4, 2015
29
5
@vxsw I need one help. Please tell me how many frames does SpWeather requires and please list the weather status these frames should represent. My weather status is shown wrong in the watchface. Thanks in advance.
 

vxsw

Senior Member
Dec 10, 2021
106
27
Please tell me how many frames does SpWeather requires and please list the weather status these frames should represent
13. you can see the correct sequence in any official dial. use web or local browser for this.
for sample:
weather.png

and sorry, but I can only guess about meaning of each of it. you may try to look at some other dial with more understandable icons.
 
  • Like
Reactions: Ashish.Yadav

Top Liked Posts

  • There are no posts matching your filters.
  • 1
    @Ashish.Yadav @vxsw

    I've removed the links from your above posts. 4pda is not only another phone related website (and not at all affiliated with xda-developers) but also well known for the distribution of malware and warez. Links or references to 4pda are not accepted on XDA at all.
    XDA Forum Rules (excerpt):

    Please refrain from sharing links or references to 4pda in future.

    Thanks for your cooperation.
    Regards
    Oswald Boelcke
    Senior Moderator
    Apologies. Didn't know about pda4 ban. I posted only because the link I shared had legitimate useful instructions. Anyways, I'll be more vigilant in future to not repeat sharing anything from that site.
    1
    A piece of good work :)(y)
    I have a question? How do you upload an already converted dial to a watch Zeblaze Ares 3 Pro?
    it's depends on the app version, not the watch.
    - go to dial's market and select first watch face (customizeable)
    - tap "create", but do not tap "push"
    - do not close menu, just switch to file browser and go to "android/data/com.topstep.fitcloudpro/files/download/" folder
    - look at file with name what starts from "temp_". replace it by your wf
    - go back to fitcloud and now hit the "push"
    1
    is there a way we can store the community
    it's depends on the app version, not the watch.
    is there a way we can save/store the community watchfaces ? so anyone can access and try it ?
    1
    update:
    last changes (in short):
    12.09.2023
    - added basic checks for known errors, with log and locking ability to save. you still able to force save, but required to allow errors in options.
    - rebuild working with alpha channel. now any half-transparent frames displays on watches correctly. don't worry about some "rainbow" pixels on rgb part, it's highly transparent and would not be displayed in rgba mode. it's a format specific thing.
    - for frame editor added ability to merge rgb and alpha parts to convert rgba frames to rgb correctly.
    - for KospetFit module added soe additional resolutions (168x240, 172x320, 194x368, 200x320, 410x502). for local base too (+1118 items)
  • 6
    hi all again,

    still in "beta", but seems works fine enough to public and allow to use this format even more effective than in vendors watch faces.

    what does mean "TBUI"? it's just a tag in watch face (further "wf") file, what allow you identify it. you may find it at the end of all of this type of watch faces. just open it in any editor/viewer, go at the end of the file and you'll se it:
    tbui.png

    it's a very flexible format, perhaps a next version of "PUSH" (yep, a similar tag again). at least it looks similar but have more powerful abilities.
    this format allow you to use in any combinations a lot of elements such as:
    - clock hands (as discrete as smooth)
    - digital data: time markers (49 in variants), sensors data (48 in variants)
    - sequential frame-based elements (time, month, progress-bars, rolled-up elements... - 30 items)
    - localizeable tags (chinesse/non chinesse)
    - animations (sequential frames)
    - buttons to call device menu items
    - internal wf configuration (ability to enable/disable some groups of elements "on the fly")
    and you not limited in one item per type (if you want).

    but before to continue, to be honest I'd must warn:

    WARNING - theoretically you may brick your device and may not recover it without special knowledge. while I'd investigated this format it happed few times in case of wrong frames compression. now it's solved and must not happens, but chances still not a zero. for sample, few days ago I've known what a zero mirror point for clock hands may cause stuck your device too. I did set a foolproof protection for exactly this issue, but can't check all of possibilities because of over 150 available elements.

    ok. if you'd not escaped yet, let's continue.
    TBUITool_Main_UI.pngTBUITool_Main_IT.pngTBUITool_Main_Reg.pngTBUITool_CE.pngTBUITool_SO.pngTBUITool_BL.pngbrwww.png68.png

    editor was maked closer to the file format as maximum as possible, so you must understand few basic definitions:
    - frame - just an image
    - char set - required for elements what uses strings to display. technically. it's a group of assignments frames to characters/symbols. if you use some char set for element, then each char in string what must be displayed, would be replaced by assigned frame. if the char would not assigned, than it'll be skipped.
    - ui element - a part of a wf what do something. display some sort of data or mark some region for some action.
    - region - rarely uses. if you not in plane to make a hard wf, than you may just ignore it. treat it as "layer". it assign new start point of a coordinate for child elements, but have no affect for sequential of global drawing queue and not cut elements if it's draws out of region area. each region have it's own "sets" - a group of elements what must be shown at once. what det must be shown, may be configured by special element class.

    so in this case, editor have a 4 "subeditors": "UI" ("UI items" and "Regions") and "Resources" ("Char Sets" and "Frames")

    main interface controls:
    horizontal control panel:
    "X" - remove element
    "A" - add new element as next
    "U" - up at one position
    "D" - down at one position
    "+"/"-" - expand/collapse element
    vertical control panel (for ui items editor only):
    "+"/"-" - expand/collapse element
    "H" - hide element on branch
    "L" - ignore element on branch (would be displayed, but would be ignored by mouse)

    available classes:
    just a frame as is. used parameters:
    Code:
    Target ID - id of a frame
    Parent Region ID - as named
    Set ID - as named for region assigned in "Parent Region ID"
    used parameters:
    Code:
    Target ID - id of a first frame in chain or alone frame id
    X, Y - top left corner coordinates
    X2, Y2 - coordinates of a mirror/rotate point
    Parent Region ID - as named
    Set ID - as named for region assigned in "Parent Region ID"

    elements:
    CHHoursHand16, CHMinutesHand16, CHSecondsHand16 - uses 16 sequential frames from "N" to "E". works as a discrete clock hands. all other frames would be used as a mirrored via lines goes through mirror point (x2, y2)
    CHHoursHand1, CHMinutesHand1, CHSecondsHand1 - uses only one frame ("N"). would be rotated around x2, y2. works as a discrete clock hands. a lot of cpu usage - reduce size of a frame as possible.
    CHHoursHandSmooth, CHMinutesHandSmooth, CHSecondsHandSmooth - uses only one frame ("N"). would be rotated around x2, y2. works as a smooth clock hands. a lot of cpu usage - reduce size of a frame as possible.
    various elements what display time parts (hours, minutes, seconds, date, month, year, day of the week in different variants) as a numeric values
    used parameters:
    Code:
    Target ID - id of a char set
    X, Y - top left corner coordinates
    X2, Y2 - used only for calendar table parts as a size of a cell
    Align - align of an element to x, y point
    Parent Region ID - as named
    Set ID - as named for region assigned in "Parent Region ID"
    Params 1 - second field only - kerning (interval between chars)
    various elements what display sensors data (steps, hear rate, o2, battery level etc. in different variants) as a numeric values
    used parameters:
    Code:
    Target ID - id of a char set
    X, Y - top left corner coordinates
    Align - align of an element to x, y point
    Parent Region ID - as named
    Set ID - as named for region assigned in "Parent Region ID"
    Params 1 - second field only - kerning (interval between chars)
    elements what display various tags for chinesse and non-chenesse localizations ("am/pm","bpp","o2","km"/"ml" etc. )
    each item must have two sequential frames: for "chinesse" locale, then for "non-chinesse" locale.
    useless if you have no plans to make a chinesse variant.
    used parameters:
    Code:
    Target ID - id of a first frame (chinesse)
    X, Y - top left corner coordinates
    Align - align of an element to x, y point
    Parent Region ID - as named
    Set ID - as named for region assigned in "Parent Region ID"
    various elements displays some data as sequential frames. like a progress-bars of some data, month etc.
    used parameters:
    Code:
    Target ID - id of a first frame in chain
    X, Y - top left corner coordinates
    Parent Region ID - as named
    Set ID - as named for region assigned in "Parent Region ID"
    some sort of elements what not assigned to any other classes
    used parameters:
    Code:
    Target ID - id of a first frame in chain
    X, Y - top left corner coordinates
    Parent Region ID - as named
    Set ID - as named for region assigned in "Parent Region ID"
    not analyzed yet
    uses to call internal watch menus if exists
    used parameters:
    Code:
    X, Y - top left corner coordinates
    X2, Y2 - width and height of a button
    Parent Region ID - as named
    Set ID - as named for region assigned in "Parent Region ID"
    selecting id of a set what must be shown in appropriate region. works like a button, but have a some specific.
    used parameters:
    Code:
    X, Y - top left corner coordinates
    X2, Y2 - width and height of a button
    Region Type - how it must be used - via internal config or by tap
    Params 1 - for "RSConfig" only. first field as a count of a selectable items
    Params 2 - for "RSConfig" only. list of frames id what would be used as a thumbnails for selection menu

    sorry for so short manual, it's a bit hard to write that's all on not my first language. you may use an original watch faces to learn how it works in details or ask me here or in pm.
    ~200 original watch faces for dm50 (466x466) available on my gdrive you may use it as a sample or just a template/resources.


    - Ares 3, Zeblaze (360x360)
    - C60, Colmi (240x280)
    - C80, Colmi (368x448)
    - DM50, Lemfo (466х466)
    - HD11, Huadai (240x280)
    - HK8pro (360x360)
    - HK28 (368х448)
    - HK46 (360x360)
    - i20, Colmi (360x360)
    - i30, Colmi (390?x390?)
    - i31, Colmi (466x466)
    - L10, Colmi (360x360)
    - LA24, Linwear, Tiroki (360х360)
    - LF26 Max, Lemfo (360х360)
    - Vibe 7 Pro, Zeblaze (466x466)
    - x7, Gejian (360x360)
    - C81, Colmi (410x502)
    - Dizo Watch R, Realme (360х360)
    - HK3Pro (360х360)
    - HK9 (410x502)
    - HK95 (410x502)
    - L20, microwear (240x280)
    - W3Pro+, XO (360х360)
    all devices except dm50 tested by other users, not by me.


    03 jul 2023
    - added local watch face browser. it allow you to rapid view frames of watch faces and directly import it to edited watch face. supported for viewing a two type of watch faces - "PUSH" and "TBUI"
    - added monitoring/working with clear black (0, 0, 0) pixels covered by alpha mask. this pixels treat by watches as transparent. you'll allowed to convert it to darkest (as possible) gray.
    04 jul 2023
    - minor bug fixes
    10 jul 2023
    - fix. crash on opening wf'ses with declared resolution "0, 0"
    14 jul 2023
    - added web browser. at this time for fitcloudpro only and without request constructor, but you allowed to modify request string manually.
    - added alpha-chanel support for PUSH-reader module.
    09.08.2023
    - in the web browser, for FitCloudPro server added local data base of wf'ses info, with ability to filter it by "lcd" and "type". it works like a server response emulator, what generate a "custom" list of wf'ses. the base would be shared separately because it'll be updated separately of main tool.
    - for ui bench in editor, while you move a "Clock hands" elemenst, now you able to hold "shift", to lock mirroring lines.
    - some minor fixes and improvements.
    05.09.2023
    - added support for viewing resources of WearPro formats (except two of it), include web requests and local db
    - added support for viewing resources of KospetFit formats, include web requests and local db
    - added clock hands generator
    - some bug fixes
    last changes (in short):
    12.09.2023
    - added basic checks for known errors, with log and locking ability to save. you still able to force save, but required to allow errors in options.
    - rebuild working with alpha channel. now any half-transparent frames displays on watches correctly. don't worry about some "rainbow" pixels on rgb part, it's highly transparent and would not be displayed in rgba mode. it's a format specific thing.
    - for frame editor added ability to merge rgb and alpha parts to convert rgba frames to rgb correctly.
    - for KospetFit module added soe additional resolutions (168x240, 172x320, 194x368, 200x320, 410x502). for local base too (+1118 items)

    download links:
    main tool: TBUIWFTool72.zip
    local db of a wf'ses info (just unzip in folder of main tool):
    - FitCloudPro (4744 items): fcpWFList05092023.zip
    - KospetFit (4958 items): kpWFList08092023.zip
    - WearPro (2080 items): wpWFList17082023.zip
    1
    It's possible to easy convert 466px to 390px? Or need export and import resized all frames?
    no. resizing in ".net" is a... not a good quality point. you must resize frames via external specialized tools. I use a xnview (for sample). it have a fine enough algorithms and batch processing.
    with next build you'll be allowed to remove all frames by one click (already implemented in debugging build). also I'll integrate local browser (at first) for viewing graphical resources of local watch face files and export it or import to current watch face.
    at this time, in debugging build it supports push format for viewing too (editing not in plans, just only as sourse of images). seems public build would be able at this week.
    in plans some other formats and add web browser too.
    1
    updated:
    03 jul 2023
    - added local watch face browser. it allow you to rapid view frames of watch faces and directly import it to edited watch face. supported for viewing a two type of watch faces - "PUSH" and "TBUI"
    - added monitoring/working with clear black (0, 0, 0) pixels covered by alpha mask. this pixels treat by watches as transparent. you'll allowed to convert it to darkest (as possible) gray.
    1
    uoloaded 0.6.3
    04 jul 2023
    - minor bug fixes
    1
    In all previews the clock are looking "working"... Mine is just from editor, without "data"(weather/day/hours).
    just scroll your mouse on elements to set values ;)

    .....
    The unused frames is because IDs, Im too lazy to edit all in order after deleting
    as a hint. you may add an empty frame at the end, copy it and replace unused. you'll save the id's and reduce file size. of course if you not so lazy x)

    p.s. not sure if I'm allowed to post it here, but if you need google-translated manuals:
    {Mod edit: Link to 4pda removed. Oswald Boelcke, Senior Moderator}
    {Mod edit: Link to 4pda removed. Oswald Boelcke, Senior Moderator}