1
0
Fork 0
BangleApps/apps/imageclock/README.md

198 lines
3.6 KiB
Markdown
Raw Normal View History

2022-02-19 01:58:08 +00:00
# Imageclock
This app is a highly customizable watchface. To use it, you need to select
a watchface from another source.
# Usage
2022-02-19 01:58:08 +00:00
Choose the folder which contains the watchface, then clock "Upload to watch".
# Design watch faces
2022-02-19 01:58:08 +00:00
## Folder structure
2022-02-19 01:58:08 +00:00
* watchfacename
* resources/
* face.json
* info.json
### resources
2022-02-19 01:58:08 +00:00
This folder contains image files. It can have subfolders. These files will
be read and converted into a resource bundle used by the clock
Folder types:
* Number
* Contains files named 0.ext to 9.ext and minus.ext
* WeatherIcon
* Contains files named with 3 digits for openweathermap weather codes, i.e. 721.ext
* Icon
* Notifications: sound.ext, silent.ext, vibrate.ext
* other status icons: on.ext, off.ext
* Scale
* Contains the components of the scale, named 0.ext to y.ext, y beeing the last element of the scale
### face.json
This file contains the description of the watch face elements.
#### Object types:
##### Properties
```
Properties: {
"Redraw": {
"Unlocked": 5000,
"Locked": 6000
}"
}
```
##### Images
```
Image: {
"X": 0,
"Y": 0,
ImagePath: [ "path", "in", "resources", "file" ]
}
```
##### Coded Images
```
CodedImage: {
"X": 0,
"Y": 0,
"Value": "WeatherCode",
ImagePath: [ "path", "in", "resources", "file" ]
}
```
The `Value` field is one of the implemented numerical values.
##### Number
Can bottom right, or top left aligned. Will currently force all numbers to
be integer.
```
"Number": {
"X": 123,
"Y": 123,
"Alignment": "BottomRight",
"Value": "Temperature",
"Spacing": 1,
"ImagePath": [ "path", "to", "numbers", "folder" ]
}
```
The `Value` field is one of the implemented numerical values.
`Alignment` is either `BottomRight` or `TopLeft`
##### Scale
```
"Scale": {
"X": 123,
"Y": 123,
"Value": "Temperature",
"MinValue": "-20",
"MaxValue": "50",
"ImagePath": [ "path", "to", "scale", "folder" ]
}
```
The `Value` field is one of the implemented numerical values.
`MaxValue` and `MinValue` set the start and endpoints of the scale.
##### MultiState
```
"MultiState": {
"X": 0,
"Y": 0,
"Value": "Lock",
"ImagePath": ["icons", "status", "lock"]
}
```
The `Value` field is one of the implemented multi state values.
##### Nesting
```
Container: {
"X": 10,
"Y": 10,
OtherContainer: {
"X": 5,
"Y": 5,
SomeElement: {
"X": 2,
"Y": 2,
<Content>
}
}
}
```
`SomeElement` will be drawn at X- and Y-position 2+5+10=17, because positions are relative to parent element.
Container names can be everything but other object names.
#### Implemented data sources
##### For Number objects
* Hour
* HourTens
* HourOnes
* Minute
* MinuteTens
* MinuteOnes
* Day
* DayTens
* DayOnes
* Month
* MonthTens
* MonthOnes
* Pulse
* Steps
* Temperature
* Pressure
* Altitude
* BatteryPercentage
* BatteryVoltage
* WeatherCode
* WeatherTemperature
##### For MultiState
* on/off
* Lock
* Charge
* Alarm
* Bluetooth
* BluetoothPeripheral
* HRM
* Barometer
* Compass
* GPS
* on/off/vibrate
* Notifications
### info.json
2022-02-19 01:58:08 +00:00
This file contains information for the conversion process, it will not be
stored on the watch
# TODO
2022-02-19 01:58:08 +00:00
* Performance improvements
* Mark elements with how often they need to be redrawn
* Use less RAM (maybe dedicated parser for JSON working on a stack/queue)
* Allow watchfaces to declare if the want to show widgets
* Temporarily show widgets with slide up/down
* Analog Hands?
* Finalize the file format
* Description of the file format
* Allow additional files for upload declared in info.json
# Creator
2022-02-19 01:58:08 +00:00
[halemmerich](https://github.com/halemmerich)