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:

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:
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.
all devices except dm50 tested by other users, not by me.
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
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:

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:
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.
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:
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:
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:
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:
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:
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:
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:
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)
- 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)
- Dizo Watch R, Realme (360х360)
- HK3Pro (360х360)
- HK9 (410x502)
- HK95 (410x502)
- L20, microwear (240x280)
- W3Pro+, XO (360х360)
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
- 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
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
Last edited: