Import of the watch repository from Pebble

This commit is contained in:
Matthieu Jeanson 2024-12-12 16:43:03 -08:00 committed by Katharine Berry
commit 3b92768480
10334 changed files with 2564465 additions and 0 deletions

21
third_party/pbl/LICENSE vendored Normal file
View file

@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) 2015 Pebble Technology
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

59
third_party/pbl/pbl/.gitignore vendored Normal file
View file

@ -0,0 +1,59 @@
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
env/
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
*.egg-info/
.installed.cfg
*.egg
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*,cover
.hypothesis/
# Translations
*.mo
*.pot
# Django stuff:
*.log
# Sphinx documentation
docs/_build/
# PyBuilder
target/

21
third_party/pbl/pbl/README.md vendored Normal file
View file

@ -0,0 +1,21 @@
# pbl
Like pebble-tool, but for internal things.
Not to be confused with pebble-tool-dev. This repository is for internal tools
that don't make sense to ever be public; pebble-tool-dev is for public tools
that can't be public yet.
Not sure where to put something? Ask Katharine!
## Installation
pip install git+ssh://git@github.com/pebble/pbl.git
## Adding commands
Create a new file in pbl/commands. Add a class inheriting from `BaseCommand`
(or `PebbleCommand` if it connects to a pebble). The docstring will be used as
help. Include a `command` field that gives the name of the command. The class's
`__call__` method will be called when you run the command.
Many examples can be found [in pebble-tool](https://github.com/pebble/pebble-tool/tree/master/pebble_tool/commands).

37
third_party/pbl/pbl/pbl/__init__.py vendored Normal file
View file

@ -0,0 +1,37 @@
import logging
import pebble_tool
from libpebble2.communication.transports.pulse import PULSETransport
from libpebble2.exceptions import PebbleError
from commands import coredump
from commands import install_lang
from commands import test
# TODO: unopened logging ports cause super noisy logs, fix this in the
# pulse package then remove this
logging.getLogger('pebble.pulse2.transports').setLevel(logging.ERROR)
class PebbleTransportPULSE(pebble_tool.commands.base.PebbleTransportConfiguration):
transport_class = PULSETransport
name = 'pulse'
@classmethod
def _connect_args(cls, args):
try:
from pebble import pulse2
except ImportError:
raise PebbleError('pulse2 package not installed: it is required for PULSE transport')
url, = super(PebbleTransportPULSE, cls)._connect_args(args)
interface = pulse2.Interface.open_dbgserial(url=url)
link = interface.get_link()
return (link,)
@classmethod
def add_argument_handler(cls, parser):
parser.add_argument('--pulse', type=str,
help="Use this option to connect to your Pebble via"
" the PULSE transport. Equivalent to PEBBLE_PULSE.")
def run_tool(args=None):
pebble_tool.run_tool(args)

View file

View file

@ -0,0 +1,58 @@
from __future__ import absolute_import, print_function
import datetime
from progressbar import ProgressBar, Bar, FileTransferSpeed, Timer, Percentage
from libpebble2.protocol.transfers import GetBytesInfoResponse
from libpebble2.services.getbytes import GetBytesService
from libpebble2.exceptions import GetBytesError
from pebble_tool.commands.base import PebbleCommand
from pebble_tool.exceptions import ToolError
class CoredumpCommand(PebbleCommand):
"""Takes a screenshot from the watch."""
command = 'coredump'
def __init__(self):
self.progress_bar = ProgressBar(widgets=[Percentage(), Bar(marker='=', left='[', right=']'), ' ',
FileTransferSpeed(), ' ', Timer(format='%s')])
self.started = False
def __call__(self, args):
super(CoredumpCommand, self).__call__(args)
get_bytes = GetBytesService(self.pebble)
get_bytes.register_handler("progress", self._handle_progress)
self.progress_bar.start()
try:
core_data = get_bytes.get_coredump(args.fresh)
except GetBytesError as ex:
if ex.code == GetBytesInfoResponse.ErrorCode.DoesNotExist:
raise ToolError('No coredump on device')
else:
raise
self.progress_bar.finish()
filename = self._generate_filename() if args.filename is None else args.filename
with open(filename, "w") as core_file:
core_file.write(core_data)
print("Saved coredump to {}".format(filename))
def _handle_progress(self, progress, total):
if not self.started:
self.progress_bar.maxval = total
self.started = True
self.progress_bar.update(progress)
@classmethod
def _generate_filename(cls):
return datetime.datetime.now().strftime("pebble_coredump_%Y-%m-%d_%H-%M-%S.core")
@classmethod
def add_parser(cls, parser):
parser = super(CoredumpCommand, cls).add_parser(parser)
parser.add_argument('filename', nargs='?', type=str, help="Filename of coredump")
parser.add_argument('--fresh', action="store_true", help="Require a fresh coredump")
return parser

View file

@ -0,0 +1,38 @@
from __future__ import absolute_import, print_function
from pebble_tool.commands.base import PebbleCommand
from progressbar import ProgressBar, Bar, FileTransferSpeed, Timer, Percentage
from libpebble2.services.putbytes import PutBytes, PutBytesType
class InstallLangCcommand(PebbleCommand):
"""Install a language pack on a watch"""
command = 'install-lang'
def __call__(self, args):
super(InstallLangCcommand, self).__call__(args)
progress_bar = ProgressBar(widgets=[Percentage(), Bar(marker='=', left='[', right=']'),
' ', FileTransferSpeed(), ' ', Timer(format='%s')])
with open(args.lang_file, 'rb') as f:
lang_pack = f.read()
progress_bar.maxval = len(lang_pack)
progress_bar.start()
def _handle_progress(sent, total_sent, total_length):
progress_bar.update(total_sent)
pb = PutBytes(self.pebble, PutBytesType.File, lang_pack, bank=0, filename="lang")
pb.register_handler("progress", _handle_progress)
pb.send()
progress_bar.finish()
@classmethod
def add_parser(cls, parser):
parser = super(InstallLangCcommand, cls).add_parser(parser)
parser.add_argument('lang_file', help="Language file to install")
return parser

View file

@ -0,0 +1,11 @@
from __future__ import absolute_import, print_function
from pebble_tool.commands.base import BaseCommand
class TestCommand(BaseCommand):
"""Testing!"""
command = 'test'
def __call__(self, *args):
super(TestCommand, self).__call__(*args)
print("Hi there!")

1
third_party/pbl/pbl/pbl/version.py vendored Normal file
View file

@ -0,0 +1 @@
__version__ = "1.0.1"

30
third_party/pbl/pbl/setup.py vendored Normal file
View file

@ -0,0 +1,30 @@
__author__ = 'katharine'
import sys
from setuptools import setup, find_packages
requires = [
'pebble_tool==4.4-dp2',
'libpebble2[pulse]>=0.0.23',
]
if sys.version_info < (3, 4, 0):
requires.append('enum34==1.0.4')
__version__ = None # Overwritten by executing version.py.
with open('pbl/version.py') as f:
exec(f.read())
setup(name='pbl-tool',
version=__version__,
description='Internal tool for interacting with pebbles.',
url='https://github.com/pebble/pbl',
author='Pebble Technology Corporation',
author_email='katharine@pebble.com',
license='MIT',
packages=find_packages(),
install_requires=requires,
entry_points={
'console_scripts': ['pbl=pbl:run_tool'],
},
zip_safe=False)

7
third_party/pbl/pblconvert/.gitignore vendored Normal file
View file

@ -0,0 +1,7 @@
.idea
*.pyc
tests/examples/internal
build
dist
pblconvert.egg-info
.DS_Store

28
third_party/pbl/pblconvert/README.rst vendored Normal file
View file

@ -0,0 +1,28 @@
pblconvert
==========
pblconvert is a tool to convert pebble resources.
Today, it can be used to convert SVGs to PDCs.
Installing
-----------
```
$ pip install .
```
Running tests
-------------
```
$ nosetests tests
```
Usage
------
```
pblconvert --infile <input> [--informat --outfile --outformat]
```
One of [outformat|outfile] is required

View file

@ -0,0 +1,12 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""Convenience wrapper for running directly from source tree."""
from pblconvert.pblconvert import main
if __name__ == '__main__':
main()

View file

View file

@ -0,0 +1,8 @@
# -*- coding: utf-8 -*-
"""executed when directory is called as script."""
from pblconvert import main
main()

View file

View file

@ -0,0 +1,31 @@
#!/usr/bin/env python
from __future__ import print_function
import os
import platform
import sys
import subprocess
arguments = sys.argv[1:]
THIS_PATH = os.path.abspath(__file__)
LINUX_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'gif2apng_noprev_linux')
OSX_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'gif2apng_noprev_osx')
if platform.system() == 'Darwin':
cmd = [OSX_PATH]
elif platform.system() == 'Linux':
cmd = [LINUX_PATH]
else:
raise Exception("Your operating system is not supported")
# Transform absolute paths into relative paths (they are not supported)
arguments = [a if a[0] != '/' else os.path.relpath(a, THIS_PATH) for a in arguments]
cmd += arguments
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = p.communicate()
print(out, file=sys.stdout)
print(err, file=sys.stderr)
sys.exit(p.returncode)

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,145 @@
#!/usr/bin/env python
import os, sys
from ctypes import *
from PIL import Image
format_dict = {
'GBitmapFormat1Bit': 0,
'GBitmapFormat8Bit': 1,
'GBitmapFormat1BitPalette': 2,
'GBitmapFormat2BitPalette': 3,
'GBitmapFormat4BitPalette': 4
}
# NOTE: If this changes, please update the GBitmapDump gdb command.
class pbi_struct(Structure):
_fields_ = [
("stride", c_uint16), ("info", c_uint16),
("bounds_x", c_uint16), ("bounds_y", c_uint16),
("bounds_w", c_uint16), ("bounds_h", c_uint16),
]
def flip_byte(abyte):
return int('{:08b}'.format(abyte)[::-1],2)
#converts from argb8 (2-bits per color channel) to RGBA32 (byte per channel)
def argb8_to_rgba32(argb8):
return (
((argb8 >> 4) & 0x3) * 85, #R
((argb8 >> 2) & 0x3) * 85, #G
((argb8 ) & 0x3) * 85, #B
((argb8 >> 6) & 0x3) * 85) #A
def pbi_format(info):
return (info & 0xe) >> 1
def pbi_bitdepth(fmt):
bitdepth_list = [1, 8, 1, 2, 4]
return bitdepth_list[fmt]
def pbi_is_palettized(fmt):
return fmt >= format_dict['GBitmapFormat1BitPalette']
def palette_size(fmt):
return 2 ** pbi_bitdepth(fmt)
def pbi_to_png(pbi, pixel_bytearray):
gbitmap_version = (pbi.info >> 12) & 0x0F
gbitmap_format = pbi_format(pbi.info)
# if version is 2 and format is 0x01 (GBitmapFormat8Bit)
if gbitmap_version == 1 and gbitmap_format == format_dict['GBitmapFormat8Bit']:
print("8-bit ARGB color image")
pixel_rgba_array = bytearray()
for (idx, abyte) in enumerate(pixel_bytearray):
argb8 = pixel_bytearray[idx]
pixel_rgba_array.append(((argb8 >> 4) & 0x3) * 85) # r
pixel_rgba_array.append(((argb8 >> 2) & 0x3) * 85) # g
pixel_rgba_array.append(((argb8 >> 0) & 0x3) * 85) # b
pixel_rgba_array.append(((argb8 >> 6) & 0x3) * 85) # a
png = Image.frombuffer('RGBA', (pbi.bounds_w, pbi.bounds_h),
buffer(pixel_rgba_array), 'raw', 'RGBA', pbi.stride * 4, 1)
elif gbitmap_version == 1 and pbi_is_palettized(gbitmap_format):
bitdepth = pbi_bitdepth(gbitmap_format)
print("{}-bit palettized color image".format(bitdepth))
# Create palette colors in format R, G, B, A
palette = []
palette_offset = pbi.stride * pbi.bounds_h
for argb8 in pixel_bytearray[palette_offset:]:
palette.append((argb8_to_rgba32(argb8)))
pixels = []
# go through the image data byte by byte, and handle
# converting the depth-packed indexes for the palette to an unpacked list
idx = 0 # index of actual packed values including padded values
for pxl8 in pixel_bytearray[:palette_offset]:
for i in xrange(0, 8 / bitdepth):
# only append actual pixels, ignoring padding pixels
# which is the difference between the width and the stride
if (idx % (pbi.stride * (8 / bitdepth)) < pbi.bounds_w):
pixels.append(
((pxl8 >> (bitdepth * (8 / bitdepth - (i + 1)))) & ~(~0 << bitdepth)))
idx = idx + 1
# Manually convert from paletted to RGBA
# as PIL doesn't seem to handle palette with alpha
rgba_pixels = []
for pal_pxl in pixels:
rgba_pixels.append(palette[pal_pxl])
png = Image.new('RGBA', (pbi.bounds_w, pbi.bounds_h))
png.putdata(rgba_pixels)
# legacy 1-bit format
elif gbitmap_version == 0 or \
(gbitmap_version == 1 and gbitmap_format == format_dict['GBitmapFormat1Bit']):
print("1-bit b&w image")
# pbi has bits in bytes reversed, so flip here
for (idx, abyte) in enumerate(pixel_bytearray):
pixel_bytearray[idx] = flip_byte(pixel_bytearray[idx])
png = Image.frombuffer('1', (pbi.bounds_w, pbi.bounds_h),
buffer(pixel_bytearray), 'raw', '1', pbi.stride, 1)
else:
print "Bad PBI"
png = None
return png
def main():
# arguments, print an example of correct usage.
if len(sys.argv) - 1 != 2:
print("********************")
print("Usage suggestion:")
print("python " + sys.argv[0] + " <in_image.pbi> <out_image.png>")
print("********************")
exit()
input_filename = sys.argv[1]
output_filename = sys.argv[2]
print("Converting PBI to PNG...")
pbi = pbi_struct()
pixel_bytearray = bytearray()
with open(input_filename, 'rb') as afile:
afile.readinto(pbi)
print("x:%d y:%d" % (pbi.bounds_x, pbi.bounds_y))
print("Width:%d Height:%d" % (pbi.bounds_w, pbi.bounds_h))
print("row stride:%d" % (pbi.stride))
pixel_bytearray = bytearray(afile.read())
png = pbi_to_png(pbi, pixel_bytearray)
png.save(output_filename)
if __name__ == '__main__':
main()

View file

@ -0,0 +1,27 @@
#!/usr/bin/env python
from __future__ import print_function
import os
import platform
import sys
import subprocess
arguments = sys.argv[1:]
LINUX_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'pdc2png_linux')
OSX_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'pdc2png_osx')
if platform.system() == 'Darwin':
cmd = [OSX_PATH]
elif platform.system() == 'Linux':
cmd = [LINUX_PATH]
else:
raise Exception("Your operating system is not supported")
cmd.extend(arguments)
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = p.communicate()
print(out, file=sys.stdout)
print(err, file=sys.stderr)
sys.exit(p.returncode)

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,6 @@
class PblConvertError(Exception):
def __str__(self):
return self.__class__.__name__ + ': ' + ' '.join(self.args)
class PblConvertFormatError(PblConvertError):
pass

View file

@ -0,0 +1,68 @@
; The colormap for the Pebble Time family watches
; in a format gifsicle understands.
; See https://www.lcdf.org/gifsicle/man.html
; for more details on the --user-colormap flag
0 0 0
0 0 85
0 0 170
0 0 255
0 85 0
0 85 85
0 85 170
0 85 255
0 170 0
0 170 85
0 170 170
0 170 255
0 255 0
0 255 85
0 255 170
0 255 255
85 0 0
85 0 85
85 0 170
85 0 255
85 85 0
85 85 85
85 85 170
85 85 255
85 170 0
85 170 85
85 170 170
85 170 255
85 255 0
85 255 85
85 255 170
85 255 255
170 0 0
170 0 85
170 0 170
170 0 255
170 85 0
170 85 85
170 85 170
170 85 255
170 170 0
170 170 85
170 170 170
170 170 255
170 255 0
170 255 85
170 255 170
170 255 255
255 0 0
255 0 85
255 0 170
255 0 255
255 85 0
255 85 85
255 85 170
255 85 255
255 170 0
255 170 85
255 170 170
255 170 255
255 255 0
255 255 85
255 255 170
255 255 255

View file

@ -0,0 +1,7 @@
class Gif2ApngError(Exception):
def __str__(self):
return self.__class__.__name__ + ': ' + ' '.join(self.args)
class Gif2ApngFormatError(Gif2ApngError):
pass

View file

@ -0,0 +1,69 @@
from __future__ import print_function
import imghdr
import io
import os
import subprocess
import sys
import tempfile
# gif2apng
from exceptions import *
GIF2APNG_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)),
'../bin/gif2apng')
COLORMAP_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)),
'colormap.txt')
def read_gif(obj):
data = obj.read()
if imghdr.what(None, data) != 'gif':
raise Gif2ApngFormatError("{} is not a valid GIF data".format(path))
return data
def convert_to_apng(gif):
# Write data to temporary file
gif_file = tempfile.NamedTemporaryFile(delete=False)
gif_file.write(gif)
gif_file.close()
# Map onto Pebble colors
mod_file = tempfile.NamedTemporaryFile(delete=False)
mod_file.close()
p = subprocess.Popen(['gifsicle',
'--colors', '64',
'--use-colormap', COLORMAP_PATH,
'-O1',
'-o', mod_file.name,
gif_file.name],
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = p.communicate()
# Deal with https://github.com/kohler/gifsicle/issues/28
# Which still exists in some of the packages out there
if p.returncode not in [0, 1]:
print(err, file=sys.stderr)
raise Gif2ApngError(p.returncode)
# Convert to APNG
apng_file = tempfile.NamedTemporaryFile(delete=False)
apng_file.close()
p = subprocess.Popen([GIF2APNG_PATH,
'-z0',
mod_file.name,
apng_file.name],
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = p.communicate()
if p.returncode != 0:
print(err, file=sys.stderr)
raise Gif2ApngError(p.returncode)
with open(apng_file.name) as f:
apng_data = f.read()
os.unlink(gif_file.name)
os.unlink(mod_file.name)
os.unlink(apng_file.name)
return apng_data

View file

@ -0,0 +1,112 @@
from abc import *
from exceptions import PblConvertFormatError
from gif2apng.gif import read_gif, convert_to_apng
from gif2apng.exceptions import Gif2ApngFormatError
from svg2pdc.pdc import serialize_image, convert_to_png
from svg2pdc.svg import surface_from_svg
from svg2pdc.exceptions import Svg2PdcFormatError
class Handler:
__metaclass__ = ABCMeta
@classmethod
def handler_for_format(cls, fmt):
if cls is Handler:
for C in cls.__subclasses__():
if fmt == C.format():
return C()
return None
raise NotImplementedError
@abstractmethod
def read(self, in_obj):
return None
@abstractmethod
def format(self):
return ""
@abstractmethod
def write_pdc(self, out_obj, data):
return None
@abstractmethod
def write_apng(self, out_obj, data):
return None
@abstractmethod
def write_png(self, out_obj, data):
return None
@abstractmethod
def write_svg(self, out_obj, data):
return None
class SvgHandler(Handler):
@classmethod
def format(cls):
return "svg"
def read(self, in_obj):
try:
surface = surface_from_svg(bytestring=in_obj.read(),
approximate_bezier=True)
except Svg2PdcFormatError as e:
raise PblConvertFormatError(e.args[0])
return surface
def write_apng(self, out_obj, data):
raise NotImplementedError
def write_pdc(self, out_obj, surface):
commands = surface.pdc_commands
pdci = serialize_image(commands, surface.size())
with out_obj as o:
o.write(pdci)
def write_png(self, out_obj, surface):
commands = surface.pdc_commands
pdci = serialize_image(commands, surface.size())
with out_obj as o:
o.write(convert_to_png(pdci))
def write_svg(self, out_obj, surface):
with out_obj as o:
et = surface.element_tree()
et.write(o, pretty_print=True)
class GifHandler(Handler):
@classmethod
def format(cls):
return "gif"
def read(self, in_obj):
try:
gif = read_gif(in_obj)
except Gif2ApngFormatError as e:
raise PblConvertFormatError(e.args[0])
return gif
def write_pdc(self, out_obj, data):
raise NotImplementedError
def write_svg(self, out_obj, data):
raise NotImplementedError
def write_png(self, out_obj, gif):
raise NotImplementedError
def write_apng(self, out_obj, gif):
apng_data = convert_to_apng(gif)
with out_obj as o:
o.write(apng_data)
Handler.register(GifHandler)
Handler.register(SvgHandler)

View file

@ -0,0 +1,90 @@
from handlers import *
import argparse
import os
import sys
SUPPORTED_FORMATS_MAP = {
"in": {
"gif": ".gif",
"svg": ".svg",
},
"out": {
"pdc": ".pdc",
"png": ".png",
"svg": ".svg",
"apng": ".apng",
}
}
FORMAT_TO_EXT = dict(SUPPORTED_FORMATS_MAP["in"],
**SUPPORTED_FORMATS_MAP["out"])
EXT_TO_FORMAT = {v: k for k, v in FORMAT_TO_EXT.items()}
OUT_FORMATS = SUPPORTED_FORMATS_MAP["out"].keys()
IN_FORMATS = SUPPORTED_FORMATS_MAP["in"].keys()
LIMIT_WHEN_AVOIDING_OVERRIDE = 100
def parse_args(args):
parser = argparse.ArgumentParser()
parser.add_argument('-i', '--infile',
type=argparse.FileType('r'), required=True)
parser.add_argument('-if', '--informat',
type=str, choices=IN_FORMATS)
parser.add_argument('-o', '--outfile',
type=argparse.FileType('w'))
parser.add_argument('-of', '--outformat',
type=str, choices=OUT_FORMATS)
parsed = parser.parse_args(args)
assert parsed.infile is not None
assert parsed.outformat is not None or parsed.outfile is not None
if parsed.informat is None:
parsed.informat = EXT_TO_FORMAT.get(
os.path.splitext(parsed.infile.name)[1], "svg")
if parsed.outformat is None:
parsed.outformat = "pdc" if parsed.outfile is None else \
EXT_TO_FORMAT.get(os.path.splitext(parsed.outfile.name)[1], "pdc")
if parsed.outfile is None:
if parsed.infile == sys.stdin:
parsed.outfile = sys.stdout
else:
# look at format
outfile_path = os.path.splitext(parsed.infile.name)[0] + \
FORMAT_TO_EXT[parsed.outformat]
if os.path.exists(outfile_path):
avoiding_path = None
# avoid accidental overrides
for i in range(2, LIMIT_WHEN_AVOIDING_OVERRIDE):
split = os.path.splitext(outfile_path)
avoiding_path = "%s_%d%s" % (split[0], i, split[1])
if not os.path.exists(avoiding_path):
outfile_path = avoiding_path
break
if outfile_path != avoiding_path:
raise IOError("File %s and (%d similar alternatives) "
"already exists" %
(outfile_path, LIMIT_WHEN_AVOIDING_OVERRIDE))
parsed.outfile = open(outfile_path, "w")
return parsed
def logic(handler, parsed):
data = handler.read(parsed.infile)
method = getattr(handler, "write_" + parsed.outformat)
method(parsed.outfile, data)
def main():
parsed = parse_args(sys.argv[1:])
handler = Handler.handler_for_format(parsed.informat)
logic(handler, parsed)

View file

@ -0,0 +1 @@

View file

@ -0,0 +1,65 @@
# coding=utf-8
from xml.etree import ElementTree
from pdc import extend_bounding_box, bounding_box_around_points
NS_ANNOTATION = "http://www.pebble.com/2015/pdc"
PREFIX_ANNOTATION = "pdc"
TAG_HIGHLIGHT = "{%s}highlight" % NS_ANNOTATION
TAG_ANNOTATION = "{%s}annotation" % NS_ANNOTATION
def to_str(value):
return "%.2f" % float(value)
class Annotation():
def __init__(self, node, text, transformed=False, link=None):
self.node = node
self.text = text
self.href = link
self.element = ElementTree.SubElement(self.node.node, TAG_ANNOTATION)
if text is not None:
self.element.set("description", text)
if link is not None:
self.element.set("href", link)
self.highlights = []
self.transformed = transformed
self.node.annotations.append(self)
def add_highlight(self, x, y, width=None, height=None, details=None):
highlight = ElementTree.SubElement(self.element, TAG_HIGHLIGHT)
self.set_highlight(highlight, x=x, y=y, width=width, height=height, details=details)
self.highlights.append(highlight)
return highlight
def set_highlight(self, highlight, **kwargs):
for k, v in kwargs.iteritems():
if v is None:
if k in highlight:
highlight.pop(k)
else:
value = to_str(v) if k in ["x", "y", "width", "height"] else v
highlight.set(k, value)
def transform(self, transformer):
if self.transformed:
return
self.transformed = True
for highlight in self.highlights:
top_left = (float(highlight.get("x")), float(highlight.get("y")))
size = (float(highlight.get("width")), float(highlight.get("height")))
top_right = (top_left[0] + size[0], top_left[1])
bottom_right = (top_left[0] + size[0], top_left[1] + size[1])
bottom_left = (top_left[0], top_left[1] + size[1])
# we needs to transform all four points instead of origin + diagonal
# e.g. 45° on a square would otherwise become a line
top_left = transformer.transform_point(top_left)
top_right = transformer.transform_point(top_right)
bottom_right = transformer.transform_point(bottom_right)
bottom_left = transformer.transform_point(bottom_left)
box = bounding_box_around_points([top_left, top_right, bottom_right, bottom_left])
self.set_highlight(highlight, x=box[0], y=box[1], width=box[2], height=box[3])

View file

@ -0,0 +1,6 @@
class Svg2PdcError(Exception):
def __str__(self):
return self.__class__.__name__ + ': ' + ' '.join(self.args)
class Svg2PdcFormatError(Svg2PdcError):
pass

View file

@ -0,0 +1,303 @@
from StringIO import StringIO
import os
import shutil
import tempfile
from struct import pack
import sys
from subprocess import Popen, PIPE
from pebble_image_routines import truncate_color_to_pebble64_palette, nearest_color_to_pebble64_palette, \
rgba32_triplet_to_argb8
DRAW_COMMAND_VERSION = 1
DRAW_COMMAND_TYPE_PATH = 1
DRAW_COMMAND_TYPE_CIRCLE = 2
DRAW_COMMAND_TYPE_PRECISE_PATH = 3
epsilon = sys.float_info.epsilon
def valid_color(r, g, b, a):
return (r <= 0xFF) and (g <= 0xFF) and (b <= 0xFF) and (a <= 0xFF) and \
(r >= 0x00) and (g >= 0x00) and (b >= 0x00) and (a >= 0x00)
def convert_color(r, g, b, a, truncate=True):
valid = valid_color(r, g, b, a)
if not valid:
print "Invalid color: ({}, {}, {}, {})".format(r, g, b, a)
return 0
if truncate:
(r, g, b, a) = truncate_color_to_pebble64_palette(r, g, b, a)
else:
(r, g, b, a) = nearest_color_to_pebble64_palette(r, g, b, a)
return rgba32_triplet_to_argb8(r, g, b, a)
def sum_points(p1, p2):
return p1[0] + p2[0], p1[1] + p2[1]
def subtract_points(p1, p2):
return p1[0] - p2[0], p1[1] - p2[1]
def round_point(p):
return round(p[0] + epsilon), round(p[1] + epsilon) # hack to get around the fact that python rounds negative
# numbers downwards
def scale_point(p, factor):
return p[0] * factor, p[1] * factor
def find_nearest_valid_point(p):
return (round(p[0] * 2.0) / 2.0), (round(p[1] * 2.0) / 2.0)
def find_nearest_valid_precise_point(p):
return (round(p[0] * 8.0) / 8.0), (round(p[1] * 8.0) / 8.0)
def convert_to_pebble_coordinates(point, precise=False):
# convert from graphic tool coordinate system to pebble coordinate system so that they render the same on
# both
if not precise:
nearest = find_nearest_valid_point(point) # used to give feedback to user if the point shifts considerably
else:
nearest = find_nearest_valid_precise_point(point)
problem = None if compare_points(point, nearest) else "Invalid point: ({:.2f}, {:.2f}). Used closest supported coordinate: ({}, {})".format(
point[0], point[1], nearest[0], nearest[1])
translated = sum_points(point, (-0.5, -0.5)) # translate point by (-0.5, -0.5)
if precise:
translated = scale_point(translated, 8) # scale point for precise coordinates
rounded = round_point(translated)
return rounded, problem
def compare_points(p1, p2):
return p1[0] == p2[0] and p1[1] == p2[1]
class InvalidPointException(Exception):
pass
def bounding_box_around_points(points):
result = None
for p in points:
result = extend_bounding_box(result, p)
return result
def extend_bounding_box(rect, point=None, rect2=None):
if rect is None:
return rect2 if rect2 is not None else (point[0], point[1], 0, 0)
if rect2 is not None:
top_left = (rect2[0], rect2[1])
bottom_right = (rect2[0] + rect2[2], rect2[1] + rect2[3])
rect = extend_bounding_box(rect, point=top_left)
rect = extend_bounding_box(rect, point=bottom_right)
return rect
assert point is not None
min_x = min(rect[0], point[0])
min_y = min(rect[1], point[1])
max_x = max(rect[0] + rect[2], point[0])
max_y = max(rect[1] + rect[3], point[1])
return (min_x, min_y, max_x - min_x, max_y - min_y)
PDC2PNG = os.path.join(os.path.dirname(os.path.realpath(__file__)), "../bin/pdc2png")
def convert_to_png(pdc_data):
tmp_dir = tempfile.mkdtemp()
try:
pdc_path = os.path.join(tmp_dir, "image.pdc")
with open(pdc_path, "wb") as pdc_file:
pdc_file.write(pdc_data)
cmd = '%s %s' % (PDC2PNG, pdc_path)
p = Popen(cmd, shell=True, stdout=PIPE, stderr=PIPE)
stdout, stderr = p.communicate()
if p.returncode != 0:
raise IOError(stderr)
png_path = os.path.join(tmp_dir, "image.png")
with open(png_path, "rb") as png_file:
return png_file.read()
finally:
shutil.rmtree(tmp_dir)
class Command:
'''
Draw command serialized structure:
| Bytes | Field
| 1 | Draw command type
| 1 | Reserved byte
| 1 | Stroke color
| 1 | Stroke width
| 1 | Fill color
For Paths:
| 1 | Open path
| 1 | Unused/Reserved
For Circles:
| 2 | Radius
Common:
| 2 | Number of points (should always be 1 for circles)
| n * 4 | Array of n points in the format below:
Point:
| 2 | x
| 2 | y
'''
def __init__(self, points, stroke_width=0, stroke_color=0, fill_color=0,
raise_error=False):
# for i in range(len(points)):
# points[i], valid = convert_to_pebble_coordinates(points[i], precise)
# if not valid and raise_error:
# raise InvalidPointException("Invalid point in command")
self.points = list(points)
self.stroke_width = stroke_width
self.stroke_color = stroke_color
self.fill_color = fill_color
def is_precise(self):
return False
def transform(self, transformer):
self.points = list([transformer.transform_point(p) for p in self.points])
def finalize(self, annotator):
grid_annotation = None
for p in self.points:
converted, problem = convert_to_pebble_coordinates(p, self.is_precise())
if problem is not None:
if grid_annotation is None:
link = "https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid"
grid_annotation = annotator.add_annotation("Element is expressed with unsupported coordinate(s).", link=link)
grid_annotation.add_highlight(p[0], p[1], details=problem)
pass
def bounding_box(self):
result = None
for p in self.points:
result = extend_bounding_box(result, point=p)
return result
def serialize_common(self):
return pack('<BBBB',
0, #reserved byte
self.stroke_color,
self.stroke_width,
self.fill_color)
def serialize_points(self):
s = pack('H', len(self.points)) # number of points (16-bit)
for p in self.points:
converted, _ = convert_to_pebble_coordinates(p, self.is_precise())
s += pack('<hh',
int(converted[0]), # x (16-bit)
int(converted[1])) # y (16-bit)
return s
class PathCommand(Command):
def __init__(self, points, path_open, stroke_width=0, stroke_color=0, fill_color=0, precise=False,
raise_error=False):
self.open = path_open
self.type = DRAW_COMMAND_TYPE_PATH if not precise else DRAW_COMMAND_TYPE_PRECISE_PATH
Command.__init__(self, points, stroke_width, stroke_color, fill_color, raise_error)
def is_precise(self):
return self.type == DRAW_COMMAND_TYPE_PRECISE_PATH
def serialize(self):
s = pack('B', self.type) # command type
s += self.serialize_common()
s += pack('<BB',
int(self.open), # open path boolean
0) # unused byte in path
s += self.serialize_points()
return s
def __str__(self):
points = self.points[:]
if self.type == DRAW_COMMAND_TYPE_PRECISE_PATH:
type = 'P'
for i in range(len(points)):
points[i] = scale_point(points[i], 0.125)
else:
type = ''
return "Path: [fill color:{}; stroke color:{}; stroke width:{}] {} {} {}".format(self.fill_color,
self.stroke_color,
self.stroke_width,
points,
self.open,
type)
class CircleCommand(object, Command):
def __init__(self, center, radius, stroke_width=0, stroke_color=0, fill_color=0):
points = [(center[0], center[1])]
Command.__init__(self, points, stroke_width, stroke_color, fill_color)
self.radius = radius
def transform(self, transformer):
super(CircleCommand, self).transform(transformer)
(dx, dy) = transformer.transform_distance(self.radius, self.radius)
self.radius = min(dx, dy)
if dx != dy:
annotation = transformer.add_annotation("Only rigid transformations for circles are supported.",
transformed=True)
center = self.points[0]
annotation.add_highlight(center[0] - dx, center[1] - dy, dx * 2, dy * 2)
def serialize(self):
s = pack('B', DRAW_COMMAND_TYPE_CIRCLE) # command type
s += self.serialize_common()
s += pack('H', self.radius) # circle radius (16-bit)
s += self.serialize_points()
return s
def __str__(self):
return "Circle: [fill color:{}; stroke color:{}; stroke width:{}] {} {}".format(self.fill_color,
self.stroke_color,
self.stroke_width,
self.points[0],
self.radius)
def serialize_header(size):
return pack('<BBhh', DRAW_COMMAND_VERSION, 0, int(round(size[0])), int(round(size[1])))
def serialize(commands):
output = pack('H', len(commands)) # number of commands in list
for c in commands:
output += c.serialize()
return output
def serialize_image(commands, size):
s = serialize_header(size)
s += serialize(commands)
output = "PDCI"
output += pack('I', len(s))
output += s
return output

View file

@ -0,0 +1,123 @@
#!/usr/bin/env python
import math
# This module contains common image and color routines used to convert images
# for use with Pebble.
#
# pebble64 refers to the color palette that is available in color products,
# pebble2 refers to the palette available in b&w products
# Create pebble 64 colors-table (r, g, b - 2 bits per channel)
def _get_pebble64_palette():
pebble_palette = []
for i in xrange(0, 64):
pebble_palette.append((
((i >> 4) & 0x3) * 85, # R
((i >> 2) & 0x3) * 85, # G
((i ) & 0x3) * 85)) # B
return pebble_palette
def nearest_color_to_pebble64_palette(r, g, b, a):
"""
match each rgba32 pixel to the nearest color in the 8 bit pebble palette
returns closest rgba32 color triplet (r, g, b, a)
"""
a = ((a + 42) / 85) * 85 # fast nearest alpha for 2bit color range
# clear transparent pixels (makes image more compress-able)
# and required for greyscale tests
if a == 0:
r, g, b = (0, 0, 0)
else:
r = ((r + 42) / 85) * 85 # nearest for 2bit color range
g = ((g + 42) / 85) * 85 # nearest for 2bit color range
b = ((b + 42) / 85) * 85 # nearest for 2bit color range
return r, g, b, a
def nearest_color_to_pebble2_palette(r, g, b, a):
"""
match each rgba32 pixel to the nearest color in 2 bit pebble palette
returns closest rgba32 color triplet (r, g, b, a)
"""
# these constants come from ITU-R recommendation BT.709
luma = (r * 0.2126 + g * 0.7152 + b * 0.11)
def round_to_1_bit(value):
""" Round a [0-255] value to either 0 or 255 """
if value > (255 / 2):
return 255
return 0
rounded_luma = round_to_1_bit(luma)
return (rounded_luma, rounded_luma, rounded_luma, round_to_1_bit(a))
def truncate_color_to_pebble64_palette(r, g, b, a):
"""
converts each rgba32 pixel to the next lower matching color (truncate method)
in the pebble palette
returns the truncated color as a rgba32 color triplet (r, g, b, a)
"""
a = (a / 85) * 85 # truncate alpha for 2bit color range
# clear transparent pixels (makes image more compress-able)
# and required for greyscale tests
if a == 0:
r, g, b = (0, 0, 0)
else:
r = (r / 85) * 85 # truncate for 2bit color range
g = (g / 85) * 85 # truncate for 2bit color range
b = (b / 85) * 85 # truncate for 2bit color range
return r, g, b, a
def truncate_color_to_pebble2_palette(r, g, b, a):
"""
converts each rgba32 pixel to the next lower matching color (truncate method)
returns closest rgba32 color triplet (r, g, b, a)
"""
if a != 255:
a = 0
if r == 255 and g == 255 and b == 255:
return r, g, b, a
else:
return 0, 0, 0, a
def rgba32_triplet_to_argb8(r, g, b, a):
"""
converts a 32-bit RGBA color by channel to an ARGB8 (1 byte containing all 4 channels)
"""
a, r, g, b = (a >> 6, r >> 6, g >> 6, b >> 6)
argb8 = (a << 6) | (r << 4) | (g << 2) | b
return argb8
# convert 32-bit color (r, g, b, a) to 32-bit RGBA word
def rgba32_triplet_to_rgba32(r, g, b, a):
return (((r & 0xFF) << 24) | ((g & 0xFF) << 16) | ((b & 0xFF) << 8) | (a & 0xFF))
# takes number of colors and outputs PNG & PBI compatible bit depths for paletted images
def num_colors_to_bitdepth(num_colors):
bitdepth = int(math.ceil(math.log(num_colors, 2)))
# only bitdepth 1,2,4 and 8 supported by PBI and PNG
if bitdepth == 0:
# caused when palette has only 1 color
bitdepth = 1
elif bitdepth == 3:
bitdepth = 4
elif bitdepth > 4:
bitdepth = 8
return bitdepth

View file

@ -0,0 +1,485 @@
# coding=utf-8
from exceptions import *
from StringIO import StringIO
from functools import partial
from lxml import etree
import cairosvg
from cairosvg.parser import Tree
from cairosvg.surface import size, node_format, normalize, gradient_or_pattern, color
from cairosvg.surface.helpers import point, paint
import io
from pdc import PathCommand, CircleCommand, extend_bounding_box, bounding_box_around_points
from annotation import Annotation, NS_ANNOTATION, PREFIX_ANNOTATION, TAG_HIGHLIGHT
from pebble_image_routines import truncate_color_to_pebble64_palette, rgba32_triplet_to_argb8
try:
import cairocffi as cairo
# OSError means cairocffi is installed,
# but could not load a cairo dynamic library.
# pycairo may still be available with a statically-linked cairo.
except (ImportError, OSError):
import cairo # pycairo
def cairo_from_png(path):
surface = cairo.ImageSurface.create_from_png(path)
return surface, cairo.Context(surface)
class PDCContext(cairo.Context):
def line_to(self, x, y):
super(PDCContext, self).line_to(x, y)
# http://effbot.org/zone/element-lib.htm#prettyprint
def indent(elem, level=0):
i = "\n" + level*" "
if len(elem):
if not elem.text or not elem.text.strip():
elem.text = i + " "
if not elem.tail or not elem.tail.strip():
elem.tail = i
for elem in elem:
indent(elem, level+1)
if not elem.tail or not elem.tail.strip():
elem.tail = i
else:
if level and (not elem.tail or not elem.tail.strip()):
elem.tail = i
class PDCSurface(cairosvg.surface.PNGSurface):
# noinspection PyMissingConstructor
def __init__(self, tree, output, dpi, parent_surface=None, approximate_bezier=False):
self.svg_tree = tree
self.cairo = None
self.cairosvg_tags = []
self.pdc_commands = []
self.approximate_bezier = approximate_bezier
self.stored_size = None
self.context_width, self.context_height = None, None
self.cursor_position = [0, 0]
self.cursor_d_position = [0, 0]
self.text_path_width = 0
self.tree_cache = {(tree.url, tree["id"]): tree}
if parent_surface:
self.markers = parent_surface.markers
self.gradients = parent_surface.gradients
self.patterns = parent_surface.patterns
self.masks = parent_surface.masks
self.paths = parent_surface.paths
self.filters = parent_surface.filters
else:
self.markers = {}
self.gradients = {}
self.patterns = {}
self.masks = {}
self.paths = {}
self.filters = {}
self.page_sizes = []
self._old_parent_node = self.parent_node = None
self.output = output
self.dpi = dpi
self.font_size = size(self, "12pt")
self.stroke_and_fill = True
# we only support px
for unit in ["mm", "cm", "in", "pt", "pc"]:
for attr in ["width", "height"]:
value = tree.get(attr)
if value is not None and unit in value:
tree.pop(attr)
value = None
width, height, viewbox = node_format(self, tree)
# Actual surface dimensions: may be rounded on raster surfaces types
self.cairo, self.width, self.height = self._create_surface(
width * self.device_units_per_user_units,
height * self.device_units_per_user_units)
self.page_sizes.append((self.width, self.height))
self.context = PDCContext(self.cairo)
# We must scale the context as the surface size is using physical units
self.context.scale(
self.device_units_per_user_units, self.device_units_per_user_units)
# SVG spec says "viewbox of size 0 means 'don't render'"
if viewbox is not None and viewbox[2] <= 0 and viewbox[3] <= 0:
return
# Initial, non-rounded dimensions
self.set_context_size(width, height, viewbox)
self.context.move_to(0, 0)
# register PDC namespace and add temporary fake attribute to propagate prefix
etree.register_namespace(PREFIX_ANNOTATION, NS_ANNOTATION)
ns_fake_attr = "{%s}foo" % NS_ANNOTATION
tree.node.set(ns_fake_attr, "bar")
# remove all PDC elements (annotations in case we're processing an annotated SVG)
def remove_pdc_elements(elem):
for child in elem:
if isinstance(child.tag, str) and child.tag.startswith("{%s}" % NS_ANNOTATION):
elem.remove(child)
else:
remove_pdc_elements(child)
remove_pdc_elements(tree.node)
self.draw_root(tree)
tree.node.attrib.pop(ns_fake_attr)
def size(self):
if self.stored_size is not None:
return self.stored_size
result = None
for command in self.pdc_commands:
result = extend_bounding_box(result, rect2=command.bounding_box())
if result is None:
return (0, 0)
# returned size is diagonal from (0, 0) to max_x/max_y
return (max(0, result[0] + result[2]), max(0, result[1] + result[3]))
def cairo_tag_func(self, tag):
return self.cairosvg_tags[0][tag]
def cairo_tags_push_and_wrap(self):
self.cairosvg_tags.append(cairosvg.surface.TAGS.copy())
custom_impl = {"polyline": polyline, "polygon": polygon, "line": line, "rect": rect, "circle": circle,
"path": path, "svg": svg}
for k,v in custom_impl.iteritems():
original = self.cairo_tag_func(k)
cairosvg.surface.TAGS[k] = partial(custom_impl[k], original=original)
def draw_root(self, node):
if node.get("display", "").upper() == 'NONE':
node.annotations = []
Annotation(node, 'Attribute display="none" for root element will be ignored.')
node.pop("display")
super(PDCSurface, self).draw_root(node)
def draw(self, node):
self.cairo_tags_push_and_wrap()
if not hasattr(node, "annotations"):
node.annotations = []
super(PDCSurface, self).draw(node)
cairosvg.surface.TAGS = self.cairosvg_tags.pop()
def element_tree(self):
indent(self.svg_tree.node)
# ensure that viewbox is always set
view_box = self.svg_tree.node.get("viewBox", "0 0 %d %d" % self.size())
self.svg_tree.node.set("viewBox", view_box)
return etree.ElementTree(self.svg_tree.node)
def render_annoations_on_top(self, png_path):
surface, ctx = cairo_from_png(png_path)
def iterate(elem):
if TAG_HIGHLIGHT == elem.tag:
args = [float(elem.get(k, "1")) for k in ["x", "y", "width", "height"]]
ctx.rectangle(*args)
ctx.set_source_rgb(1, 0, 0)
ctx.stroke()
for child in elem:
iterate(child)
iterate(self.svg_tree.node)
result = StringIO()
surface.write_to_png(result)
return result.getvalue()
def gcolor8_is_visible(color):
return (color & 0b11000000) != 0
def svg_color(surface, node, opacity, attribute, default=None):
paint_source, paint_color = paint(node.get(attribute, default))
if gradient_or_pattern(surface, node, paint_source):
return 0
(r, g, b, a) = color(paint_color, opacity)
color256 = truncate_color_to_pebble64_palette(int(r*255), int(g*255), int(b*255), int(a*255))
gcolor8 = rgba32_triplet_to_argb8(*color256)
return gcolor8 if gcolor8_is_visible(gcolor8) else 0
def svg(surface, node, original=None):
original(surface, node)
width, height, viewbox = node_format(surface, node)
if not "width" in node:
width = None if viewbox is None else viewbox[2]
if not "height" in node:
height = None if viewbox is None else viewbox[3]
if (width is not None) and (height is not None):
surface.stored_size = (width, height)
def line(surface, node, original=None):
x1, y1, x2, y2 = tuple(
size(surface, node.get(position), position[0])
for position in ("x1", "y1", "x2", "y2"))
points = [(x1, y1), (x2, y2)]
command = PathCommand(points, path_open=True, precise=True)
handle_command(surface, node, command)
return original(surface, node)
def polygon(surface, node, original=None):
return poly_element(surface, node, open=False, original=original)
def polyline(surface, node, original=None):
return poly_element(surface, node, open=True, original=original)
def poly_element(surface, node, open, original=None):
points_attr = normalize(node.get("points"))
points = []
while points_attr:
x, y, points_attr = point(surface, points_attr)
points.append((x, y))
command = PathCommand(points, path_open=True, precise=True)
command.open = open
handle_command(surface, node, command)
return original(surface, node)
def rect(surface, node, original=None):
x, y = size(surface, node.get("x"), "x"), size(surface, node.get("y"), "y")
width = size(surface, node.get("width"), "x")
height = size(surface, node.get("height"), "y")
rx = node.get("rx")
ry = node.get("ry")
if rx and (ry is None):
ry = rx
elif ry and (rx is None):
rx = ry
rx = size(surface, rx, "x")
ry = size(surface, ry, "y")
if not (rx == 0 and ry == 0):
annotation = Annotation(node, "Rounded rectangles are not supported.")
right = x + width - rx
bottom = y + height - ry
annotation.add_highlight(x, y, rx, ry)
annotation.add_highlight(right, y, rx, ry)
annotation.add_highlight(right, bottom, rx, ry)
annotation.add_highlight(x, bottom, rx, ry)
points = [(x, y), (x + width, y), (x + width, y + height), (x, y + height)]
command = PathCommand(points, path_open=False, precise=True)
handle_command(surface, node, command)
return original(surface, node)
def circle(surface, node, original=None):
r = size(surface, node.get("r"))
cx = size(surface, node.get("cx"), "x")
cy = size(surface, node.get("cy"), "y")
if r and cx is not None and cy is not None:
command = CircleCommand((cx, cy), r)
handle_command(surface, node, command)
return original(surface, node)
def cubicbezier_mid(p0, p1, p2, p3, min_dist, l, r):
t = (r[0] + l[0]) / 2
a = (1. - t)**3
b = 3. * t * (1. - t)**2
c = 3.0 * t**2 * (1.0 - t)
d = t**3
p = (a * p0[0] + b * p1[0] + c * p2[0] + d * p3[0],
a * p0[1] + b * p1[1] + c * p2[1] + d * p3[1])
def pt_dist(p1, p2):
return ((p1[0]-p2[0])**2 + (p1[1]-p2[1])**2)**0.5
if pt_dist(l[1], p) <= min_dist or pt_dist(r[1], p) <= min_dist:
return []
left = cubicbezier_mid(p0, p1, p2, p3, min_dist=min_dist, l=l, r=(t, p))
right = cubicbezier_mid(p0, p1, p2, p3, min_dist=min_dist, l=(t, p), r=r)
return left + [p] + right
def cubicbezier(p0, p1, p2, p3, min_dist):
return [p0] + cubicbezier_mid(p0, p1, p2, p3, min_dist, (0.0, p0), (1.0, p3)) + [p3]
class PathSurfaceContext(cairo.Context):
def __init__(self, target, node, approximate_bezier):
super(PathSurfaceContext, self).__init__(target)
self.points = []
self.path_open = True
self.node = node
self.approximate_bezier = approximate_bezier
self.grouped_annotations = {}
def get_grouped_description(self, description, *args, **kwargs):
if not description in self.grouped_annotations:
self.grouped_annotations[description] = self.add_annotation(description, *args, **kwargs)
return self.grouped_annotations[description]
def add_annotation(self, *args, **kwargs):
return Annotation(self.node, *args, **kwargs)
def add_current_point(self):
self.points.append(self.get_current_point())
def create_command(self):
return PathCommand(self.points, self.path_open, precise=True)
def move_to(self, x, y):
super(PathSurfaceContext, self).move_to(x, y)
self.add_current_point()
def line_to(self, x, y):
super(PathSurfaceContext, self).line_to(x, y)
self.add_current_point()
def rel_line_to(self, dx, dy):
super(PathSurfaceContext, self).rel_line_to(dx, dy)
self.add_current_point()
def curve_to(self, x1, y1, x2, y2, x3, y3):
first = self.get_current_point()
super(PathSurfaceContext, self).curve_to(x1, y1, x2, y2, x3, y3)
last = self.get_current_point()
# approximate bezier curve
points = cubicbezier(first, (x1, y1), (x2, y2), last, 5)
box = bounding_box_around_points(points)
if self.approximate_bezier:
description = "Curved command(s) were approximated."
self.points.extend(points[1:])
else:
description = "Element contains unsupported curved command(s)."
self.add_current_point()
link = "https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-bezier"
self.get_grouped_description("Element contains unsupported curved command(s).", link=link).add_highlight(*box)
def rel_curve_to(self, dx1, dy1, dx2, dy2, dx3, dy3):
cur = self.get_current_point()
x1 = dx1 + cur[0]
y1 = dy1 + cur[1]
x2 = dx2 + cur[0]
y2 = dy2 + cur[1]
x3 = dx3 + cur[0]
y3 = dy3 + cur[1]
self.curve_to(x1, y1, x2, y2, x3, y3)
def arc(self, xc, yc, radius, angle1, angle2):
self.add_annotation_arc_unsupported(xc, yc, radius)
super(PathSurfaceContext, self).arc(xc, yc, radius, angle1, angle2)
def arc_negative(self, xc, yc, radius, angle1, angle2):
self.add_annotation_arc_unsupported(xc, yc, radius)
super(PathSurfaceContext, self).arc_negative(xc, yc, radius, angle1, angle2)
def close_path(self):
super(PathSurfaceContext, self).close_path()
self.path_open = False
def add_annotation_arc_unsupported(self, xc, yc, radius):
# caller uses context transforms to express arcs
points = [
(xc-radius, yc-radius), # top-left
(xc+radius, yc-radius), # top-right
(xc+radius, yc+radius), # bottom-right
(xc-radius, yc+radius), # bottom-left
]
box = bounding_box_around_points([self.user_to_device(*p) for p in points])
self.get_grouped_description("Element contains unsupported arc command(s).").add_highlight(*box)
class PathSurface:
def __init__(self, target, node, approximate_bezier):
self.context = PathSurfaceContext(target, node, approximate_bezier)
def path(surface, node, original=None):
# unfortunately, the original implementation has a side-effect on node
# but as it's rather complex, we'd rather reuse it and as it doesn't change the surface
# it's ok to call it with the fake surface we create here
collecting_surface = PathSurface(surface.cairo, node, surface.approximate_bezier)
result = original(collecting_surface, node)
command = collecting_surface.context.create_command()
if len(command.points) > 1:
handle_command(surface, node, command)
else:
Annotation(node, "Path needs at least two points.")
return result
class Transformer:
def __init__(self, cairo, node):
self.context = cairo
self.node = node
def transform_point(self, pt):
return self.context.user_to_device(pt[0], pt[1])
def transform_distance(self, dx, dy):
return self.context.user_to_device_distance(dx, dy)
def add_annotation(self, *args, **kwargs):
return Annotation(self.node, *args, **kwargs)
def handle_command(surface, node, command):
opacity = float(node.get("opacity", 1))
# Get stroke and fill opacity
stroke_opacity = float(node.get("stroke-opacity", 1))
fill_opacity = float(node.get("fill-opacity", 1))
if opacity < 1:
stroke_opacity *= opacity
fill_opacity *= opacity
default_fill = "black" if node.get("fill-rule") == "evenodd" else None
command.fill_color = svg_color(surface, node, fill_opacity, "fill", default_fill)
command.stroke_color = svg_color(surface, node, stroke_opacity, "stroke")
if gcolor8_is_visible(command.stroke_color):
command.stroke_width = int(size(surface, node.get("stroke-width")))
if command.stroke_width == 0:
command.stroke_color = 0
# transform
transformer = Transformer(surface.context, node)
command.transform(transformer)
if command.stroke_width and node.get("vector-effect") != "non-scaling-stroke":
transformed_stroke = transformer.transform_distance(command.stroke_width, 0)
transformed_stroke_width = (transformed_stroke[0]**2 + transformed_stroke[1]**2)**0.5
command.stroke_width = transformed_stroke_width
for annotation in node.annotations:
annotation.transform(transformer)
command.finalize(transformer)
# Manage display and visibility
display = node.get("display", "inline") != "none"
visible = display and (node.get("visibility", "visible") != "hidden") and \
(gcolor8_is_visible(command.fill_color) or gcolor8_is_visible(command.stroke_color))
if visible:
surface.pdc_commands.append(command)
def surface_from_svg(url=None, bytestring=None, approximate_bezier=False):
try:
tree = Tree(url=url, bytestring=bytestring)
except etree.XMLSyntaxError as e:
raise Svg2PdcFormatError(e.args[0])
output = io.BytesIO()
return PDCSurface(tree, output, 96, approximate_bezier=approximate_bezier)

View file

@ -0,0 +1,2 @@
__version_info__ = (0, 0, 2)
__version__ = '.'.join(map(str, __version_info__))

View file

@ -0,0 +1,3 @@
--index-url https://pypi.python.org/simple/
-e .

26
third_party/pbl/pblconvert/setup.py vendored Normal file
View file

@ -0,0 +1,26 @@
from setuptools import setup, find_packages
__version__= None # Overwritten by executing version.py.
with open('pblconvert/version.py') as f:
exec(f.read())
requires = [
'lxml==3.4.4',
'cairosvg',
'mock',
'Pillow',
]
setup(name='pblconvert',
version=__version__,
description='Tools to convert files into valid Pebble resources',
long_description=open('README.rst').read(),
url='https://github.com/pebble/pblconvert',
author='Pebble Technology Corporation',
license='MIT',
packages=find_packages(exclude=['tests', 'tests.*']),
package_data={'': ['bin/*']},
entry_points={'console_scripts': ['pblconvert = pblconvert.pblconvert:main']},
install_requires=requires,
test_suite='nose.collector',
)

View file

View file

Binary file not shown.

After

Width:  |  Height:  |  Size: 937 B

View file

@ -0,0 +1,26 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:pdc="http://www.pebble.com/2015/pdc" width="100%" height="100%" viewBox="0 0 50 50" version="1.1" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.41421;">
<g id="Design">
<path d="M29,35L29,31" style="fill:white;fill-rule:nonzero;stroke-width:2px;stroke:black;"/>
<path d="M9,35L9,31" style="fill:white;fill-rule:nonzero;stroke-width:2px;stroke:black;"/>
<path d="M19,41L19,37" style="fill:white;fill-rule:nonzero;stroke-width:2px;stroke:black;"/>
<path d="M9,47L9,43" style="fill:white;fill-rule:nonzero;stroke-width:2px;stroke:black;"/>
<path d="M30.9307,21.0882L44.6746,21.5L44.6746,15.5L40.9203,11.5L29.6574,11.5L25.9031,7.5L13.7015,7.5L9.00863,12.5L5.25432,12.5L1.5,16.5L1.5,21.5L5.25432,25.5L30.9307,21.0882Z" style="fill:white;fill-rule:nonzero;stroke-width:2.91px;stroke:black;">
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="21.09" x="30.93" details="Invalid point: (30.93, 21.09). Used closest supported coordinate: (30.875, 21.125)"/>
<pdc:highlight y="21.50" x="44.68" details="Invalid point: (44.68, 21.50). Used closest supported coordinate: (44.625, 21.5)"/>
<pdc:highlight y="15.50" x="44.68" details="Invalid point: (44.68, 15.50). Used closest supported coordinate: (44.625, 15.5)"/>
<pdc:highlight y="11.50" x="40.92" details="Invalid point: (40.92, 11.50). Used closest supported coordinate: (40.875, 11.5)"/>
<pdc:highlight y="11.50" x="29.66" details="Invalid point: (29.66, 11.50). Used closest supported coordinate: (29.625, 11.5)"/>
<pdc:highlight y="7.50" x="25.90" details="Invalid point: (25.90, 7.50). Used closest supported coordinate: (25.875, 7.5)"/>
<pdc:highlight y="7.50" x="13.70" details="Invalid point: (13.70, 7.50). Used closest supported coordinate: (13.75, 7.5)"/>
<pdc:highlight y="12.50" x="9.01" details="Invalid point: (9.01, 12.50). Used closest supported coordinate: (9.0, 12.5)"/>
<pdc:highlight y="12.50" x="5.25" details="Invalid point: (5.25, 12.50). Used closest supported coordinate: (5.25, 12.5)"/>
<pdc:highlight y="25.50" x="5.25" details="Invalid point: (5.25, 25.50). Used closest supported coordinate: (5.25, 25.5)"/>
<pdc:highlight y="21.09" x="30.93" details="Invalid point: (30.93, 21.09). Used closest supported coordinate: (30.875, 21.125)"/>
</pdc:annotation>
</path>
<path d="M10,13L16,13L21,16" style="fill:none;stroke-width:2px;stroke:black;"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 493 B

View file

@ -0,0 +1,12 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" viewBox="0 0 50 50" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.41421;">
<g id="Design">
<path d="M29,35L29,31" style="fill:white;fill-rule:nonzero;stroke-width:2px;stroke:black;"/>
<path d="M9,35L9,31" style="fill:white;fill-rule:nonzero;stroke-width:2px;stroke:black;"/>
<path d="M19,41L19,37" style="fill:white;fill-rule:nonzero;stroke-width:2px;stroke:black;"/>
<path d="M9,47L9,43" style="fill:white;fill-rule:nonzero;stroke-width:2px;stroke:black;"/>
<path d="M30.9307,21.0882L44.6746,21.5L44.6746,15.5L40.9203,11.5L29.6574,11.5L25.9031,7.5L13.7015,7.5L9.00863,12.5L5.25432,12.5L1.5,16.5L1.5,21.5L5.25432,25.5L30.9307,21.0882Z" style="fill:white;fill-rule:nonzero;stroke-width:2.91px;stroke:black;"/>
<path d="M10,13L16,13L21,16" style="fill:none;stroke-width:2px;stroke:black;"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

View file

@ -0,0 +1,109 @@
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:pdc="http://www.pebble.com/2015/pdc" version="1.1" width="76.380539" height="69.958122" id="svg3936" viewBox="0 0 76 69">
<defs id="defs3938"/>
<metadata id="metadata3941">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<g transform="translate(35.86042,1.43425)" id="layer1">
<path d="m 9.29202,61.21549 c 3.78806,-3.66181 5.68211,-6.06092 5.68211,-6.06092 l 15.9099,-0.12627 5.93464,6.18719 -5.17703,5.80838 -16.92006,-1e-5 z" id="path4041" style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none">
<pdc:annotation description="Element contains unsupported curved command(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-bezier">
<pdc:highlight y="56.58" x="45.15" height="6.06" width="5.68"/>
</pdc:annotation>
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="62.65" x="45.15" details="Invalid point: (45.15, 62.65). Used closest supported coordinate: (45.125, 62.625)"/>
<pdc:highlight y="56.59" x="50.84" details="Invalid point: (50.84, 56.59). Used closest supported coordinate: (50.875, 56.625)"/>
<pdc:highlight y="56.46" x="66.75" details="Invalid point: (66.75, 56.46). Used closest supported coordinate: (66.75, 56.5)"/>
<pdc:highlight y="62.65" x="72.68" details="Invalid point: (72.68, 62.65). Used closest supported coordinate: (72.625, 62.625)"/>
<pdc:highlight y="68.46" x="67.50" details="Invalid point: (67.50, 68.46). Used closest supported coordinate: (67.5, 68.5)"/>
<pdc:highlight y="68.46" x="50.58" details="Invalid point: (50.58, 68.46). Used closest supported coordinate: (50.625, 68.5)"/>
</pdc:annotation>
</path>
<path d="M 23.12727,60.28064 7.05584,22.24493 l 0,-13.57143 8.39286,-7.67858 15.71429,0.17857 7.85713,7.85715 0,13.21428 z" id="path4551" style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none">
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="61.72" x="58.99" details="Invalid point: (58.99, 61.72). Used closest supported coordinate: (59.0, 61.75)"/>
<pdc:highlight y="23.68" x="42.92" details="Invalid point: (42.92, 23.68). Used closest supported coordinate: (42.875, 23.625)"/>
<pdc:highlight y="10.11" x="42.92" details="Invalid point: (42.92, 10.11). Used closest supported coordinate: (42.875, 10.125)"/>
<pdc:highlight y="2.43" x="51.31" details="Invalid point: (51.31, 2.43). Used closest supported coordinate: (51.25, 2.375)"/>
<pdc:highlight y="2.61" x="67.02" details="Invalid point: (67.02, 2.61). Used closest supported coordinate: (67.0, 2.625)"/>
<pdc:highlight y="10.47" x="74.88" details="Invalid point: (74.88, 10.47). Used closest supported coordinate: (74.875, 10.5)"/>
<pdc:highlight y="23.68" x="74.88" details="Invalid point: (74.88, 23.68). Used closest supported coordinate: (74.875, 23.625)"/>
</pdc:annotation>
</path>
<circle cx="0" cy="0" r="7" transform="translate(23.12727,16.35206)" id="circle20" style="fill:none;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none">
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="17.79" x="58.99" details="Invalid point: (58.99, 17.79). Used closest supported coordinate: (59.0, 18.0)"/>
</pdc:annotation>
</circle>
<path d="m 6.17529,40.24432 -8.75,0 0,0" id="path4571" style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none">
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="41.68" x="42.04" details="Invalid point: (42.04, 41.68). Used closest supported coordinate: (42.0, 41.625)"/>
<pdc:highlight y="41.68" x="33.29" details="Invalid point: (33.29, 41.68). Used closest supported coordinate: (33.25, 41.625)"/>
<pdc:highlight y="41.68" x="33.29" details="Invalid point: (33.29, 41.68). Used closest supported coordinate: (33.25, 41.625)"/>
</pdc:annotation>
</path>
<path d="m -7.21756,40.24432 -8.57143,0 -5.53572,-6.07143" id="path4573" style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none">
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="41.68" x="28.64" details="Invalid point: (28.64, 41.68). Used closest supported coordinate: (28.625, 41.625)"/>
<pdc:highlight y="41.68" x="20.07" details="Invalid point: (20.07, 41.68). Used closest supported coordinate: (20.125, 41.625)"/>
<pdc:highlight y="35.61" x="14.54" details="Invalid point: (14.54, 35.61). Used closest supported coordinate: (14.5, 35.625)"/>
</pdc:annotation>
</path>
<path d="m -23.82471,31.31575 -8.75,-8.21429 0,0 0.17857,0" id="path4575" style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none">
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="32.75" x="12.04" details="Invalid point: (12.04, 32.75). Used closest supported coordinate: (12.0, 32.75)"/>
<pdc:highlight y="24.54" x="3.29" details="Invalid point: (3.29, 24.54). Used closest supported coordinate: (3.25, 24.5)"/>
<pdc:highlight y="24.54" x="3.29" details="Invalid point: (3.29, 24.54). Used closest supported coordinate: (3.25, 24.5)"/>
<pdc:highlight y="24.54" x="3.47" details="Invalid point: (3.47, 24.54). Used closest supported coordinate: (3.5, 24.5)"/>
</pdc:annotation>
</path>
<path d="m -34.36042,18.45861 0.17857,-7.85715" id="path4577" style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none">
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="19.89" x="1.50" details="Invalid point: (1.50, 19.89). Used closest supported coordinate: (1.5, 19.875)"/>
<pdc:highlight y="12.04" x="1.68" details="Invalid point: (1.68, 12.04). Used closest supported coordinate: (1.625, 12.0)"/>
</pdc:annotation>
</path>
<path d="m -32.57471,6.13718 4.64286,-4.10714" id="path4579" style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none">
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="7.57" x="3.29" details="Invalid point: (3.29, 7.57). Used closest supported coordinate: (3.25, 7.625)"/>
<pdc:highlight y="3.47" x="7.93" details="Invalid point: (7.93, 3.47). Used closest supported coordinate: (7.875, 3.5)"/>
</pdc:annotation>
</path>
<path d="m -23.82471,0.24432 8.57143,-0.17857" id="path4581" style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none">
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="1.68" x="12.04" details="Invalid point: (12.04, 1.68). Used closest supported coordinate: (12.0, 1.625)"/>
<pdc:highlight y="1.50" x="20.61" details="Invalid point: (20.61, 1.50). Used closest supported coordinate: (20.625, 1.5)"/>
</pdc:annotation>
</path>
<path d="m -11.50328,2.03004 4.64286,4.46428" id="path4583" style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none">
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="3.47" x="24.36" details="Invalid point: (24.36, 3.47). Used closest supported coordinate: (24.375, 3.5)"/>
<pdc:highlight y="7.93" x="29.00" details="Invalid point: (29.00, 7.93). Used closest supported coordinate: (29.0, 7.875)"/>
</pdc:annotation>
</path>
<path d="m -5.25328,10.78004 0,7.67857" id="path4585" style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none">
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="12.22" x="30.61" details="Invalid point: (30.61, 12.22). Used closest supported coordinate: (30.625, 12.25)"/>
<pdc:highlight y="19.90" x="30.61" details="Invalid point: (30.61, 19.90). Used closest supported coordinate: (30.625, 19.875)"/>
</pdc:annotation>
</path>
<path d="m -7.21756,23.10146 -8.21429,8.21429" id="path4587" style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none">
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="24.54" x="28.64" details="Invalid point: (28.64, 24.54). Used closest supported coordinate: (28.625, 24.5)"/>
<pdc:highlight y="32.75" x="20.43" details="Invalid point: (20.43, 32.75). Used closest supported coordinate: (20.375, 32.75)"/>
</pdc:annotation>
</path>
<path d="m -24.18185,39.17289 -7.32143,7.14286" id="path4589" style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none">
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="40.61" x="11.68" details="Invalid point: (11.68, 40.61). Used closest supported coordinate: (11.625, 40.625)"/>
<pdc:highlight y="47.75" x="4.36" details="Invalid point: (4.36, 47.75). Used closest supported coordinate: (4.375, 47.75)"/>
</pdc:annotation>
</path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -0,0 +1,87 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
version="1.1"
width="76.380539"
height="69.958122"
id="svg3936">
<defs
id="defs3938" />
<metadata
id="metadata3941">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(35.86042,1.43425)"
id="layer1">
<path
d="m 9.29202,61.21549 c 3.78806,-3.66181 5.68211,-6.06092 5.68211,-6.06092 l 15.9099,-0.12627 5.93464,6.18719 -5.17703,5.80838 -16.92006,-1e-5 z"
id="path4041"
style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
d="M 23.12727,60.28064 7.05584,22.24493 l 0,-13.57143 8.39286,-7.67858 15.71429,0.17857 7.85713,7.85715 0,13.21428 z"
id="path4551"
style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<circle
cx="0"
cy="0"
r="7"
transform="translate(23.12727,16.35206)"
id="circle20"
style="fill:none;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
d="m 6.17529,40.24432 -8.75,0 0,0"
id="path4571"
style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
d="m -7.21756,40.24432 -8.57143,0 -5.53572,-6.07143"
id="path4573"
style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
d="m -23.82471,31.31575 -8.75,-8.21429 0,0 0.17857,0"
id="path4575"
style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
d="m -34.36042,18.45861 0.17857,-7.85715"
id="path4577"
style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
d="m -32.57471,6.13718 4.64286,-4.10714"
id="path4579"
style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
d="m -23.82471,0.24432 8.57143,-0.17857"
id="path4581"
style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
d="m -11.50328,2.03004 4.64286,4.46428"
id="path4583"
style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
d="m -5.25328,10.78004 0,7.67857"
id="path4585"
style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
d="m -7.21756,23.10146 -8.21429,8.21429"
id="path4587"
style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
d="m -24.18185,39.17289 -7.32143,7.14286"
id="path4589"
style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1,013 B

View file

@ -0,0 +1,107 @@
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:pdc="http://www.pebble.com/2015/pdc" version="1.1" width="46.4375" height="52.9375" id="svg4891" viewBox="0 0 46 52">
<defs id="defs4893"/>
<metadata id="metadata4896">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<g transform="translate(-462.15625,-751.75)" id="layer1">
<path d="m 472.75139,753.35702 -9.09138,10.10153 0,14.14214 8.15038,7.57614 0,18.01069 9,0 0,-17.50561 10,0.25253 0,17.25308 9,0 0,-18.01069 7.28618,-5.3033 0,-20.96067 z" id="path5474" style="fill:#ffaa00;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none">
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="1.61" x="10.59" details="Invalid point: (10.59, 1.61). Used closest supported coordinate: (10.625, 1.625)"/>
<pdc:highlight y="11.71" x="1.50" details="Invalid point: (1.50, 11.71). Used closest supported coordinate: (1.5, 11.75)"/>
<pdc:highlight y="25.85" x="1.50" details="Invalid point: (1.50, 25.85). Used closest supported coordinate: (1.5, 25.875)"/>
<pdc:highlight y="33.42" x="9.65" details="Invalid point: (9.65, 33.42). Used closest supported coordinate: (9.625, 33.375)"/>
<pdc:highlight y="51.43" x="9.65" details="Invalid point: (9.65, 51.43). Used closest supported coordinate: (9.625, 51.375)"/>
<pdc:highlight y="51.43" x="18.65" details="Invalid point: (18.65, 51.43). Used closest supported coordinate: (18.625, 51.375)"/>
<pdc:highlight y="33.93" x="18.65" details="Invalid point: (18.65, 33.93). Used closest supported coordinate: (18.625, 33.875)"/>
<pdc:highlight y="34.18" x="28.65" details="Invalid point: (28.65, 34.18). Used closest supported coordinate: (28.625, 34.125)"/>
<pdc:highlight y="51.44" x="28.65" details="Invalid point: (28.65, 51.44). Used closest supported coordinate: (28.625, 51.5)"/>
<pdc:highlight y="51.44" x="37.65" details="Invalid point: (37.65, 51.44). Used closest supported coordinate: (37.625, 51.5)"/>
<pdc:highlight y="33.43" x="37.65" details="Invalid point: (37.65, 33.43). Used closest supported coordinate: (37.625, 33.375)"/>
<pdc:highlight y="28.12" x="44.94" details="Invalid point: (44.94, 28.12). Used closest supported coordinate: (45.0, 28.125)"/>
<pdc:highlight y="7.16" x="44.94" details="Invalid point: (44.94, 7.16). Used closest supported coordinate: (45.0, 7.125)"/>
</pdc:annotation>
</path>
<path d="m 476.28692,773.68752 20.20305,0 0,-16.03735 -19.95051,-2.77791 z" id="path5476" style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none">
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="21.94" x="14.13" details="Invalid point: (14.13, 21.94). Used closest supported coordinate: (14.125, 22.0)"/>
<pdc:highlight y="21.94" x="34.33" details="Invalid point: (34.33, 21.94). Used closest supported coordinate: (34.375, 22.0)"/>
<pdc:highlight y="5.90" x="34.33" details="Invalid point: (34.33, 5.90). Used closest supported coordinate: (34.375, 5.875)"/>
<pdc:highlight y="3.12" x="14.38" details="Invalid point: (14.38, 3.12). Used closest supported coordinate: (14.375, 3.125)"/>
</pdc:annotation>
</path>
<path d="m 454.82118,773.81261 8.46003,-7.44988" id="path5478" style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none">
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="22.06" x="-7.34" details="Invalid point: (-7.34, 22.06). Used closest supported coordinate: (-7.375, 22.125)"/>
<pdc:highlight y="14.61" x="1.12" details="Invalid point: (1.12, 14.61). Used closest supported coordinate: (1.125, 14.625)"/>
</pdc:annotation>
</path>
<path d="m 512.90495,727.90625 -10.6066,10.04595 8.83883,12.12183 -4.79822,4.79822 0,25.50636 4.54568,4.79822 12.37438,0 4.04061,-4.54569 0.50507,-25.75889 -5.05076,-5.05076 7.82868,-11.86929 -9.84899,-10.04595 1.26269,21.91524 -9.84898,0 z" id="path5482" style="fill:#ffaa00;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none">
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="-23.84" x="50.75" details="Invalid point: (50.75, -23.84). Used closest supported coordinate: (50.75, -23.875)"/>
<pdc:highlight y="-13.80" x="40.14" details="Invalid point: (40.14, -13.80). Used closest supported coordinate: (40.125, -13.75)"/>
<pdc:highlight y="-1.68" x="48.98" details="Invalid point: (48.98, -1.68). Used closest supported coordinate: (49.0, -1.625)"/>
<pdc:highlight y="3.12" x="44.19" details="Invalid point: (44.19, 3.12). Used closest supported coordinate: (44.25, 3.125)"/>
<pdc:highlight y="28.63" x="44.19" details="Invalid point: (44.19, 28.63). Used closest supported coordinate: (44.25, 28.625)"/>
<pdc:highlight y="33.43" x="48.73" details="Invalid point: (48.73, 33.43). Used closest supported coordinate: (48.75, 33.375)"/>
<pdc:highlight y="33.43" x="61.11" details="Invalid point: (61.11, 33.43). Used closest supported coordinate: (61.125, 33.375)"/>
<pdc:highlight y="28.88" x="65.15" details="Invalid point: (65.15, 28.88). Used closest supported coordinate: (65.125, 28.875)"/>
<pdc:highlight y="3.12" x="65.65" details="Invalid point: (65.65, 3.12). Used closest supported coordinate: (65.625, 3.125)"/>
<pdc:highlight y="-1.93" x="60.60" details="Invalid point: (60.60, -1.93). Used closest supported coordinate: (60.625, -1.875)"/>
<pdc:highlight y="-13.80" x="68.43" details="Invalid point: (68.43, -13.80). Used closest supported coordinate: (68.375, -13.75)"/>
<pdc:highlight y="-23.85" x="58.58" details="Invalid point: (58.58, -23.85). Used closest supported coordinate: (58.625, -23.875)"/>
<pdc:highlight y="-1.93" x="59.84" details="Invalid point: (59.84, -1.93). Used closest supported coordinate: (59.875, -1.875)"/>
<pdc:highlight y="-1.93" x="50.00" details="Invalid point: (50.00, -1.93). Used closest supported coordinate: (50.0, -1.875)"/>
</pdc:annotation>
</path>
<path d="m 506.59149,769.40625 4.79823,-5.5 11.36422,0 5.05076,5.5" id="path5484" style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none">
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="17.66" x="44.43" details="Invalid point: (44.43, 17.66). Used closest supported coordinate: (44.375, 17.625)"/>
<pdc:highlight y="12.16" x="49.23" details="Invalid point: (49.23, 12.16). Used closest supported coordinate: (49.25, 12.125)"/>
<pdc:highlight y="12.16" x="60.59" details="Invalid point: (60.59, 12.16). Used closest supported coordinate: (60.625, 12.125)"/>
<pdc:highlight y="17.66" x="65.64" details="Invalid point: (65.64, 17.66). Used closest supported coordinate: (65.625, 17.625)"/>
</pdc:annotation>
</path>
<path d="m 512.65241,757.90271 8.5863,0" id="path5486" style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none">
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="6.15" x="50.50" details="Invalid point: (50.50, 6.15). Used closest supported coordinate: (50.5, 6.125)"/>
<pdc:highlight y="6.15" x="59.08" details="Invalid point: (59.08, 6.15). Used closest supported coordinate: (59.125, 6.125)"/>
</pdc:annotation>
</path>
<rect width="1.767767" height="2.0203052" rx="0.83095455" ry="0.12964669" x="513.15747" y="769.77197" id="rect5488" style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none">
<pdc:annotation description="Rounded rectangles are not supported.">
<pdc:highlight y="18.02" x="51.00" height="0.13" width="0.83"/>
<pdc:highlight y="18.02" x="51.93" height="0.13" width="0.83"/>
<pdc:highlight y="19.91" x="51.93" height="0.13" width="0.83"/>
<pdc:highlight y="19.91" x="51.00" height="0.13" width="0.83"/>
</pdc:annotation>
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="18.02" x="51.00" details="Invalid point: (51.00, 18.02). Used closest supported coordinate: (51.0, 18.0)"/>
<pdc:highlight y="18.02" x="52.77" details="Invalid point: (52.77, 18.02). Used closest supported coordinate: (52.75, 18.0)"/>
<pdc:highlight y="20.04" x="52.77" details="Invalid point: (52.77, 20.04). Used closest supported coordinate: (52.75, 20.0)"/>
<pdc:highlight y="20.04" x="51.00" details="Invalid point: (51.00, 20.04). Used closest supported coordinate: (51.0, 20.0)"/>
</pdc:annotation>
</rect>
<rect width="1.767767" height="2.0203052" rx="0.83095455" ry="0.12964669" x="520.10223" y="770.02454" id="rect5488-7" style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none">
<pdc:annotation description="Rounded rectangles are not supported.">
<pdc:highlight y="18.27" x="57.94" height="0.13" width="0.83"/>
<pdc:highlight y="18.27" x="58.88" height="0.13" width="0.83"/>
<pdc:highlight y="20.17" x="58.88" height="0.13" width="0.83"/>
<pdc:highlight y="20.17" x="57.94" height="0.13" width="0.83"/>
</pdc:annotation>
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="18.27" x="57.95" details="Invalid point: (57.95, 18.27). Used closest supported coordinate: (58.0, 18.25)"/>
<pdc:highlight y="18.27" x="59.71" details="Invalid point: (59.71, 18.27). Used closest supported coordinate: (59.75, 18.25)"/>
<pdc:highlight y="20.29" x="59.71" details="Invalid point: (59.71, 20.29). Used closest supported coordinate: (59.75, 20.25)"/>
<pdc:highlight y="20.29" x="57.95" details="Invalid point: (57.95, 20.29). Used closest supported coordinate: (58.0, 20.25)"/>
</pdc:annotation>
</rect>
</g>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 524 B

View file

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
version="1.1"
width="46.4375"
height="52.9375"
id="svg4891">
<defs
id="defs4893" />
<metadata
id="metadata4896">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-462.15625,-751.75)"
id="layer1">
<path
d="m 472.75139,753.35702 -9.09138,10.10153 0,14.14214 8.15038,7.57614 0,18.01069 9,0 0,-17.50561 10,0.25253 0,17.25308 9,0 0,-18.01069 7.28618,-5.3033 0,-20.96067 z"
id="path5474"
style="fill:#ffaa00;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
d="m 476.28692,773.68752 20.20305,0 0,-16.03735 -19.95051,-2.77791 z"
id="path5476"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
d="m 454.82118,773.81261 8.46003,-7.44988"
id="path5478"
style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
d="m 512.90495,727.90625 -10.6066,10.04595 8.83883,12.12183 -4.79822,4.79822 0,25.50636 4.54568,4.79822 12.37438,0 4.04061,-4.54569 0.50507,-25.75889 -5.05076,-5.05076 7.82868,-11.86929 -9.84899,-10.04595 1.26269,21.91524 -9.84898,0 z"
id="path5482"
style="fill:#ffaa00;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
d="m 506.59149,769.40625 4.79823,-5.5 11.36422,0 5.05076,5.5"
id="path5484"
style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
d="m 512.65241,757.90271 8.5863,0"
id="path5486"
style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<rect
width="1.767767"
height="2.0203052"
rx="0.83095455"
ry="0.12964669"
x="513.15747"
y="769.77197"
id="rect5488"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<rect
width="1.767767"
height="2.0203052"
rx="0.83095455"
ry="0.12964669"
x="520.10223"
y="770.02454"
id="rect5488-7"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

View file

@ -0,0 +1,113 @@
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:pdc="http://www.pebble.com/2015/pdc" version="1.1" width="72.05262" height="64.163689" viewBox="0 0 72.05262 64.163688" id="svg3885">
<defs id="defs3887"/>
<metadata id="metadata3890">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<path d="m 20.59132,10.341135 -3.6618,-3.9143396 -10.4803403,-0.12627 -4.04061,4.0406096 1e-5,7.57615 3.91434,3.40926 34.8502603,0.12627 3.91434,-3.78807 0,-8.2074896 -4.29315,-4.16688 -10.85914,0.25254 -4.04061,-4.04061 -11.36422,0 -3.53553,4.79822 0,0 0,0" id="path3990" style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none">
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="10.34" x="20.59" details="Invalid point: (20.59, 10.34). Used closest supported coordinate: (20.625, 10.375)"/>
<pdc:highlight y="6.43" x="16.93" details="Invalid point: (16.93, 6.43). Used closest supported coordinate: (16.875, 6.375)"/>
<pdc:highlight y="6.30" x="6.45" details="Invalid point: (6.45, 6.30). Used closest supported coordinate: (6.5, 6.25)"/>
<pdc:highlight y="10.34" x="2.41" details="Invalid point: (2.41, 10.34). Used closest supported coordinate: (2.375, 10.375)"/>
<pdc:highlight y="17.91" x="2.41" details="Invalid point: (2.41, 17.91). Used closest supported coordinate: (2.375, 17.875)"/>
<pdc:highlight y="21.32" x="6.32" details="Invalid point: (6.32, 21.32). Used closest supported coordinate: (6.375, 21.375)"/>
<pdc:highlight y="21.45" x="41.18" details="Invalid point: (41.18, 21.45). Used closest supported coordinate: (41.125, 21.5)"/>
<pdc:highlight y="17.66" x="45.09" details="Invalid point: (45.09, 17.66). Used closest supported coordinate: (45.125, 17.625)"/>
<pdc:highlight y="9.45" x="45.09" details="Invalid point: (45.09, 9.45). Used closest supported coordinate: (45.125, 9.5)"/>
<pdc:highlight y="5.29" x="40.80" details="Invalid point: (40.80, 5.29). Used closest supported coordinate: (40.75, 5.25)"/>
<pdc:highlight y="5.54" x="29.94" details="Invalid point: (29.94, 5.54). Used closest supported coordinate: (30.0, 5.5)"/>
<pdc:highlight y="1.50" x="25.90" details="Invalid point: (25.90, 1.50). Used closest supported coordinate: (25.875, 1.5)"/>
<pdc:highlight y="1.50" x="14.54" details="Invalid point: (14.54, 1.50). Used closest supported coordinate: (14.5, 1.5)"/>
<pdc:highlight y="6.30" x="11.00" details="Invalid point: (11.00, 6.30). Used closest supported coordinate: (11.0, 6.25)"/>
<pdc:highlight y="6.30" x="11.00" details="Invalid point: (11.00, 6.30). Used closest supported coordinate: (11.0, 6.25)"/>
<pdc:highlight y="6.30" x="11.00" details="Invalid point: (11.00, 6.30). Used closest supported coordinate: (11.0, 6.25)"/>
</pdc:annotation>
</path>
<path d="M 70.528624,35.468675 61.24996,35.342415 50.359371,42.661793" id="path3992" style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none">
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="35.47" x="70.53" details="Invalid point: (70.53, 35.47). Used closest supported coordinate: (70.5, 35.5)"/>
<pdc:highlight y="35.34" x="61.25" details="Invalid point: (61.25, 35.34). Used closest supported coordinate: (61.25, 35.375)"/>
<pdc:highlight y="42.66" x="50.36" details="Invalid point: (50.36, 42.66). Used closest supported coordinate: (50.375, 42.625)"/>
</pdc:annotation>
</path>
<path d="m 18.31848,42.918555 44.19417,0" id="path3994" style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none">
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="42.92" x="18.32" details="Invalid point: (18.32, 42.92). Used closest supported coordinate: (18.375, 42.875)"/>
<pdc:highlight y="42.92" x="62.52" details="Invalid point: (62.52, 42.92). Used closest supported coordinate: (62.5, 42.875)"/>
</pdc:annotation>
</path>
<path d="m 31.703,35.594945 14.14213,0" id="path3996" style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none">
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="35.59" x="31.70" details="Invalid point: (31.70, 35.59). Used closest supported coordinate: (31.75, 35.625)"/>
<pdc:highlight y="35.59" x="45.84" details="Invalid point: (45.84, 35.59). Used closest supported coordinate: (45.875, 35.625)"/>
</pdc:annotation>
</path>
<path d="m 6.4491797,49.737085 38.6383403,0" id="path3998" style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none">
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="49.74" x="6.45" details="Invalid point: (6.45, 49.74). Used closest supported coordinate: (6.5, 49.75)"/>
<pdc:highlight y="49.74" x="45.09" details="Invalid point: (45.09, 49.74). Used closest supported coordinate: (45.125, 49.75)"/>
</pdc:annotation>
</path>
<path d="m 18.884574,56.747131 16.859036,0.06102" id="path4000" style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none">
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="56.75" x="18.88" details="Invalid point: (18.88, 56.75). Used closest supported coordinate: (18.875, 56.75)"/>
<pdc:highlight y="56.81" x="35.74" details="Invalid point: (35.74, 56.81). Used closest supported coordinate: (35.75, 56.75)"/>
</pdc:annotation>
</path>
<path d="m 4.4288697,32.438225 1.01016,-5.42957" id="path4002" style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none">
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="32.44" x="4.43" details="Invalid point: (4.43, 32.44). Used closest supported coordinate: (4.375, 32.5)"/>
<pdc:highlight y="27.01" x="5.44" details="Invalid point: (5.44, 27.01). Used closest supported coordinate: (5.5, 27.0)"/>
</pdc:annotation>
</path>
<path d="m 41.80452,52.893815 -0.12627,3.78806 7.57615,1e-5" id="path4012" style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none">
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="52.89" x="41.80" details="Invalid point: (41.80, 52.89). Used closest supported coordinate: (41.75, 52.875)"/>
<pdc:highlight y="56.68" x="41.68" details="Invalid point: (41.68, 56.68). Used closest supported coordinate: (41.625, 56.625)"/>
<pdc:highlight y="56.68" x="49.25" details="Invalid point: (49.25, 56.68). Used closest supported coordinate: (49.25, 56.625)"/>
</pdc:annotation>
</path>
<path d="m 62.26011,56.934425 6.31345,-0.12627" id="path4014" style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none">
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="56.93" x="62.26" details="Invalid point: (62.26, 56.93). Used closest supported coordinate: (62.25, 56.875)"/>
<pdc:highlight y="56.81" x="68.57" details="Invalid point: (68.57, 56.81). Used closest supported coordinate: (68.625, 56.75)"/>
</pdc:annotation>
</path>
<path d="m 16.04563,32.375085 1.01016,-5.42957" id="path4002-7" style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none">
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="32.38" x="16.05" details="Invalid point: (16.05, 32.38). Used closest supported coordinate: (16.0, 32.375)"/>
<pdc:highlight y="26.95" x="17.06" details="Invalid point: (17.06, 26.95). Used closest supported coordinate: (17.0, 27.0)"/>
</pdc:annotation>
</path>
<path d="m 27.15731,32.501355 1.01016,-5.42957" id="path4002-0" style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none">
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="32.50" x="27.16" details="Invalid point: (27.16, 32.50). Used closest supported coordinate: (27.125, 32.5)"/>
<pdc:highlight y="27.07" x="28.17" details="Invalid point: (28.17, 27.07). Used closest supported coordinate: (28.125, 27.125)"/>
</pdc:annotation>
</path>
<path d="m 1.5246897,58.133985 1.01016,-5.42957" id="path4002-6" style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none">
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="58.13" x="1.52" details="Invalid point: (1.52, 58.13). Used closest supported coordinate: (1.5, 58.125)"/>
<pdc:highlight y="52.70" x="2.54" details="Invalid point: (2.54, 52.70). Used closest supported coordinate: (2.5, 52.75)"/>
</pdc:annotation>
</path>
<path d="M 9.6059097,42.855425 10.61607,37.425855" id="path4002-03" style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none">
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="42.86" x="9.61" details="Invalid point: (9.61, 42.86). Used closest supported coordinate: (9.625, 42.875)"/>
<pdc:highlight y="37.43" x="10.62" details="Invalid point: (10.62, 37.43). Used closest supported coordinate: (10.625, 37.375)"/>
</pdc:annotation>
</path>
<circle cx="0" cy="0" r="6" transform="translate(55.53965,56.49723)" id="circle20" style="fill:none;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none">
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="56.50" x="55.54" details="Invalid point: (55.54, 56.50). Used closest supported coordinate: (55.5, 56.5)"/>
</pdc:annotation>
</circle>
</svg>

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 826 B

View file

@ -0,0 +1,88 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
version="1.1"
width="72.05262"
height="64.163689"
viewBox="0 0 72.05262 64.163688"
id="svg3885">
<defs
id="defs3887" />
<metadata
id="metadata3890">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<path
d="m 20.59132,10.341135 -3.6618,-3.9143396 -10.4803403,-0.12627 -4.04061,4.0406096 1e-5,7.57615 3.91434,3.40926 34.8502603,0.12627 3.91434,-3.78807 0,-8.2074896 -4.29315,-4.16688 -10.85914,0.25254 -4.04061,-4.04061 -11.36422,0 -3.53553,4.79822 0,0 0,0"
id="path3990"
style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
d="M 70.528624,35.468675 61.24996,35.342415 50.359371,42.661793"
id="path3992"
style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
d="m 18.31848,42.918555 44.19417,0"
id="path3994"
style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
d="m 31.703,35.594945 14.14213,0"
id="path3996"
style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
d="m 6.4491797,49.737085 38.6383403,0"
id="path3998"
style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
d="m 18.884574,56.747131 16.859036,0.06102"
id="path4000"
style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
d="m 4.4288697,32.438225 1.01016,-5.42957"
id="path4002"
style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
d="m 41.80452,52.893815 -0.12627,3.78806 7.57615,1e-5"
id="path4012"
style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
d="m 62.26011,56.934425 6.31345,-0.12627"
id="path4014"
style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
d="m 16.04563,32.375085 1.01016,-5.42957"
id="path4002-7"
style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
d="m 27.15731,32.501355 1.01016,-5.42957"
id="path4002-0"
style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
d="m 1.5246897,58.133985 1.01016,-5.42957"
id="path4002-6"
style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
d="M 9.6059097,42.855425 10.61607,37.425855"
id="path4002-03"
style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<circle
cx="0"
cy="0"
r="6"
transform="translate(55.53965,56.49723)"
id="circle20"
style="fill:none;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" />
</svg>

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 728 B

View file

@ -0,0 +1,86 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:pdc="http://www.pebble.com/2015/pdc" version="1.1" id="Layer_1" x="0px" y="0px" width="23.3px" height="18.6px" viewBox="0 0 23.3 18.6" enable-background="new 0 0 23.3 18.6" xml:space="preserve">
<path fill="#FFFF00" d="M21.05,8.499c-0.5,0.5-1.4,0.5-1.9,0s-0.5-1.399,0-1.899l1.9-1.9c0.5-0.5,1.4-0.5,1.9,0s0.5,1.4,0,1.9 L21.05,8.499z">
<pdc:annotation description="Element contains unsupported curved command(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-bezier">
<pdc:highlight y="8.50" x="19.15" height="0.00" width="1.90"/>
<pdc:highlight y="6.60" x="19.15" height="1.90" width="0.00"/>
<pdc:highlight y="4.70" x="21.05" height="0.00" width="1.90"/>
<pdc:highlight y="4.70" x="22.95" height="1.90" width="0.00"/>
</pdc:annotation>
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="8.50" x="21.05" details="Invalid point: (21.05, 8.50). Used closest supported coordinate: (21.0, 8.5)"/>
<pdc:highlight y="8.50" x="19.15" details="Invalid point: (19.15, 8.50). Used closest supported coordinate: (19.125, 8.5)"/>
<pdc:highlight y="6.60" x="19.15" details="Invalid point: (19.15, 6.60). Used closest supported coordinate: (19.125, 6.625)"/>
<pdc:highlight y="4.70" x="21.05" details="Invalid point: (21.05, 4.70). Used closest supported coordinate: (21.0, 4.75)"/>
<pdc:highlight y="4.70" x="22.95" details="Invalid point: (22.95, 4.70). Used closest supported coordinate: (23.0, 4.75)"/>
<pdc:highlight y="6.60" x="22.95" details="Invalid point: (22.95, 6.60). Used closest supported coordinate: (23.0, 6.625)"/>
<pdc:highlight y="8.50" x="21.05" details="Invalid point: (21.05, 8.50). Used closest supported coordinate: (21.0, 8.5)"/>
</pdc:annotation>
</path>
<path fill="#FFAA00" d="M16.25,13.4c-0.899-1.6-2.6-2.7-4.6-2.7s-3.699,1.101-4.6,2.7h-2.9c1.1-3.1,4-5.3,7.5-5.3s6.4,2.2,7.5,5.3 H16.25z">
<pdc:annotation description="Element contains unsupported curved command(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-bezier">
<pdc:highlight y="10.70" x="11.65" height="2.70" width="4.60"/>
<pdc:highlight y="10.70" x="7.05" height="2.70" width="4.60"/>
<pdc:highlight y="8.10" x="4.15" height="5.30" width="7.50"/>
<pdc:highlight y="8.10" x="11.65" height="5.30" width="7.50"/>
</pdc:annotation>
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="13.40" x="16.25" details="Invalid point: (16.25, 13.40). Used closest supported coordinate: (16.25, 13.375)"/>
<pdc:highlight y="10.70" x="11.65" details="Invalid point: (11.65, 10.70). Used closest supported coordinate: (11.625, 10.75)"/>
<pdc:highlight y="13.40" x="7.05" details="Invalid point: (7.05, 13.40). Used closest supported coordinate: (7.0, 13.375)"/>
<pdc:highlight y="13.40" x="4.15" details="Invalid point: (4.15, 13.40). Used closest supported coordinate: (4.125, 13.375)"/>
<pdc:highlight y="8.10" x="11.65" details="Invalid point: (11.65, 8.10). Used closest supported coordinate: (11.625, 8.125)"/>
<pdc:highlight y="13.40" x="19.15" details="Invalid point: (19.15, 13.40). Used closest supported coordinate: (19.125, 13.375)"/>
<pdc:highlight y="13.40" x="16.25" details="Invalid point: (16.25, 13.40). Used closest supported coordinate: (16.25, 13.375)"/>
</pdc:annotation>
</path>
<path fill="#FFFF00" d="M11.65,5.4c-0.699,0-1.3-0.6-1.3-1.3V1.4c0-0.7,0.601-1.3,1.3-1.3c0.7,0,1.301,0.6,1.301,1.3v2.7 C12.951,4.8,12.35,5.4,11.65,5.4z">
<pdc:annotation description="Element contains unsupported curved command(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-bezier">
<pdc:highlight y="4.10" x="10.35" height="1.30" width="1.30"/>
<pdc:highlight y="0.10" x="10.35" height="1.30" width="1.30"/>
<pdc:highlight y="0.10" x="11.65" height="1.30" width="1.30"/>
<pdc:highlight y="4.10" x="11.65" height="1.30" width="1.30"/>
</pdc:annotation>
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="5.40" x="11.65" details="Invalid point: (11.65, 5.40). Used closest supported coordinate: (11.625, 5.375)"/>
<pdc:highlight y="4.10" x="10.35" details="Invalid point: (10.35, 4.10). Used closest supported coordinate: (10.375, 4.125)"/>
<pdc:highlight y="1.40" x="10.35" details="Invalid point: (10.35, 1.40). Used closest supported coordinate: (10.375, 1.375)"/>
<pdc:highlight y="0.10" x="11.65" details="Invalid point: (11.65, 0.10). Used closest supported coordinate: (11.625, 0.125)"/>
<pdc:highlight y="1.40" x="12.95" details="Invalid point: (12.95, 1.40). Used closest supported coordinate: (13.0, 1.375)"/>
<pdc:highlight y="4.10" x="12.95" details="Invalid point: (12.95, 4.10). Used closest supported coordinate: (13.0, 4.125)"/>
<pdc:highlight y="5.40" x="11.65" details="Invalid point: (11.65, 5.40). Used closest supported coordinate: (11.625, 5.375)"/>
</pdc:annotation>
</path>
<path fill="#FFFF00" d="M2.25,8.499L0.35,6.6c-0.5-0.5-0.5-1.4,0-1.9s1.399-0.5,1.899,0l1.9,1.9c0.5,0.5,0.5,1.399,0,1.899 C3.55,8.999,2.75,8.999,2.25,8.499z">
<pdc:annotation description="Element contains unsupported curved command(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-bezier">
<pdc:highlight y="4.70" x="0.35" height="1.90" width="0.00"/>
<pdc:highlight y="4.70" x="0.35" height="0.00" width="1.90"/>
<pdc:highlight y="6.60" x="4.15" height="1.90" width="0.00"/>
<pdc:highlight y="8.50" x="2.25" height="0.00" width="1.90"/>
</pdc:annotation>
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="6.60" x="0.35" details="Invalid point: (0.35, 6.60). Used closest supported coordinate: (0.375, 6.625)"/>
<pdc:highlight y="4.70" x="0.35" details="Invalid point: (0.35, 4.70). Used closest supported coordinate: (0.375, 4.75)"/>
<pdc:highlight y="4.70" x="2.25" details="Invalid point: (2.25, 4.70). Used closest supported coordinate: (2.25, 4.75)"/>
<pdc:highlight y="6.60" x="4.15" details="Invalid point: (4.15, 6.60). Used closest supported coordinate: (4.125, 6.625)"/>
<pdc:highlight y="8.50" x="4.15" details="Invalid point: (4.15, 8.50). Used closest supported coordinate: (4.125, 8.5)"/>
</pdc:annotation>
</path>
<path fill="#FFAA00" d="M4.951,15.999H18.25c0.701,0,1.301,0.601,1.301,1.301c0,0.699-0.6,1.3-1.301,1.3H4.951 c-0.701,0-1.301-0.601-1.301-1.3C3.65,16.6,4.25,15.999,4.951,15.999z">
<pdc:annotation description="Element contains unsupported curved command(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-bezier">
<pdc:highlight y="16.00" x="18.25" height="1.30" width="1.30"/>
<pdc:highlight y="17.30" x="18.25" height="1.30" width="1.30"/>
<pdc:highlight y="17.30" x="3.65" height="1.30" width="1.30"/>
<pdc:highlight y="16.00" x="3.65" height="1.30" width="1.30"/>
</pdc:annotation>
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="16.00" x="4.95" details="Invalid point: (4.95, 16.00). Used closest supported coordinate: (5.0, 16.0)"/>
<pdc:highlight y="17.30" x="19.55" details="Invalid point: (19.55, 17.30). Used closest supported coordinate: (19.5, 17.25)"/>
<pdc:highlight y="18.60" x="18.25" details="Invalid point: (18.25, 18.60). Used closest supported coordinate: (18.25, 18.625)"/>
<pdc:highlight y="18.60" x="4.95" details="Invalid point: (4.95, 18.60). Used closest supported coordinate: (5.0, 18.625)"/>
<pdc:highlight y="17.30" x="3.65" details="Invalid point: (3.65, 17.30). Used closest supported coordinate: (3.625, 17.25)"/>
<pdc:highlight y="16.00" x="4.95" details="Invalid point: (4.95, 16.00). Used closest supported coordinate: (5.0, 16.0)"/>
</pdc:annotation>
</path>
</svg>

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 B

View file

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="23.3px" height="18.6px" viewBox="0 0 23.3 18.6" enable-background="new 0 0 23.3 18.6" xml:space="preserve">
<path fill="#FFFF00" d="M21.05,8.499c-0.5,0.5-1.4,0.5-1.9,0s-0.5-1.399,0-1.899l1.9-1.9c0.5-0.5,1.4-0.5,1.9,0s0.5,1.4,0,1.9
L21.05,8.499z"/>
<path fill="#FFAA00" d="M16.25,13.4c-0.899-1.6-2.6-2.7-4.6-2.7s-3.699,1.101-4.6,2.7h-2.9c1.1-3.1,4-5.3,7.5-5.3s6.4,2.2,7.5,5.3
H16.25z"/>
<path fill="#FFFF00" d="M11.65,5.4c-0.699,0-1.3-0.6-1.3-1.3V1.4c0-0.7,0.601-1.3,1.3-1.3c0.7,0,1.301,0.6,1.301,1.3v2.7
C12.951,4.8,12.35,5.4,11.65,5.4z"/>
<path fill="#FFFF00" d="M2.25,8.499L0.35,6.6c-0.5-0.5-0.5-1.4,0-1.9s1.399-0.5,1.899,0l1.9,1.9c0.5,0.5,0.5,1.399,0,1.899
C3.55,8.999,2.75,8.999,2.25,8.499z"/>
<path fill="#FFAA00" d="M4.951,15.999H18.25c0.701,0,1.301,0.601,1.301,1.301c0,0.699-0.6,1.3-1.301,1.3H4.951
c-0.701,0-1.301-0.601-1.301-1.3C3.65,16.6,4.25,15.999,4.951,15.999z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 231 B

View file

@ -0,0 +1,15 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns" xmlns:pdc="http://www.pebble.com/2015/pdc" width="21px" height="20px" viewBox="0 0 21 20" version="1.1">
<!-- Generator: Sketch 3.4 (15575) - http://www.bohemiancoding.com/sketch -->
<title>Artboard 1</title>
<desc>Created with Sketch.</desc>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">
<g id="Artboard-1" sketch:type="MSArtboardGroup" stroke="#979797" stroke-linecap="square">
<path d="M10.5,2.5 L10.5,4.5" id="Line" stroke="#979797" stroke-width="3" sketch:type="MSShapeGroup"/>
<path d="M18,13.5 L13,10 L8,10 L4,13.5" id="Line-Copy-3" stroke="#979797" stroke-width="2" sketch:type="MSShapeGroup"/>
<path d="M19,6 L17,8" id="Line-Copy" stroke="#979797" stroke-width="2" sketch:type="MSShapeGroup"/>
<path d="M2,6 L4,8" id="Line-Copy-2" stroke="#979797" stroke-width="2" sketch:type="MSShapeGroup"/>
<path d="M3,18 L19,18" id="Line" stroke="#979797" stroke-width="2" sketch:type="MSShapeGroup"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 B

View file

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="21px" height="20px" viewBox="0 0 21 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">
<!-- Generator: Sketch 3.4 (15575) - http://www.bohemiancoding.com/sketch -->
<title>Artboard 1</title>
<desc>Created with Sketch.</desc>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">
<g id="Artboard-1" sketch:type="MSArtboardGroup" stroke="#979797" stroke-linecap="square">
<path d="M10.5,2.5 L10.5,4.5" id="Line" stroke="#979797" stroke-width="3" sketch:type="MSShapeGroup"></path>
<path d="M18,13.5 L13,10 L8,10 L4,13.5" id="Line-Copy-3" stroke="#979797" stroke-width="2" sketch:type="MSShapeGroup"></path>
<path d="M19,6 L17,8" id="Line-Copy" stroke="#979797" stroke-width="2" sketch:type="MSShapeGroup"></path>
<path d="M2,6 L4,8" id="Line-Copy-2" stroke="#979797" stroke-width="2" sketch:type="MSShapeGroup"></path>
<path d="M3,18 L19,18" id="Line" stroke="#979797" stroke-width="2" sketch:type="MSShapeGroup"></path>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View file

@ -0,0 +1,73 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:pdc="http://www.pebble.com/2015/pdc" version="1.1" id="Design" x="0px" y="0px" viewBox="0 0 82 102" enable-background="new 0 0 82 102" xml:space="preserve">
<rect x="2" y="26" fill="#FFFFFF" stroke="#000000" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" width="42" height="74"/>
<line fill="#FFFFFF" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="2.5" y1="89.5" x2="43.5" y2="89.5"/>
<line fill="#FFFFFF" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="43.5" y1="32.5" x2="2.5" y2="32.5"/>
<line fill="#FFFFFF" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="25.5" y1="94.5" x2="20.5" y2="94.5"/>
<line fill="none" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="16.5" y1="1.5" x2="22.5" y2="7.5"/>
<line fill="none" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="16.5" y1="17.5" x2="8.5" y2="15.5"/>
<line fill="none" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="69.5" y1="1.5" x2="63.5" y2="7.5"/>
<line fill="none" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="69.5" y1="17.5" x2="77.5" y2="15.5"/>
<rect x="58" y="30" fill="#FFFFFF" stroke="#000000" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" width="14" height="70"/>
<path fill="#FFFFFF" stroke="#000000" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d=" M65.3,79h-0.6C57.1,79,51,72.9,51,65.3v-0.6C51,57.1,57.1,51,64.7,51h0.6C72.9,51,79,57.1,79,64.7v0.6C79,72.9,72.9,79,65.3,79z">
<pdc:annotation description="Element contains unsupported curved command(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-bezier">
<pdc:highlight y="65.30" x="51.00" height="13.70" width="13.70"/>
<pdc:highlight y="51.00" x="51.00" height="13.70" width="13.70"/>
<pdc:highlight y="51.00" x="65.30" height="13.70" width="13.70"/>
<pdc:highlight y="65.30" x="65.30" height="13.70" width="13.70"/>
</pdc:annotation>
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="79.00" x="65.30" details="Invalid point: (65.30, 79.00). Used closest supported coordinate: (65.25, 79.0)"/>
<pdc:highlight y="79.00" x="64.70" details="Invalid point: (64.70, 79.00). Used closest supported coordinate: (64.75, 79.0)"/>
<pdc:highlight y="77.93" x="59.35" details="Invalid point: (59.35, 77.93). Used closest supported coordinate: (59.375, 77.875)"/>
<pdc:highlight y="75.00" x="55.00" details="Invalid point: (55.00, 75.00). Used closest supported coordinate: (55.0, 75.0)"/>
<pdc:highlight y="70.65" x="52.07" details="Invalid point: (52.07, 70.65). Used closest supported coordinate: (52.125, 70.625)"/>
<pdc:highlight y="65.30" x="51.00" details="Invalid point: (51.00, 65.30). Used closest supported coordinate: (51.0, 65.25)"/>
<pdc:highlight y="64.70" x="51.00" details="Invalid point: (51.00, 64.70). Used closest supported coordinate: (51.0, 64.75)"/>
<pdc:highlight y="59.35" x="52.07" details="Invalid point: (52.07, 59.35). Used closest supported coordinate: (52.125, 59.375)"/>
<pdc:highlight y="55.00" x="55.00" details="Invalid point: (55.00, 55.00). Used closest supported coordinate: (55.0, 55.0)"/>
<pdc:highlight y="52.07" x="59.35" details="Invalid point: (59.35, 52.07). Used closest supported coordinate: (59.375, 52.125)"/>
<pdc:highlight y="51.00" x="64.70" details="Invalid point: (64.70, 51.00). Used closest supported coordinate: (64.75, 51.0)"/>
<pdc:highlight y="51.00" x="65.30" details="Invalid point: (65.30, 51.00). Used closest supported coordinate: (65.25, 51.0)"/>
<pdc:highlight y="52.07" x="70.65" details="Invalid point: (70.65, 52.07). Used closest supported coordinate: (70.625, 52.125)"/>
<pdc:highlight y="55.00" x="75.00" details="Invalid point: (75.00, 55.00). Used closest supported coordinate: (75.0, 55.0)"/>
<pdc:highlight y="59.35" x="77.93" details="Invalid point: (77.93, 59.35). Used closest supported coordinate: (77.875, 59.375)"/>
<pdc:highlight y="64.70" x="79.00" details="Invalid point: (79.00, 64.70). Used closest supported coordinate: (79.0, 64.75)"/>
<pdc:highlight y="65.30" x="79.00" details="Invalid point: (79.00, 65.30). Used closest supported coordinate: (79.0, 65.25)"/>
<pdc:highlight y="70.65" x="77.93" details="Invalid point: (77.93, 70.65). Used closest supported coordinate: (77.875, 70.625)"/>
<pdc:highlight y="75.00" x="75.00" details="Invalid point: (75.00, 75.00). Used closest supported coordinate: (75.0, 75.0)"/>
<pdc:highlight y="77.93" x="70.65" details="Invalid point: (70.65, 77.93). Used closest supported coordinate: (70.625, 77.875)"/>
<pdc:highlight y="79.00" x="65.30" details="Invalid point: (65.30, 79.00). Used closest supported coordinate: (65.25, 79.0)"/>
</pdc:annotation>
</path>
<line fill="none" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="58.5" y1="42.5" x2="72.5" y2="42.5"/>
<path fill="none" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d=" M65.3,72.5h-0.6c-4,0-7.2-3.2-7.2-7.2v-0.6c0-4,3.2-7.2,7.2-7.2h0.6c4,0,7.2,3.2,7.2,7.2v0.6C72.5,69.3,69.3,72.5,65.3,72.5z">
<pdc:annotation description="Element contains unsupported curved command(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-bezier">
<pdc:highlight y="65.30" x="57.50" height="7.20" width="7.20"/>
<pdc:highlight y="57.50" x="57.50" height="7.20" width="7.20"/>
<pdc:highlight y="57.50" x="65.30" height="7.20" width="7.20"/>
<pdc:highlight y="65.30" x="65.30" height="7.20" width="7.20"/>
</pdc:annotation>
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="72.50" x="65.30" details="Invalid point: (65.30, 72.50). Used closest supported coordinate: (65.25, 72.5)"/>
<pdc:highlight y="72.50" x="64.70" details="Invalid point: (64.70, 72.50). Used closest supported coordinate: (64.75, 72.5)"/>
<pdc:highlight y="70.40" x="59.60" details="Invalid point: (59.60, 70.40). Used closest supported coordinate: (59.625, 70.375)"/>
<pdc:highlight y="65.30" x="57.50" details="Invalid point: (57.50, 65.30). Used closest supported coordinate: (57.5, 65.25)"/>
<pdc:highlight y="64.70" x="57.50" details="Invalid point: (57.50, 64.70). Used closest supported coordinate: (57.5, 64.75)"/>
<pdc:highlight y="59.60" x="59.60" details="Invalid point: (59.60, 59.60). Used closest supported coordinate: (59.625, 59.625)"/>
<pdc:highlight y="57.50" x="64.70" details="Invalid point: (64.70, 57.50). Used closest supported coordinate: (64.75, 57.5)"/>
<pdc:highlight y="57.50" x="65.30" details="Invalid point: (65.30, 57.50). Used closest supported coordinate: (65.25, 57.5)"/>
<pdc:highlight y="59.60" x="70.40" details="Invalid point: (70.40, 59.60). Used closest supported coordinate: (70.375, 59.625)"/>
<pdc:highlight y="64.70" x="72.50" details="Invalid point: (72.50, 64.70). Used closest supported coordinate: (72.5, 64.75)"/>
<pdc:highlight y="65.30" x="72.50" details="Invalid point: (72.50, 65.30). Used closest supported coordinate: (72.5, 65.25)"/>
<pdc:highlight y="70.40" x="70.40" details="Invalid point: (70.40, 70.40). Used closest supported coordinate: (70.375, 70.375)"/>
<pdc:highlight y="72.50" x="65.30" details="Invalid point: (65.30, 72.50). Used closest supported coordinate: (65.25, 72.5)"/>
</pdc:annotation>
</path>
<g>
<polygon fill="#FF0000" stroke="#000000" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points=" 34,53 22,41 22,22 34,10 53,10 65,22 65,41 53,53 "/>
<line fill="none" stroke="#FFFFFF" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="35" y1="23" x2="52" y2="40"/>
<line fill="none" stroke="#FFFFFF" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="35" y1="40" x2="52" y2="23"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

View file

@ -0,0 +1,73 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:pdc="http://www.pebble.com/2015/pdc" version="1.1" id="Design" x="0px" y="0px" viewBox="0 0 82 102" enable-background="new 0 0 82 102" xml:space="preserve">
<rect x="2" y="26" fill="#FFFFFF" stroke="#000000" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" width="42" height="74"/>
<line fill="#FFFFFF" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="2.5" y1="89.5" x2="43.5" y2="89.5"/>
<line fill="#FFFFFF" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="43.5" y1="32.5" x2="2.5" y2="32.5"/>
<line fill="#FFFFFF" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="25.5" y1="94.5" x2="20.5" y2="94.5"/>
<line fill="none" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="16.5" y1="1.5" x2="22.5" y2="7.5"/>
<line fill="none" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="16.5" y1="17.5" x2="8.5" y2="15.5"/>
<line fill="none" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="69.5" y1="1.5" x2="63.5" y2="7.5"/>
<line fill="none" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="69.5" y1="17.5" x2="77.5" y2="15.5"/>
<rect x="58" y="30" fill="#FFFFFF" stroke="#000000" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" width="14" height="70"/>
<path fill="#FFFFFF" stroke="#000000" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d=" M65.3,79h-0.6C57.1,79,51,72.9,51,65.3v-0.6C51,57.1,57.1,51,64.7,51h0.6C72.9,51,79,57.1,79,64.7v0.6C79,72.9,72.9,79,65.3,79z">
<pdc:annotation description="Element contains unsupported curved command(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-bezier">
<pdc:highlight y="65.30" x="51.00" height="13.70" width="13.70"/>
<pdc:highlight y="51.00" x="51.00" height="13.70" width="13.70"/>
<pdc:highlight y="51.00" x="65.30" height="13.70" width="13.70"/>
<pdc:highlight y="65.30" x="65.30" height="13.70" width="13.70"/>
</pdc:annotation>
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="79.00" x="65.30" details="Invalid point: (65.30, 79.00). Used closest supported coordinate: (65.25, 79.0)"/>
<pdc:highlight y="79.00" x="64.70" details="Invalid point: (64.70, 79.00). Used closest supported coordinate: (64.75, 79.0)"/>
<pdc:highlight y="77.93" x="59.35" details="Invalid point: (59.35, 77.93). Used closest supported coordinate: (59.375, 77.875)"/>
<pdc:highlight y="75.00" x="55.00" details="Invalid point: (55.00, 75.00). Used closest supported coordinate: (55.0, 75.0)"/>
<pdc:highlight y="70.65" x="52.07" details="Invalid point: (52.07, 70.65). Used closest supported coordinate: (52.125, 70.625)"/>
<pdc:highlight y="65.30" x="51.00" details="Invalid point: (51.00, 65.30). Used closest supported coordinate: (51.0, 65.25)"/>
<pdc:highlight y="64.70" x="51.00" details="Invalid point: (51.00, 64.70). Used closest supported coordinate: (51.0, 64.75)"/>
<pdc:highlight y="59.35" x="52.07" details="Invalid point: (52.07, 59.35). Used closest supported coordinate: (52.125, 59.375)"/>
<pdc:highlight y="55.00" x="55.00" details="Invalid point: (55.00, 55.00). Used closest supported coordinate: (55.0, 55.0)"/>
<pdc:highlight y="52.07" x="59.35" details="Invalid point: (59.35, 52.07). Used closest supported coordinate: (59.375, 52.125)"/>
<pdc:highlight y="51.00" x="64.70" details="Invalid point: (64.70, 51.00). Used closest supported coordinate: (64.75, 51.0)"/>
<pdc:highlight y="51.00" x="65.30" details="Invalid point: (65.30, 51.00). Used closest supported coordinate: (65.25, 51.0)"/>
<pdc:highlight y="52.07" x="70.65" details="Invalid point: (70.65, 52.07). Used closest supported coordinate: (70.625, 52.125)"/>
<pdc:highlight y="55.00" x="75.00" details="Invalid point: (75.00, 55.00). Used closest supported coordinate: (75.0, 55.0)"/>
<pdc:highlight y="59.35" x="77.93" details="Invalid point: (77.93, 59.35). Used closest supported coordinate: (77.875, 59.375)"/>
<pdc:highlight y="64.70" x="79.00" details="Invalid point: (79.00, 64.70). Used closest supported coordinate: (79.0, 64.75)"/>
<pdc:highlight y="65.30" x="79.00" details="Invalid point: (79.00, 65.30). Used closest supported coordinate: (79.0, 65.25)"/>
<pdc:highlight y="70.65" x="77.93" details="Invalid point: (77.93, 70.65). Used closest supported coordinate: (77.875, 70.625)"/>
<pdc:highlight y="75.00" x="75.00" details="Invalid point: (75.00, 75.00). Used closest supported coordinate: (75.0, 75.0)"/>
<pdc:highlight y="77.93" x="70.65" details="Invalid point: (70.65, 77.93). Used closest supported coordinate: (70.625, 77.875)"/>
<pdc:highlight y="79.00" x="65.30" details="Invalid point: (65.30, 79.00). Used closest supported coordinate: (65.25, 79.0)"/>
</pdc:annotation>
</path>
<line fill="none" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="58.5" y1="42.5" x2="72.5" y2="42.5"/>
<path fill="none" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d=" M65.3,72.5h-0.6c-4,0-7.2-3.2-7.2-7.2v-0.6c0-4,3.2-7.2,7.2-7.2h0.6c4,0,7.2,3.2,7.2,7.2v0.6C72.5,69.3,69.3,72.5,65.3,72.5z">
<pdc:annotation description="Element contains unsupported curved command(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-bezier">
<pdc:highlight y="65.30" x="57.50" height="7.20" width="7.20"/>
<pdc:highlight y="57.50" x="57.50" height="7.20" width="7.20"/>
<pdc:highlight y="57.50" x="65.30" height="7.20" width="7.20"/>
<pdc:highlight y="65.30" x="65.30" height="7.20" width="7.20"/>
</pdc:annotation>
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="72.50" x="65.30" details="Invalid point: (65.30, 72.50). Used closest supported coordinate: (65.25, 72.5)"/>
<pdc:highlight y="72.50" x="64.70" details="Invalid point: (64.70, 72.50). Used closest supported coordinate: (64.75, 72.5)"/>
<pdc:highlight y="70.40" x="59.60" details="Invalid point: (59.60, 70.40). Used closest supported coordinate: (59.625, 70.375)"/>
<pdc:highlight y="65.30" x="57.50" details="Invalid point: (57.50, 65.30). Used closest supported coordinate: (57.5, 65.25)"/>
<pdc:highlight y="64.70" x="57.50" details="Invalid point: (57.50, 64.70). Used closest supported coordinate: (57.5, 64.75)"/>
<pdc:highlight y="59.60" x="59.60" details="Invalid point: (59.60, 59.60). Used closest supported coordinate: (59.625, 59.625)"/>
<pdc:highlight y="57.50" x="64.70" details="Invalid point: (64.70, 57.50). Used closest supported coordinate: (64.75, 57.5)"/>
<pdc:highlight y="57.50" x="65.30" details="Invalid point: (65.30, 57.50). Used closest supported coordinate: (65.25, 57.5)"/>
<pdc:highlight y="59.60" x="70.40" details="Invalid point: (70.40, 59.60). Used closest supported coordinate: (70.375, 59.625)"/>
<pdc:highlight y="64.70" x="72.50" details="Invalid point: (72.50, 64.70). Used closest supported coordinate: (72.5, 64.75)"/>
<pdc:highlight y="65.30" x="72.50" details="Invalid point: (72.50, 65.30). Used closest supported coordinate: (72.5, 65.25)"/>
<pdc:highlight y="70.40" x="70.40" details="Invalid point: (70.40, 70.40). Used closest supported coordinate: (70.375, 70.375)"/>
<pdc:highlight y="72.50" x="65.30" details="Invalid point: (65.30, 72.50). Used closest supported coordinate: (65.25, 72.5)"/>
</pdc:annotation>
</path>
<g>
<polygon fill="#FF0000" stroke="#000000" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points=" 34,53 22,41 22,22 34,10 53,10 65,22 65,41 53,53 "/>
<line fill="none" stroke="#FFFFFF" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="35" y1="23" x2="52" y2="40"/>
<line fill="none" stroke="#FFFFFF" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="35" y1="40" x2="52" y2="23"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View file

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 18.1.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Design" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 82 102" enable-background="new 0 0 82 102" xml:space="preserve">
<rect x="2" y="26" fill="#FFFFFF" stroke="#000000" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" width="42" height="74"/>
<line fill="#FFFFFF" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="2.5" y1="89.5" x2="43.5" y2="89.5"/>
<line fill="#FFFFFF" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="43.5" y1="32.5" x2="2.5" y2="32.5"/>
<line fill="#FFFFFF" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="25.5" y1="94.5" x2="20.5" y2="94.5"/>
<line fill="none" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="16.5" y1="1.5" x2="22.5" y2="7.5"/>
<line fill="none" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="16.5" y1="17.5" x2="8.5" y2="15.5"/>
<line fill="none" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="69.5" y1="1.5" x2="63.5" y2="7.5"/>
<line fill="none" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="69.5" y1="17.5" x2="77.5" y2="15.5"/>
<rect x="58" y="30" fill="#FFFFFF" stroke="#000000" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" width="14" height="70"/>
<path fill="#FFFFFF" stroke="#000000" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="
M65.3,79h-0.6C57.1,79,51,72.9,51,65.3v-0.6C51,57.1,57.1,51,64.7,51h0.6C72.9,51,79,57.1,79,64.7v0.6C79,72.9,72.9,79,65.3,79z"/>
<line fill="none" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="58.5" y1="42.5" x2="72.5" y2="42.5"/>
<path fill="none" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="
M65.3,72.5h-0.6c-4,0-7.2-3.2-7.2-7.2v-0.6c0-4,3.2-7.2,7.2-7.2h0.6c4,0,7.2,3.2,7.2,7.2v0.6C72.5,69.3,69.3,72.5,65.3,72.5z"/>
<g>
<polygon fill="#FF0000" stroke="#000000" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="
34,53 22,41 22,22 34,10 53,10 65,22 65,41 53,53 "/>
<line fill="none" stroke="#FFFFFF" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="35" y1="23" x2="52" y2="40"/>
<line fill="none" stroke="#FFFFFF" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="35" y1="40" x2="52" y2="23"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

View file

@ -0,0 +1,69 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:pdc="http://www.pebble.com/2015/pdc" version="1.1" id="Design" x="0px" y="0px" viewBox="0 0 99 78" enable-background="new 0 0 99 78" xml:space="preserve">
<g>
<rect x="2" y="2" fill="#FFFFFF" stroke="#000000" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" width="42" height="74"/>
<line fill="#FFFFFF" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="2.5" y1="65.5" x2="43.5" y2="65.5"/>
<line fill="#FFFFFF" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="43.5" y1="8.5" x2="2.5" y2="8.5"/>
<line fill="#FFFFFF" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="25.5" y1="70.5" x2="20.5" y2="70.5"/>
</g>
<rect x="75" y="2" fill="#FFFFFF" stroke="#000000" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" width="14" height="74"/>
<path fill="#FFFFFF" stroke="#000000" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d=" M82.3,55h-0.6C74.1,55,68,48.9,68,41.3v-0.6C68,33.1,74.1,27,81.7,27h0.6C89.9,27,96,33.1,96,40.7v0.6C96,48.9,89.9,55,82.3,55z">
<pdc:annotation description="Element contains unsupported curved command(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-bezier">
<pdc:highlight y="41.30" x="68.00" height="13.70" width="13.70"/>
<pdc:highlight y="27.00" x="68.00" height="13.70" width="13.70"/>
<pdc:highlight y="27.00" x="82.30" height="13.70" width="13.70"/>
<pdc:highlight y="41.30" x="82.30" height="13.70" width="13.70"/>
</pdc:annotation>
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="55.00" x="82.30" details="Invalid point: (82.30, 55.00). Used closest supported coordinate: (82.25, 55.0)"/>
<pdc:highlight y="55.00" x="81.70" details="Invalid point: (81.70, 55.00). Used closest supported coordinate: (81.75, 55.0)"/>
<pdc:highlight y="53.93" x="76.35" details="Invalid point: (76.35, 53.93). Used closest supported coordinate: (76.375, 53.875)"/>
<pdc:highlight y="51.00" x="72.00" details="Invalid point: (72.00, 51.00). Used closest supported coordinate: (72.0, 51.0)"/>
<pdc:highlight y="46.65" x="69.07" details="Invalid point: (69.07, 46.65). Used closest supported coordinate: (69.125, 46.625)"/>
<pdc:highlight y="41.30" x="68.00" details="Invalid point: (68.00, 41.30). Used closest supported coordinate: (68.0, 41.25)"/>
<pdc:highlight y="40.70" x="68.00" details="Invalid point: (68.00, 40.70). Used closest supported coordinate: (68.0, 40.75)"/>
<pdc:highlight y="35.35" x="69.07" details="Invalid point: (69.07, 35.35). Used closest supported coordinate: (69.125, 35.375)"/>
<pdc:highlight y="31.00" x="72.00" details="Invalid point: (72.00, 31.00). Used closest supported coordinate: (72.0, 31.0)"/>
<pdc:highlight y="28.07" x="76.35" details="Invalid point: (76.35, 28.07). Used closest supported coordinate: (76.375, 28.125)"/>
<pdc:highlight y="27.00" x="81.70" details="Invalid point: (81.70, 27.00). Used closest supported coordinate: (81.75, 27.0)"/>
<pdc:highlight y="27.00" x="82.30" details="Invalid point: (82.30, 27.00). Used closest supported coordinate: (82.25, 27.0)"/>
<pdc:highlight y="28.07" x="87.65" details="Invalid point: (87.65, 28.07). Used closest supported coordinate: (87.625, 28.125)"/>
<pdc:highlight y="31.00" x="92.00" details="Invalid point: (92.00, 31.00). Used closest supported coordinate: (92.0, 31.0)"/>
<pdc:highlight y="35.35" x="94.93" details="Invalid point: (94.93, 35.35). Used closest supported coordinate: (94.875, 35.375)"/>
<pdc:highlight y="40.70" x="96.00" details="Invalid point: (96.00, 40.70). Used closest supported coordinate: (96.0, 40.75)"/>
<pdc:highlight y="41.30" x="96.00" details="Invalid point: (96.00, 41.30). Used closest supported coordinate: (96.0, 41.25)"/>
<pdc:highlight y="46.65" x="94.93" details="Invalid point: (94.93, 46.65). Used closest supported coordinate: (94.875, 46.625)"/>
<pdc:highlight y="51.00" x="92.00" details="Invalid point: (92.00, 51.00). Used closest supported coordinate: (92.0, 51.0)"/>
<pdc:highlight y="53.93" x="87.65" details="Invalid point: (87.65, 53.93). Used closest supported coordinate: (87.625, 53.875)"/>
<pdc:highlight y="55.00" x="82.30" details="Invalid point: (82.30, 55.00). Used closest supported coordinate: (82.25, 55.0)"/>
</pdc:annotation>
</path>
<line fill="none" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="75.5" y1="14.5" x2="89.5" y2="14.5"/>
<line fill="none" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="82" y1="14.5" x2="82" y2="9.5"/>
<path fill="none" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d=" M82.3,48.5h-0.6c-4,0-7.2-3.2-7.2-7.2v-0.6c0-4,3.2-7.2,7.2-7.2h0.6c4,0,7.2,3.2,7.2,7.2v0.6C89.5,45.3,86.3,48.5,82.3,48.5z">
<pdc:annotation description="Element contains unsupported curved command(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-bezier">
<pdc:highlight y="41.30" x="74.50" height="7.20" width="7.20"/>
<pdc:highlight y="33.50" x="74.50" height="7.20" width="7.20"/>
<pdc:highlight y="33.50" x="82.30" height="7.20" width="7.20"/>
<pdc:highlight y="41.30" x="82.30" height="7.20" width="7.20"/>
</pdc:annotation>
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="48.50" x="82.30" details="Invalid point: (82.30, 48.50). Used closest supported coordinate: (82.25, 48.5)"/>
<pdc:highlight y="48.50" x="81.70" details="Invalid point: (81.70, 48.50). Used closest supported coordinate: (81.75, 48.5)"/>
<pdc:highlight y="46.40" x="76.60" details="Invalid point: (76.60, 46.40). Used closest supported coordinate: (76.625, 46.375)"/>
<pdc:highlight y="41.30" x="74.50" details="Invalid point: (74.50, 41.30). Used closest supported coordinate: (74.5, 41.25)"/>
<pdc:highlight y="40.70" x="74.50" details="Invalid point: (74.50, 40.70). Used closest supported coordinate: (74.5, 40.75)"/>
<pdc:highlight y="35.60" x="76.60" details="Invalid point: (76.60, 35.60). Used closest supported coordinate: (76.625, 35.625)"/>
<pdc:highlight y="33.50" x="81.70" details="Invalid point: (81.70, 33.50). Used closest supported coordinate: (81.75, 33.5)"/>
<pdc:highlight y="33.50" x="82.30" details="Invalid point: (82.30, 33.50). Used closest supported coordinate: (82.25, 33.5)"/>
<pdc:highlight y="35.60" x="87.40" details="Invalid point: (87.40, 35.60). Used closest supported coordinate: (87.375, 35.625)"/>
<pdc:highlight y="40.70" x="89.50" details="Invalid point: (89.50, 40.70). Used closest supported coordinate: (89.5, 40.75)"/>
<pdc:highlight y="41.30" x="89.50" details="Invalid point: (89.50, 41.30). Used closest supported coordinate: (89.5, 41.25)"/>
<pdc:highlight y="46.40" x="87.40" details="Invalid point: (87.40, 46.40). Used closest supported coordinate: (87.375, 46.375)"/>
<pdc:highlight y="48.50" x="82.30" details="Invalid point: (82.30, 48.50). Used closest supported coordinate: (82.25, 48.5)"/>
</pdc:annotation>
</path>
<polyline fill="none" stroke="#000000" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points=" 55,49 61,43 55,37 "/>
<line fill="none" stroke="#000000" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="61" y1="43" x2="25" y2="43"/>
</svg>

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

View file

@ -0,0 +1,69 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:pdc="http://www.pebble.com/2015/pdc" version="1.1" id="Design" x="0px" y="0px" viewBox="0 0 99 78" enable-background="new 0 0 99 78" xml:space="preserve">
<g>
<rect x="2" y="2" fill="#FFFFFF" stroke="#000000" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" width="42" height="74"/>
<line fill="#FFFFFF" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="2.5" y1="65.5" x2="43.5" y2="65.5"/>
<line fill="#FFFFFF" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="43.5" y1="8.5" x2="2.5" y2="8.5"/>
<line fill="#FFFFFF" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="25.5" y1="70.5" x2="20.5" y2="70.5"/>
</g>
<rect x="75" y="2" fill="#FFFFFF" stroke="#000000" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" width="14" height="74"/>
<path fill="#FFFFFF" stroke="#000000" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d=" M82.3,55h-0.6C74.1,55,68,48.9,68,41.3v-0.6C68,33.1,74.1,27,81.7,27h0.6C89.9,27,96,33.1,96,40.7v0.6C96,48.9,89.9,55,82.3,55z">
<pdc:annotation description="Element contains unsupported curved command(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-bezier">
<pdc:highlight y="41.30" x="68.00" height="13.70" width="13.70"/>
<pdc:highlight y="27.00" x="68.00" height="13.70" width="13.70"/>
<pdc:highlight y="27.00" x="82.30" height="13.70" width="13.70"/>
<pdc:highlight y="41.30" x="82.30" height="13.70" width="13.70"/>
</pdc:annotation>
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="55.00" x="82.30" details="Invalid point: (82.30, 55.00). Used closest supported coordinate: (82.25, 55.0)"/>
<pdc:highlight y="55.00" x="81.70" details="Invalid point: (81.70, 55.00). Used closest supported coordinate: (81.75, 55.0)"/>
<pdc:highlight y="53.93" x="76.35" details="Invalid point: (76.35, 53.93). Used closest supported coordinate: (76.375, 53.875)"/>
<pdc:highlight y="51.00" x="72.00" details="Invalid point: (72.00, 51.00). Used closest supported coordinate: (72.0, 51.0)"/>
<pdc:highlight y="46.65" x="69.07" details="Invalid point: (69.07, 46.65). Used closest supported coordinate: (69.125, 46.625)"/>
<pdc:highlight y="41.30" x="68.00" details="Invalid point: (68.00, 41.30). Used closest supported coordinate: (68.0, 41.25)"/>
<pdc:highlight y="40.70" x="68.00" details="Invalid point: (68.00, 40.70). Used closest supported coordinate: (68.0, 40.75)"/>
<pdc:highlight y="35.35" x="69.07" details="Invalid point: (69.07, 35.35). Used closest supported coordinate: (69.125, 35.375)"/>
<pdc:highlight y="31.00" x="72.00" details="Invalid point: (72.00, 31.00). Used closest supported coordinate: (72.0, 31.0)"/>
<pdc:highlight y="28.07" x="76.35" details="Invalid point: (76.35, 28.07). Used closest supported coordinate: (76.375, 28.125)"/>
<pdc:highlight y="27.00" x="81.70" details="Invalid point: (81.70, 27.00). Used closest supported coordinate: (81.75, 27.0)"/>
<pdc:highlight y="27.00" x="82.30" details="Invalid point: (82.30, 27.00). Used closest supported coordinate: (82.25, 27.0)"/>
<pdc:highlight y="28.07" x="87.65" details="Invalid point: (87.65, 28.07). Used closest supported coordinate: (87.625, 28.125)"/>
<pdc:highlight y="31.00" x="92.00" details="Invalid point: (92.00, 31.00). Used closest supported coordinate: (92.0, 31.0)"/>
<pdc:highlight y="35.35" x="94.93" details="Invalid point: (94.93, 35.35). Used closest supported coordinate: (94.875, 35.375)"/>
<pdc:highlight y="40.70" x="96.00" details="Invalid point: (96.00, 40.70). Used closest supported coordinate: (96.0, 40.75)"/>
<pdc:highlight y="41.30" x="96.00" details="Invalid point: (96.00, 41.30). Used closest supported coordinate: (96.0, 41.25)"/>
<pdc:highlight y="46.65" x="94.93" details="Invalid point: (94.93, 46.65). Used closest supported coordinate: (94.875, 46.625)"/>
<pdc:highlight y="51.00" x="92.00" details="Invalid point: (92.00, 51.00). Used closest supported coordinate: (92.0, 51.0)"/>
<pdc:highlight y="53.93" x="87.65" details="Invalid point: (87.65, 53.93). Used closest supported coordinate: (87.625, 53.875)"/>
<pdc:highlight y="55.00" x="82.30" details="Invalid point: (82.30, 55.00). Used closest supported coordinate: (82.25, 55.0)"/>
</pdc:annotation>
</path>
<line fill="none" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="75.5" y1="14.5" x2="89.5" y2="14.5"/>
<line fill="none" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="82" y1="14.5" x2="82" y2="9.5"/>
<path fill="none" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d=" M82.3,48.5h-0.6c-4,0-7.2-3.2-7.2-7.2v-0.6c0-4,3.2-7.2,7.2-7.2h0.6c4,0,7.2,3.2,7.2,7.2v0.6C89.5,45.3,86.3,48.5,82.3,48.5z">
<pdc:annotation description="Element contains unsupported curved command(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-bezier">
<pdc:highlight y="41.30" x="74.50" height="7.20" width="7.20"/>
<pdc:highlight y="33.50" x="74.50" height="7.20" width="7.20"/>
<pdc:highlight y="33.50" x="82.30" height="7.20" width="7.20"/>
<pdc:highlight y="41.30" x="82.30" height="7.20" width="7.20"/>
</pdc:annotation>
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="48.50" x="82.30" details="Invalid point: (82.30, 48.50). Used closest supported coordinate: (82.25, 48.5)"/>
<pdc:highlight y="48.50" x="81.70" details="Invalid point: (81.70, 48.50). Used closest supported coordinate: (81.75, 48.5)"/>
<pdc:highlight y="46.40" x="76.60" details="Invalid point: (76.60, 46.40). Used closest supported coordinate: (76.625, 46.375)"/>
<pdc:highlight y="41.30" x="74.50" details="Invalid point: (74.50, 41.30). Used closest supported coordinate: (74.5, 41.25)"/>
<pdc:highlight y="40.70" x="74.50" details="Invalid point: (74.50, 40.70). Used closest supported coordinate: (74.5, 40.75)"/>
<pdc:highlight y="35.60" x="76.60" details="Invalid point: (76.60, 35.60). Used closest supported coordinate: (76.625, 35.625)"/>
<pdc:highlight y="33.50" x="81.70" details="Invalid point: (81.70, 33.50). Used closest supported coordinate: (81.75, 33.5)"/>
<pdc:highlight y="33.50" x="82.30" details="Invalid point: (82.30, 33.50). Used closest supported coordinate: (82.25, 33.5)"/>
<pdc:highlight y="35.60" x="87.40" details="Invalid point: (87.40, 35.60). Used closest supported coordinate: (87.375, 35.625)"/>
<pdc:highlight y="40.70" x="89.50" details="Invalid point: (89.50, 40.70). Used closest supported coordinate: (89.5, 40.75)"/>
<pdc:highlight y="41.30" x="89.50" details="Invalid point: (89.50, 41.30). Used closest supported coordinate: (89.5, 41.25)"/>
<pdc:highlight y="46.40" x="87.40" details="Invalid point: (87.40, 46.40). Used closest supported coordinate: (87.375, 46.375)"/>
<pdc:highlight y="48.50" x="82.30" details="Invalid point: (82.30, 48.50). Used closest supported coordinate: (82.25, 48.5)"/>
</pdc:annotation>
</path>
<polyline fill="none" stroke="#000000" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points=" 55,49 61,43 55,37 "/>
<line fill="none" stroke="#000000" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="61" y1="43" x2="25" y2="43"/>
</svg>

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 931 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 931 B

View file

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 18.1.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Design" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 99 78" enable-background="new 0 0 99 78" xml:space="preserve">
<g>
<rect x="2" y="2" fill="#FFFFFF" stroke="#000000" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" width="42" height="74"/>
<line fill="#FFFFFF" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="2.5" y1="65.5" x2="43.5" y2="65.5"/>
<line fill="#FFFFFF" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="43.5" y1="8.5" x2="2.5" y2="8.5"/>
<line fill="#FFFFFF" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="25.5" y1="70.5" x2="20.5" y2="70.5"/>
</g>
<rect x="75" y="2" fill="#FFFFFF" stroke="#000000" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" width="14" height="74"/>
<path fill="#FFFFFF" stroke="#000000" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="
M82.3,55h-0.6C74.1,55,68,48.9,68,41.3v-0.6C68,33.1,74.1,27,81.7,27h0.6C89.9,27,96,33.1,96,40.7v0.6C96,48.9,89.9,55,82.3,55z"/>
<line fill="none" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="75.5" y1="14.5" x2="89.5" y2="14.5"/>
<line fill="none" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="82" y1="14.5" x2="82" y2="9.5"/>
<path fill="none" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="
M82.3,48.5h-0.6c-4,0-7.2-3.2-7.2-7.2v-0.6c0-4,3.2-7.2,7.2-7.2h0.6c4,0,7.2,3.2,7.2,7.2v0.6C89.5,45.3,86.3,48.5,82.3,48.5z"/>
<polyline fill="none" stroke="#000000" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="
55,49 61,43 55,37 "/>
<line fill="none" stroke="#000000" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="61" y1="43" x2="25" y2="43"/>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

View file

@ -0,0 +1,66 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:pdc="http://www.pebble.com/2015/pdc" version="1.1" id="Design" x="0px" y="0px" viewBox="0 0 64 74" enable-background="new 0 0 64 74" xml:space="preserve">
<rect x="9" y="2" fill="#FFFFFF" stroke="#000000" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" width="14" height="70"/>
<path fill="#FFFFFF" stroke="#000000" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d=" M16.3,51h-0.6C8.1,51,2,44.9,2,37.3v-0.6C2,29.1,8.1,23,15.7,23h0.6C23.9,23,30,29.1,30,36.7v0.6C30,44.9,23.9,51,16.3,51z">
<pdc:annotation description="Element contains unsupported curved command(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-bezier">
<pdc:highlight y="37.30" x="2.00" height="13.70" width="13.70"/>
<pdc:highlight y="23.00" x="2.00" height="13.70" width="13.70"/>
<pdc:highlight y="23.00" x="16.30" height="13.70" width="13.70"/>
<pdc:highlight y="37.30" x="16.30" height="13.70" width="13.70"/>
</pdc:annotation>
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="51.00" x="16.30" details="Invalid point: (16.30, 51.00). Used closest supported coordinate: (16.25, 51.0)"/>
<pdc:highlight y="51.00" x="15.70" details="Invalid point: (15.70, 51.00). Used closest supported coordinate: (15.75, 51.0)"/>
<pdc:highlight y="49.93" x="10.35" details="Invalid point: (10.35, 49.93). Used closest supported coordinate: (10.375, 49.875)"/>
<pdc:highlight y="47.00" x="6.00" details="Invalid point: (6.00, 47.00). Used closest supported coordinate: (6.0, 47.0)"/>
<pdc:highlight y="42.65" x="3.07" details="Invalid point: (3.07, 42.65). Used closest supported coordinate: (3.125, 42.625)"/>
<pdc:highlight y="37.30" x="2.00" details="Invalid point: (2.00, 37.30). Used closest supported coordinate: (2.0, 37.25)"/>
<pdc:highlight y="36.70" x="2.00" details="Invalid point: (2.00, 36.70). Used closest supported coordinate: (2.0, 36.75)"/>
<pdc:highlight y="31.35" x="3.07" details="Invalid point: (3.07, 31.35). Used closest supported coordinate: (3.125, 31.375)"/>
<pdc:highlight y="27.00" x="6.00" details="Invalid point: (6.00, 27.00). Used closest supported coordinate: (6.0, 27.0)"/>
<pdc:highlight y="24.07" x="10.35" details="Invalid point: (10.35, 24.07). Used closest supported coordinate: (10.375, 24.125)"/>
<pdc:highlight y="23.00" x="15.70" details="Invalid point: (15.70, 23.00). Used closest supported coordinate: (15.75, 23.0)"/>
<pdc:highlight y="23.00" x="16.30" details="Invalid point: (16.30, 23.00). Used closest supported coordinate: (16.25, 23.0)"/>
<pdc:highlight y="24.07" x="21.65" details="Invalid point: (21.65, 24.07). Used closest supported coordinate: (21.625, 24.125)"/>
<pdc:highlight y="27.00" x="26.00" details="Invalid point: (26.00, 27.00). Used closest supported coordinate: (26.0, 27.0)"/>
<pdc:highlight y="31.35" x="28.93" details="Invalid point: (28.93, 31.35). Used closest supported coordinate: (28.875, 31.375)"/>
<pdc:highlight y="36.70" x="30.00" details="Invalid point: (30.00, 36.70). Used closest supported coordinate: (30.0, 36.75)"/>
<pdc:highlight y="37.30" x="30.00" details="Invalid point: (30.00, 37.30). Used closest supported coordinate: (30.0, 37.25)"/>
<pdc:highlight y="42.65" x="28.93" details="Invalid point: (28.93, 42.65). Used closest supported coordinate: (28.875, 42.625)"/>
<pdc:highlight y="47.00" x="26.00" details="Invalid point: (26.00, 47.00). Used closest supported coordinate: (26.0, 47.0)"/>
<pdc:highlight y="49.93" x="21.65" details="Invalid point: (21.65, 49.93). Used closest supported coordinate: (21.625, 49.875)"/>
<pdc:highlight y="51.00" x="16.30" details="Invalid point: (16.30, 51.00). Used closest supported coordinate: (16.25, 51.0)"/>
</pdc:annotation>
</path>
<line fill="none" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="9.5" y1="14.5" x2="23.5" y2="14.5"/>
<line fill="none" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="16" y1="14.5" x2="16" y2="9"/>
<path fill="none" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d=" M16.3,44.5h-0.6c-4,0-7.2-3.2-7.2-7.2v-0.6c0-4,3.2-7.2,7.2-7.2h0.6c4,0,7.2,3.2,7.2,7.2v0.6C23.5,41.3,20.3,44.5,16.3,44.5z">
<pdc:annotation description="Element contains unsupported curved command(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-bezier">
<pdc:highlight y="37.30" x="8.50" height="7.20" width="7.20"/>
<pdc:highlight y="29.50" x="8.50" height="7.20" width="7.20"/>
<pdc:highlight y="29.50" x="16.30" height="7.20" width="7.20"/>
<pdc:highlight y="37.30" x="16.30" height="7.20" width="7.20"/>
</pdc:annotation>
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="44.50" x="16.30" details="Invalid point: (16.30, 44.50). Used closest supported coordinate: (16.25, 44.5)"/>
<pdc:highlight y="44.50" x="15.70" details="Invalid point: (15.70, 44.50). Used closest supported coordinate: (15.75, 44.5)"/>
<pdc:highlight y="42.40" x="10.60" details="Invalid point: (10.60, 42.40). Used closest supported coordinate: (10.625, 42.375)"/>
<pdc:highlight y="37.30" x="8.50" details="Invalid point: (8.50, 37.30). Used closest supported coordinate: (8.5, 37.25)"/>
<pdc:highlight y="36.70" x="8.50" details="Invalid point: (8.50, 36.70). Used closest supported coordinate: (8.5, 36.75)"/>
<pdc:highlight y="31.60" x="10.60" details="Invalid point: (10.60, 31.60). Used closest supported coordinate: (10.625, 31.625)"/>
<pdc:highlight y="29.50" x="15.70" details="Invalid point: (15.70, 29.50). Used closest supported coordinate: (15.75, 29.5)"/>
<pdc:highlight y="29.50" x="16.30" details="Invalid point: (16.30, 29.50). Used closest supported coordinate: (16.25, 29.5)"/>
<pdc:highlight y="31.60" x="21.40" details="Invalid point: (21.40, 31.60). Used closest supported coordinate: (21.375, 31.625)"/>
<pdc:highlight y="36.70" x="23.50" details="Invalid point: (23.50, 36.70). Used closest supported coordinate: (23.5, 36.75)"/>
<pdc:highlight y="37.30" x="23.50" details="Invalid point: (23.50, 37.30). Used closest supported coordinate: (23.5, 37.25)"/>
<pdc:highlight y="42.40" x="21.40" details="Invalid point: (21.40, 42.40). Used closest supported coordinate: (21.375, 42.375)"/>
<pdc:highlight y="44.50" x="16.30" details="Invalid point: (16.30, 44.50). Used closest supported coordinate: (16.25, 44.5)"/>
</pdc:annotation>
</path>
<polygon fill="#FFFFFF" stroke="#000000" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points=" 39,70 62,38 54,32 62,4 39.9,33 48,39 ">
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="33.00" x="39.90" details="Invalid point: (39.90, 33.00). Used closest supported coordinate: (39.875, 33.0)"/>
</pdc:annotation>
</polygon>
</svg>

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

View file

@ -0,0 +1,66 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:pdc="http://www.pebble.com/2015/pdc" version="1.1" id="Design" x="0px" y="0px" viewBox="0 0 64 74" enable-background="new 0 0 64 74" xml:space="preserve">
<rect x="9" y="2" fill="#FFFFFF" stroke="#000000" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" width="14" height="70"/>
<path fill="#FFFFFF" stroke="#000000" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d=" M16.3,51h-0.6C8.1,51,2,44.9,2,37.3v-0.6C2,29.1,8.1,23,15.7,23h0.6C23.9,23,30,29.1,30,36.7v0.6C30,44.9,23.9,51,16.3,51z">
<pdc:annotation description="Element contains unsupported curved command(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-bezier">
<pdc:highlight y="37.30" x="2.00" height="13.70" width="13.70"/>
<pdc:highlight y="23.00" x="2.00" height="13.70" width="13.70"/>
<pdc:highlight y="23.00" x="16.30" height="13.70" width="13.70"/>
<pdc:highlight y="37.30" x="16.30" height="13.70" width="13.70"/>
</pdc:annotation>
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="51.00" x="16.30" details="Invalid point: (16.30, 51.00). Used closest supported coordinate: (16.25, 51.0)"/>
<pdc:highlight y="51.00" x="15.70" details="Invalid point: (15.70, 51.00). Used closest supported coordinate: (15.75, 51.0)"/>
<pdc:highlight y="49.93" x="10.35" details="Invalid point: (10.35, 49.93). Used closest supported coordinate: (10.375, 49.875)"/>
<pdc:highlight y="47.00" x="6.00" details="Invalid point: (6.00, 47.00). Used closest supported coordinate: (6.0, 47.0)"/>
<pdc:highlight y="42.65" x="3.07" details="Invalid point: (3.07, 42.65). Used closest supported coordinate: (3.125, 42.625)"/>
<pdc:highlight y="37.30" x="2.00" details="Invalid point: (2.00, 37.30). Used closest supported coordinate: (2.0, 37.25)"/>
<pdc:highlight y="36.70" x="2.00" details="Invalid point: (2.00, 36.70). Used closest supported coordinate: (2.0, 36.75)"/>
<pdc:highlight y="31.35" x="3.07" details="Invalid point: (3.07, 31.35). Used closest supported coordinate: (3.125, 31.375)"/>
<pdc:highlight y="27.00" x="6.00" details="Invalid point: (6.00, 27.00). Used closest supported coordinate: (6.0, 27.0)"/>
<pdc:highlight y="24.07" x="10.35" details="Invalid point: (10.35, 24.07). Used closest supported coordinate: (10.375, 24.125)"/>
<pdc:highlight y="23.00" x="15.70" details="Invalid point: (15.70, 23.00). Used closest supported coordinate: (15.75, 23.0)"/>
<pdc:highlight y="23.00" x="16.30" details="Invalid point: (16.30, 23.00). Used closest supported coordinate: (16.25, 23.0)"/>
<pdc:highlight y="24.07" x="21.65" details="Invalid point: (21.65, 24.07). Used closest supported coordinate: (21.625, 24.125)"/>
<pdc:highlight y="27.00" x="26.00" details="Invalid point: (26.00, 27.00). Used closest supported coordinate: (26.0, 27.0)"/>
<pdc:highlight y="31.35" x="28.93" details="Invalid point: (28.93, 31.35). Used closest supported coordinate: (28.875, 31.375)"/>
<pdc:highlight y="36.70" x="30.00" details="Invalid point: (30.00, 36.70). Used closest supported coordinate: (30.0, 36.75)"/>
<pdc:highlight y="37.30" x="30.00" details="Invalid point: (30.00, 37.30). Used closest supported coordinate: (30.0, 37.25)"/>
<pdc:highlight y="42.65" x="28.93" details="Invalid point: (28.93, 42.65). Used closest supported coordinate: (28.875, 42.625)"/>
<pdc:highlight y="47.00" x="26.00" details="Invalid point: (26.00, 47.00). Used closest supported coordinate: (26.0, 47.0)"/>
<pdc:highlight y="49.93" x="21.65" details="Invalid point: (21.65, 49.93). Used closest supported coordinate: (21.625, 49.875)"/>
<pdc:highlight y="51.00" x="16.30" details="Invalid point: (16.30, 51.00). Used closest supported coordinate: (16.25, 51.0)"/>
</pdc:annotation>
</path>
<line fill="none" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="9.5" y1="14.5" x2="23.5" y2="14.5"/>
<line fill="none" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="16" y1="14.5" x2="16" y2="9"/>
<path fill="none" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d=" M16.3,44.5h-0.6c-4,0-7.2-3.2-7.2-7.2v-0.6c0-4,3.2-7.2,7.2-7.2h0.6c4,0,7.2,3.2,7.2,7.2v0.6C23.5,41.3,20.3,44.5,16.3,44.5z">
<pdc:annotation description="Element contains unsupported curved command(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-bezier">
<pdc:highlight y="37.30" x="8.50" height="7.20" width="7.20"/>
<pdc:highlight y="29.50" x="8.50" height="7.20" width="7.20"/>
<pdc:highlight y="29.50" x="16.30" height="7.20" width="7.20"/>
<pdc:highlight y="37.30" x="16.30" height="7.20" width="7.20"/>
</pdc:annotation>
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="44.50" x="16.30" details="Invalid point: (16.30, 44.50). Used closest supported coordinate: (16.25, 44.5)"/>
<pdc:highlight y="44.50" x="15.70" details="Invalid point: (15.70, 44.50). Used closest supported coordinate: (15.75, 44.5)"/>
<pdc:highlight y="42.40" x="10.60" details="Invalid point: (10.60, 42.40). Used closest supported coordinate: (10.625, 42.375)"/>
<pdc:highlight y="37.30" x="8.50" details="Invalid point: (8.50, 37.30). Used closest supported coordinate: (8.5, 37.25)"/>
<pdc:highlight y="36.70" x="8.50" details="Invalid point: (8.50, 36.70). Used closest supported coordinate: (8.5, 36.75)"/>
<pdc:highlight y="31.60" x="10.60" details="Invalid point: (10.60, 31.60). Used closest supported coordinate: (10.625, 31.625)"/>
<pdc:highlight y="29.50" x="15.70" details="Invalid point: (15.70, 29.50). Used closest supported coordinate: (15.75, 29.5)"/>
<pdc:highlight y="29.50" x="16.30" details="Invalid point: (16.30, 29.50). Used closest supported coordinate: (16.25, 29.5)"/>
<pdc:highlight y="31.60" x="21.40" details="Invalid point: (21.40, 31.60). Used closest supported coordinate: (21.375, 31.625)"/>
<pdc:highlight y="36.70" x="23.50" details="Invalid point: (23.50, 36.70). Used closest supported coordinate: (23.5, 36.75)"/>
<pdc:highlight y="37.30" x="23.50" details="Invalid point: (23.50, 37.30). Used closest supported coordinate: (23.5, 37.25)"/>
<pdc:highlight y="42.40" x="21.40" details="Invalid point: (21.40, 42.40). Used closest supported coordinate: (21.375, 42.375)"/>
<pdc:highlight y="44.50" x="16.30" details="Invalid point: (16.30, 44.50). Used closest supported coordinate: (16.25, 44.5)"/>
</pdc:annotation>
</path>
<polygon fill="#FFFFFF" stroke="#000000" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points=" 39,70 62,38 54,32 62,4 39.9,33 48,39 ">
<pdc:annotation description="Element is expressed with unsupported coordinate(s)." href="https://pebbletechnology.atlassian.net/wiki/display/DEV/Pebble+Draw+Commands#PebbleDrawCommands-issue-pixelgrid">
<pdc:highlight y="33.00" x="39.90" details="Invalid point: (39.90, 33.00). Used closest supported coordinate: (39.875, 33.0)"/>
</pdc:annotation>
</polygon>
</svg>

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Some files were not shown because too many files have changed in this diff Show more