Drop <3.7 support and add type hints (#59)
- Drop support for Python <3.7 - Bump the pre-commit version used in CI - Add type hinting and docstrings - Add mypy to pre-commit config - Fix typing issues - Update colors module - Update colors module to use uppercase hex codes - Add `__lt__` to allow sorting colors by name - Fix `build_examples.py` to work with color Enum - Update example badges in `README.md` - Fix typing issues in server - Update travis links in `README.md` - Fix PyPi deployment bug (#60)
@@ -13,4 +13,8 @@ repos:
|
|||||||
- repo: https://github.com/psf/black
|
- repo: https://github.com/psf/black
|
||||||
rev: 22.6.0
|
rev: 22.6.0
|
||||||
hooks:
|
hooks:
|
||||||
- id: black
|
- id: black
|
||||||
|
- repo: https://github.com/pre-commit/mirrors-mypy
|
||||||
|
rev: v0.971
|
||||||
|
hooks:
|
||||||
|
- id: mypy
|
||||||
|
|||||||
10
.travis.yml
@@ -2,12 +2,6 @@ dist: xenial
|
|||||||
language: python
|
language: python
|
||||||
jobs:
|
jobs:
|
||||||
include:
|
include:
|
||||||
- python: '3.4'
|
|
||||||
env: RUN_PRE_COMMIT=0
|
|
||||||
- python: '3.5'
|
|
||||||
env: RUN_PRE_COMMIT=0
|
|
||||||
- python: '3.6'
|
|
||||||
env: RUN_PRE_COMMIT=0
|
|
||||||
- python: '3.7'
|
- python: '3.7'
|
||||||
env: RUN_PRE_COMMIT=0
|
env: RUN_PRE_COMMIT=0
|
||||||
- python: '3.8'
|
- python: '3.8'
|
||||||
@@ -18,13 +12,13 @@ install:
|
|||||||
- pip install -U setuptools pip -r build-requirements.txt
|
- pip install -U setuptools pip -r build-requirements.txt
|
||||||
script:
|
script:
|
||||||
- if [[ $RUN_PRE_COMMIT = 1 ]]; then
|
- if [[ $RUN_PRE_COMMIT = 1 ]]; then
|
||||||
pip install -U pre-commit==2.12.1 &&
|
pip install -U pre-commit==2.20.0 &&
|
||||||
pre-commit install &&
|
pre-commit install &&
|
||||||
pre-commit run --all;
|
pre-commit run --all;
|
||||||
fi
|
fi
|
||||||
- pytest --doctest-modules --cov=anybadge --cov-report html:htmlcov anybadge tests
|
- pytest --doctest-modules --cov=anybadge --cov-report html:htmlcov anybadge tests
|
||||||
before_deploy:
|
before_deploy:
|
||||||
- sed -i "s/^version = .*/version = __version__ = \"$TRAVIS_TAG\"/" anybadge.py
|
- sed -i "s/^version = .*/version = __version__ = \"$TRAVIS_TAG\"/" anybadge/__init__.py
|
||||||
deploy:
|
deploy:
|
||||||
- provider: pypi
|
- provider: pypi
|
||||||
skip_cleanup: true
|
skip_cleanup: true
|
||||||
|
|||||||
48
README.md
@@ -3,7 +3,7 @@
|
|||||||
Python project for generating badges for your projects
|
Python project for generating badges for your projects
|
||||||
|
|
||||||
[](https://pypi.org/project/anybadge)
|
[](https://pypi.org/project/anybadge)
|
||||||
[](https://travis-ci.org/jongracecox/anybadge)
|
[](https://app.travis-ci.com/github/jongracecox/anybadge)
|
||||||
[](https://pypistats.org/packages/anybadge)
|
[](https://pypistats.org/packages/anybadge)
|
||||||
[](https://github.com/jongracecox/anybadge/commits/master)
|
[](https://github.com/jongracecox/anybadge/commits/master)
|
||||||
[](https://github.com/jongracecox/anybadge/blob/master/LICENSE)
|
[](https://github.com/jongracecox/anybadge/blob/master/LICENSE)
|
||||||
@@ -137,29 +137,29 @@ badge = anybadge.Badge(label='custom color', value='teal', default_color='#00808
|
|||||||
|
|
||||||
Available named colors are:
|
Available named colors are:
|
||||||
|
|
||||||
| Color Name | Hex Code | Example |
|
| Color Name | Hex | Example |
|
||||||
| ---------- | -------- | ------- |
|
| ------------- | ------- | ------- |
|
||||||
| aqua | #00FFFF |  |
|
| aqua | #00FFFF |  |
|
||||||
| black | #000000 |  |
|
| black | #000000 |  |
|
||||||
| blue | #0000FF |  |
|
| blue | #0000FF |  |
|
||||||
| bright_red | #FF0000 |  |
|
| bright_red | #FF0000 |  |
|
||||||
| bright_yellow | #FFFF00 |  |
|
| bright_yellow | #FFFF00 | |
|
||||||
| fuchsia | #FF00FF |  |
|
| fuchsia | #FF00FF |  |
|
||||||
| gray | #808080 |  |
|
| gray | #808080 |  |
|
||||||
| green | #4C1 |  |
|
| green | #4C1 |  |
|
||||||
| light_grey | #9F9F9F |  |
|
| light_grey | #9F9F9F |  |
|
||||||
| lime | #00FF00 |  |
|
| lime | #00FF00 |  |
|
||||||
| maroon | #800000 |  |
|
| maroon | #800000 |  |
|
||||||
| navy | #000080 |  |
|
| navy | #000080 |  |
|
||||||
| olive | #808000 |  |
|
| olive | #808000 |  |
|
||||||
| orange | #FE7D37 |  |
|
| orange | #FE7D37 |  |
|
||||||
| purple | #800080 |  |
|
| purple | #800080 |  |
|
||||||
| red | #E05D44 |  |
|
| red | #E05D44 |  |
|
||||||
| silver | #C0C0C0 |  |
|
| silver | #C0C0C0 |  |
|
||||||
| teal | #008080 |  |
|
| teal | #008080 |  |
|
||||||
| white | #FFFFFF |  |
|
| white | #FFFFFF |  |
|
||||||
| yellow | #DFB317 |  |
|
| yellow | #DFB317 |  |
|
||||||
| yellow_green | #A4A61D |  |
|
| yellow_green | #A4A61D |  |
|
||||||
|
|
||||||
### Semantic version support
|
### Semantic version support
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import os
|
import os
|
||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
|
from typing import Dict, Type, Optional, Union
|
||||||
|
|
||||||
from . import config
|
from . import config
|
||||||
from .colors import Color
|
from .colors import Color
|
||||||
@@ -98,25 +99,28 @@ class Badge:
|
|||||||
'#4c1'
|
'#4c1'
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
#: Singleton variable to track current max mask_id. This is used by _get_next_mask_str class method.
|
||||||
|
mask_id: int
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
label,
|
label,
|
||||||
value,
|
value,
|
||||||
font_name=None,
|
font_name: str = None,
|
||||||
font_size=None,
|
font_size: int = None,
|
||||||
num_padding_chars=None,
|
num_padding_chars: int = None,
|
||||||
num_label_padding_chars=None,
|
num_label_padding_chars: float = None,
|
||||||
num_value_padding_chars=None,
|
num_value_padding_chars: float = None,
|
||||||
template=None,
|
template: str = None,
|
||||||
style=None,
|
style: str = None,
|
||||||
value_prefix="",
|
value_prefix: str = "",
|
||||||
value_suffix="",
|
value_suffix: str = "",
|
||||||
thresholds=None,
|
thresholds: Optional[Dict[float, str]] = None,
|
||||||
default_color=None,
|
default_color: str = None,
|
||||||
use_max_when_value_exceeds=True,
|
use_max_when_value_exceeds: bool = True,
|
||||||
value_format=None,
|
value_format: str = None,
|
||||||
text_color=None,
|
text_color: str = None,
|
||||||
semver=False,
|
semver: bool = False,
|
||||||
):
|
):
|
||||||
"""Constructor for Badge class."""
|
"""Constructor for Badge class."""
|
||||||
# Set defaults if values were not passed
|
# Set defaults if values were not passed
|
||||||
@@ -181,9 +185,9 @@ class Badge:
|
|||||||
self.value_text_color = text_colors[1]
|
self.value_text_color = text_colors[1]
|
||||||
|
|
||||||
self.use_max_when_value_exceeds = use_max_when_value_exceeds
|
self.use_max_when_value_exceeds = use_max_when_value_exceeds
|
||||||
self.mask_id = self.__class__._get_next_mask_id()
|
self.mask_str = self.__class__._get_next_mask_str()
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self) -> str:
|
||||||
"""Return a representation of the Badge object instance.
|
"""Return a representation of the Badge object instance.
|
||||||
|
|
||||||
The output of the __repr__ function could be used to recreate the current object.
|
The output of the __repr__ function could be used to recreate the current object.
|
||||||
@@ -264,7 +268,7 @@ class Badge:
|
|||||||
optional_args,
|
optional_args,
|
||||||
)
|
)
|
||||||
|
|
||||||
def _repr_svg_(self):
|
def _repr_svg_(self) -> str:
|
||||||
"""Return SVG representation when used inside Jupyter notebook cells.
|
"""Return SVG representation when used inside Jupyter notebook cells.
|
||||||
|
|
||||||
This will render the SVG immediately inside a notebook cell when creating
|
This will render the SVG immediately inside a notebook cell when creating
|
||||||
@@ -273,7 +277,7 @@ class Badge:
|
|||||||
return self.badge_svg_text
|
return self.badge_svg_text
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def _get_next_mask_id(cls):
|
def _get_next_mask_str(cls) -> str:
|
||||||
"""Return a new mask ID from a singleton sequence maintained on the class.
|
"""Return a new mask ID from a singleton sequence maintained on the class.
|
||||||
|
|
||||||
Returns: str
|
Returns: str
|
||||||
@@ -285,7 +289,7 @@ class Badge:
|
|||||||
|
|
||||||
return config.MASK_ID_PREFIX + str(cls.mask_id)
|
return config.MASK_ID_PREFIX + str(cls.mask_id)
|
||||||
|
|
||||||
def _get_svg_template(self):
|
def _get_svg_template(self) -> str:
|
||||||
"""Return the correct SVG template to render, based on the style and template
|
"""Return the correct SVG template to render, based on the style and template
|
||||||
that have been set
|
that have been set
|
||||||
|
|
||||||
@@ -308,7 +312,7 @@ class Badge:
|
|||||||
return self.template
|
return self.template
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def semver_version(self):
|
def semver_version(self) -> Version:
|
||||||
"""The semantic version represented by the value string.
|
"""The semantic version represented by the value string.
|
||||||
|
|
||||||
Returns: Version
|
Returns: Version
|
||||||
@@ -316,20 +320,25 @@ class Badge:
|
|||||||
return Version(self.value)
|
return Version(self.value)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def semver_thresholds(self):
|
def semver_thresholds(self) -> Optional[OrderedDict]:
|
||||||
"""Thresholds as a dict using Version as keys."""
|
"""Thresholds as a dict using Version as keys."""
|
||||||
# Version is not a hashable type, so can't be used to create an
|
# Version is not a hashable type, so can't be used to create an
|
||||||
# ordered dict directly. First we need to create an ordered list of keys
|
# ordered dict directly. First we need to create an ordered list of keys
|
||||||
|
if not self.thresholds:
|
||||||
|
return None
|
||||||
|
|
||||||
ordered_keys = sorted(self.thresholds.keys(), key=Version)
|
ordered_keys = sorted(self.thresholds.keys(), key=Version)
|
||||||
return OrderedDict((key, self.thresholds[key]) for key in ordered_keys)
|
return OrderedDict((key, self.thresholds[key]) for key in ordered_keys)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def float_thresholds(self):
|
def float_thresholds(self) -> Optional[Dict[float, str]]:
|
||||||
"""Thresholds as a dict using floats as keys."""
|
"""Thresholds as a dict using floats as keys."""
|
||||||
|
if not self.thresholds:
|
||||||
|
return None
|
||||||
return {float(k): v for k, v in self.thresholds.items()}
|
return {float(k): v for k, v in self.thresholds.items()}
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def value_is_float(self):
|
def value_is_float(self) -> bool:
|
||||||
"""Identify whether the value text is a float.
|
"""Identify whether the value text is a float.
|
||||||
|
|
||||||
Returns: bool
|
Returns: bool
|
||||||
@@ -349,7 +358,7 @@ class Badge:
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def value_is_int(self):
|
def value_is_int(self) -> bool:
|
||||||
"""Identify whether the value text is an int.
|
"""Identify whether the value text is an int.
|
||||||
|
|
||||||
Returns: bool
|
Returns: bool
|
||||||
@@ -363,7 +372,7 @@ class Badge:
|
|||||||
return a == b
|
return a == b
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def value_type(self):
|
def value_type(self) -> Type:
|
||||||
"""The Python type associated with the value.
|
"""The Python type associated with the value.
|
||||||
|
|
||||||
Returns: type
|
Returns: type
|
||||||
@@ -378,9 +387,17 @@ class Badge:
|
|||||||
return str
|
return str
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def label_width(self):
|
def label_width(self) -> int:
|
||||||
"""The SVG width of the label text.
|
"""The SVG width of the label text.
|
||||||
|
|
||||||
|
┌───────────────────────────┬────────────────────────────────┐
|
||||||
|
│ │ │
|
||||||
|
│ Label text │ Value │
|
||||||
|
│ │ │
|
||||||
|
└───────────────────────────┴────────────────────────────────┘
|
||||||
|
◀────────▶
|
||||||
|
label_width
|
||||||
|
|
||||||
Returns: int
|
Returns: int
|
||||||
"""
|
"""
|
||||||
return int(
|
return int(
|
||||||
@@ -389,9 +406,17 @@ class Badge:
|
|||||||
)
|
)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def value_width(self):
|
def value_width(self) -> int:
|
||||||
"""The SVG width of the value text.
|
"""The SVG width of the value text.
|
||||||
|
|
||||||
|
┌───────────────────────────┬────────────────────────────────┐
|
||||||
|
│ │ │
|
||||||
|
│ Label text │ Value text │
|
||||||
|
│ │ │
|
||||||
|
└───────────────────────────┴────────────────────────────────┘
|
||||||
|
◀────────▶
|
||||||
|
value_width
|
||||||
|
|
||||||
Returns: int
|
Returns: int
|
||||||
"""
|
"""
|
||||||
return int(
|
return int(
|
||||||
@@ -400,15 +425,23 @@ class Badge:
|
|||||||
)
|
)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def value_box_width(self):
|
def value_box_width(self) -> int:
|
||||||
"""The SVG width of the value text box.
|
"""The SVG width of the value text box.
|
||||||
|
|
||||||
|
┌───────────────────────────┬────────────────────────────────┐
|
||||||
|
│ │ │
|
||||||
|
│ Label text │ Value text │
|
||||||
|
│ │ │
|
||||||
|
└───────────────────────────┴────────────────────────────────┘
|
||||||
|
◀────────────────────────────────▶
|
||||||
|
value_box_width
|
||||||
|
|
||||||
Returns: int
|
Returns: int
|
||||||
"""
|
"""
|
||||||
return self.value_width - 9
|
return self.value_width - 9
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def font_width(self):
|
def font_width(self) -> int:
|
||||||
"""Return the width multiplier for a font.
|
"""Return the width multiplier for a font.
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
@@ -422,25 +455,61 @@ class Badge:
|
|||||||
return config.FONT_WIDTHS[self.font_name][self.font_size]
|
return config.FONT_WIDTHS[self.font_name][self.font_size]
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def color_split_position(self):
|
def color_split_position(self) -> int:
|
||||||
"""The SVG x position where the color split should occur.
|
"""The SVG x position where the color split should occur.
|
||||||
|
|
||||||
|
Split
|
||||||
|
│
|
||||||
|
┌──┘
|
||||||
|
▼
|
||||||
|
┌───────────────────────────┬────────────────────────────────┐
|
||||||
|
│ │ │
|
||||||
|
│ Label text │ Value text │
|
||||||
|
│ │ │
|
||||||
|
└───────────────────────────┴────────────────────────────────┘
|
||||||
|
◀───────────────────────────▶
|
||||||
|
color_split_pos
|
||||||
|
|
||||||
Returns: int
|
Returns: int
|
||||||
"""
|
"""
|
||||||
return self.badge_width - self.value_width
|
return self.badge_width - self.value_width
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def label_anchor(self):
|
def label_anchor(self) -> float:
|
||||||
"""The SVG x position of the middle anchor for the label text.
|
"""The SVG x position of the middle anchor for the label text.
|
||||||
|
|
||||||
|
Middle of
|
||||||
|
label
|
||||||
|
┌──┘
|
||||||
|
▼
|
||||||
|
┌───────────────────────────┬────────────────────────────────┐
|
||||||
|
│ │ │
|
||||||
|
│ Label text │ Value text │
|
||||||
|
│ │ │
|
||||||
|
└───────────────────────────┴────────────────────────────────┘
|
||||||
|
◀───────────▶
|
||||||
|
label_anchor
|
||||||
|
|
||||||
Returns: float
|
Returns: float
|
||||||
"""
|
"""
|
||||||
return self.color_split_position / 2
|
return self.color_split_position / 2
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def value_anchor(self):
|
def value_anchor(self) -> float:
|
||||||
"""The SVG x position of the middle anchor for the value text.
|
"""The SVG x position of the middle anchor for the value text.
|
||||||
|
|
||||||
|
Middle of
|
||||||
|
value
|
||||||
|
┌──┘
|
||||||
|
▼
|
||||||
|
┌───────────────────────────┬────────────────────────────────┐
|
||||||
|
│ │ │
|
||||||
|
│ Label text │ Value text │
|
||||||
|
│ │ │
|
||||||
|
└───────────────────────────┴────────────────────────────────┘
|
||||||
|
◀──────────────────────────────────────────▶
|
||||||
|
value_anchor
|
||||||
|
|
||||||
Returns: float
|
Returns: float
|
||||||
"""
|
"""
|
||||||
return self.color_split_position + (
|
return self.color_split_position + (
|
||||||
@@ -448,25 +517,62 @@ class Badge:
|
|||||||
)
|
)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def label_anchor_shadow(self):
|
def label_anchor_shadow(self) -> float:
|
||||||
"""The SVG x position of the label shadow anchor.
|
"""The SVG x position of the label shadow anchor.
|
||||||
|
|
||||||
|
The shadow for the label will appear behind the label.
|
||||||
|
|
||||||
|
┌ Text ──────────────────┐
|
||||||
|
│ │
|
||||||
|
│ ├────┐
|
||||||
|
│ │ │
|
||||||
|
└────┬───────────────────┘ │
|
||||||
|
│ │
|
||||||
|
└───────────── Shadow ───┘
|
||||||
|
|
||||||
|
The label_anchor_shadow is the distance from left to center of shadow:
|
||||||
|
|
||||||
|
┌─────────────────────────────┬─────────────────────────────────┐
|
||||||
|
│ ┌────────────┐ │ │
|
||||||
|
│ │ ├─┐ │ Value text │
|
||||||
|
│ └─┬──────────┘ │ │ │
|
||||||
|
│ └────────────┘ │ │
|
||||||
|
└─────────────────────────────┴─────────────────────────────────┘
|
||||||
|
◀─────────────▶
|
||||||
|
label_anchor_shadow
|
||||||
|
|
||||||
Returns: float
|
Returns: float
|
||||||
"""
|
"""
|
||||||
return self.label_anchor + 1
|
return self.label_anchor + 1
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def value_anchor_shadow(self):
|
def value_anchor_shadow(self) -> float:
|
||||||
"""The SVG x position of the value shadow anchor.
|
"""The SVG x position of the value shadow anchor.
|
||||||
|
|
||||||
|
┌─────────────────────────────┬─────────────────────────────────┐
|
||||||
|
│ │ ┌────────────┐ │
|
||||||
|
│ Label text │ │ ├─┐ │
|
||||||
|
│ │ └─┬──────────┘ │ │
|
||||||
|
│ │ └────────────┘ │
|
||||||
|
└─────────────────────────────┴─────────────────────────────────┘
|
||||||
|
◀───────────────────────────────────────────────▶
|
||||||
|
value_anchor_shadow
|
||||||
Returns: float
|
Returns: float
|
||||||
"""
|
"""
|
||||||
return self.value_anchor + 1
|
return self.value_anchor + 1
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def badge_width(self):
|
def badge_width(self) -> int:
|
||||||
"""The total width of badge.
|
"""The total width of badge.
|
||||||
|
|
||||||
|
┌───────────────────────────┬────────────────────────────────┐
|
||||||
|
│ │ │
|
||||||
|
│ Label text │ Value text │
|
||||||
|
│ │ │
|
||||||
|
└───────────────────────────┴────────────────────────────────┘
|
||||||
|
◀───────────────────────────────────────────────────────────▶
|
||||||
|
badge_width
|
||||||
|
|
||||||
Returns: int
|
Returns: int
|
||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
@@ -478,8 +584,8 @@ class Badge:
|
|||||||
return self.label_width + self.value_width
|
return self.label_width + self.value_width
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def arc_start(self):
|
def arc_start(self) -> int:
|
||||||
"""The position where the arc on the gitlab-scoped should start.
|
"""The position where the arc on the arc should start.
|
||||||
|
|
||||||
Returns: int
|
Returns: int
|
||||||
|
|
||||||
@@ -492,7 +598,7 @@ class Badge:
|
|||||||
return self.badge_width - 10
|
return self.badge_width - 10
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def badge_svg_text(self):
|
def badge_svg_text(self) -> str:
|
||||||
"""The badge SVG text.
|
"""The badge SVG text.
|
||||||
|
|
||||||
Returns: str
|
Returns: str
|
||||||
@@ -515,12 +621,12 @@ class Badge:
|
|||||||
.replace("{{ value text color }}", self.value_text_color)
|
.replace("{{ value text color }}", self.value_text_color)
|
||||||
.replace("{{ color split x }}", str(self.color_split_position))
|
.replace("{{ color split x }}", str(self.color_split_position))
|
||||||
.replace("{{ value width }}", str(self.value_width))
|
.replace("{{ value width }}", str(self.value_width))
|
||||||
.replace("{{ mask id }}", self.mask_id)
|
.replace("{{ mask id }}", self.mask_str)
|
||||||
.replace("{{ value box width }}", str(self.value_box_width))
|
.replace("{{ value box width }}", str(self.value_box_width))
|
||||||
.replace("{{ arc start }}", str(self.arc_start))
|
.replace("{{ arc start }}", str(self.arc_start))
|
||||||
)
|
)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self) -> str:
|
||||||
"""Return string representation of badge.
|
"""Return string representation of badge.
|
||||||
|
|
||||||
This will return the badge SVG text.
|
This will return the badge SVG text.
|
||||||
@@ -535,7 +641,7 @@ class Badge:
|
|||||||
"""
|
"""
|
||||||
return self.badge_svg_text
|
return self.badge_svg_text
|
||||||
|
|
||||||
def get_text_width(self, text):
|
def get_text_width(self, text) -> int:
|
||||||
"""Return the width of text.
|
"""Return the width of text.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
@@ -554,7 +660,7 @@ class Badge:
|
|||||||
return _get_approx_string_width(text, self.font_width)
|
return _get_approx_string_width(text, self.font_width)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def badge_color(self):
|
def badge_color(self) -> str:
|
||||||
"""Badge color based on the configured thresholds.
|
"""Badge color based on the configured thresholds.
|
||||||
|
|
||||||
Returns: str"""
|
Returns: str"""
|
||||||
@@ -568,6 +674,8 @@ class Badge:
|
|||||||
else:
|
else:
|
||||||
return self.default_color
|
return self.default_color
|
||||||
|
|
||||||
|
thresholds: Optional[Union[Dict[float, str], OrderedDict[float, str]]]
|
||||||
|
|
||||||
# Set value and thresholds based on the value type. This will result in either
|
# Set value and thresholds based on the value type. This will result in either
|
||||||
# value and thresholds as floats or value and thresholds as semantic versions.
|
# value and thresholds as floats or value and thresholds as semantic versions.
|
||||||
if self.value_type == Version:
|
if self.value_type == Version:
|
||||||
@@ -577,15 +685,17 @@ class Badge:
|
|||||||
value = float(self.value)
|
value = float(self.value)
|
||||||
thresholds = self.float_thresholds
|
thresholds = self.float_thresholds
|
||||||
|
|
||||||
# Convert the threshold dictionary into a sorted list of lists
|
|
||||||
threshold_list = [[self.value_type(i[0]), i[1]] for i in thresholds.items()]
|
|
||||||
threshold_list.sort(key=lambda x: x[0])
|
|
||||||
|
|
||||||
color = None
|
color = None
|
||||||
|
|
||||||
for threshold, color in threshold_list:
|
if thresholds:
|
||||||
if value < threshold:
|
|
||||||
return color
|
# Convert the threshold dictionary into a sorted list of lists
|
||||||
|
threshold_list = [[self.value_type(i[0]), i[1]] for i in thresholds.items()]
|
||||||
|
threshold_list.sort(key=lambda x: x[0])
|
||||||
|
|
||||||
|
for threshold, color in threshold_list:
|
||||||
|
if value < threshold:
|
||||||
|
return color
|
||||||
|
|
||||||
# If we drop out the top of the range then return the last max color
|
# If we drop out the top of the range then return the last max color
|
||||||
if color and self.use_max_when_value_exceeds:
|
if color and self.use_max_when_value_exceeds:
|
||||||
@@ -633,7 +743,7 @@ class Badge:
|
|||||||
(color, ", ".join(list(Color.__members__.keys()))),
|
(color, ", ".join(list(Color.__members__.keys()))),
|
||||||
)
|
)
|
||||||
|
|
||||||
def write_badge(self, file_path, overwrite=False):
|
def write_badge(self, file_path, overwrite=False) -> None:
|
||||||
"""Write badge to file."""
|
"""Write badge to file."""
|
||||||
|
|
||||||
# Validate path (part 1)
|
# Validate path (part 1)
|
||||||
|
|||||||
@@ -8,20 +8,23 @@ class Color(Enum):
|
|||||||
SILVER = "#C0C0C0"
|
SILVER = "#C0C0C0"
|
||||||
GRAY = "#808080"
|
GRAY = "#808080"
|
||||||
BLACK = "#000000"
|
BLACK = "#000000"
|
||||||
RED = "#e05d44"
|
RED = "#E05D44"
|
||||||
BRIGHT_RED = "#FF0000"
|
BRIGHT_RED = "#FF0000"
|
||||||
MAROON = "#800000"
|
MAROON = "#800000"
|
||||||
OLIVE = "#808000"
|
OLIVE = "#808000"
|
||||||
LIME = "#00FF00"
|
LIME = "#00FF00"
|
||||||
BRIGHT_YELLOW = "#FFFF00"
|
BRIGHT_YELLOW = "#FFFF00"
|
||||||
YELLOW = "#dfb317"
|
YELLOW = "#DFB317"
|
||||||
GREEN = "#4c1"
|
GREEN = "#4C1"
|
||||||
YELLOW_GREEN = "#a4a61d"
|
YELLOW_GREEN = "#A4A61D"
|
||||||
AQUA = "#00FFFF"
|
AQUA = "#00FFFF"
|
||||||
TEAL = "#008080"
|
TEAL = "#008080"
|
||||||
BLUE = "#0000FF"
|
BLUE = "#0000FF"
|
||||||
NAVY = "#000080"
|
NAVY = "#000080"
|
||||||
FUCHSIA = "#FF00FF"
|
FUCHSIA = "#FF00FF"
|
||||||
PURPLE = "#800080"
|
PURPLE = "#800080"
|
||||||
ORANGE = "#fe7d37"
|
ORANGE = "#FE7D37"
|
||||||
LIGHT_GREY = "#9f9f9f"
|
LIGHT_GREY = "#9F9F9F"
|
||||||
|
|
||||||
|
def __lt__(self, other):
|
||||||
|
return self.name < other.name
|
||||||
|
|||||||
@@ -1,14 +1,16 @@
|
|||||||
# Set some defaults
|
# Set some defaults
|
||||||
DEFAULT_FONT = "DejaVu Sans,Verdana,Geneva,sans-serif"
|
from typing import Dict
|
||||||
DEFAULT_FONT_SIZE = 11
|
|
||||||
NUM_PADDING_CHARS = 0.5
|
DEFAULT_FONT: str = "DejaVu Sans,Verdana,Geneva,sans-serif"
|
||||||
DEFAULT_COLOR = "#4c1"
|
DEFAULT_FONT_SIZE: int = 11
|
||||||
DEFAULT_TEXT_COLOR = "#fff"
|
NUM_PADDING_CHARS: float = 0.5
|
||||||
MASK_ID_PREFIX = "anybadge_"
|
DEFAULT_COLOR: str = "#4c1"
|
||||||
|
DEFAULT_TEXT_COLOR: str = "#fff"
|
||||||
|
MASK_ID_PREFIX: str = "anybadge_"
|
||||||
|
|
||||||
# Dictionary for looking up approx pixel widths of
|
# Dictionary for looking up approx pixel widths of
|
||||||
# supported fonts and font sizes.
|
# supported fonts and font sizes.
|
||||||
FONT_WIDTHS = {
|
FONT_WIDTHS: Dict[str, Dict[int, int]] = {
|
||||||
"DejaVu Sans,Verdana,Geneva,sans-serif": {
|
"DejaVu Sans,Verdana,Geneva,sans-serif": {
|
||||||
10: 9,
|
10: 9,
|
||||||
11: 10,
|
11: 10,
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# Based on the following SO answer: https://stackoverflow.com/a/16008023/6252525
|
# Based on the following SO answer: https://stackoverflow.com/a/16008023/6252525
|
||||||
def _get_approx_string_width(text, font_width, fixed_width=False):
|
def _get_approx_string_width(text, font_width, fixed_width=False) -> int:
|
||||||
"""
|
"""
|
||||||
Get the approximate width of a string using a specific average font width.
|
Get the approximate width of a string using a specific average font width.
|
||||||
|
|
||||||
|
|||||||
@@ -10,42 +10,43 @@ logger = logging.getLogger(__name__)
|
|||||||
|
|
||||||
|
|
||||||
def run(listen_address: str = None, port: int = None):
|
def run(listen_address: str = None, port: int = None):
|
||||||
|
"""Run a persistent webserver."""
|
||||||
if not listen_address:
|
if not listen_address:
|
||||||
listen_address = config.DEFAULT_SERVER_LISTEN_ADDRESS
|
listen_address = config.DEFAULT_SERVER_LISTEN_ADDRESS
|
||||||
|
|
||||||
if not port:
|
if not port:
|
||||||
port = config.DEFAULT_SERVER_PORT
|
port = config.DEFAULT_SERVER_PORT
|
||||||
|
|
||||||
server_address = (listen_address, port)
|
server_address: Tuple[str, int] = (listen_address, port) # type: ignore
|
||||||
|
|
||||||
global SERVER_PORT, SERVER_LISTEN_ADDRESS
|
|
||||||
|
|
||||||
SERVER_PORT = port
|
|
||||||
SERVER_LISTEN_ADDRESS = listen_address
|
|
||||||
|
|
||||||
httpd = HTTPServer(server_address, AnyBadgeHTTPRequestHandler)
|
httpd = HTTPServer(server_address, AnyBadgeHTTPRequestHandler)
|
||||||
logger.info("Serving at: http://%s:%s" % server_address)
|
logger.info("Serving at: http://%s:%s" % server_address)
|
||||||
httpd.serve_forever()
|
|
||||||
|
try:
|
||||||
|
httpd.serve_forever()
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
logger.info("Received keyboard interrupt. Shutting down...")
|
||||||
|
|
||||||
|
|
||||||
def parse_args():
|
def parse_args() -> argparse.Namespace:
|
||||||
|
"""Parse command line arguments."""
|
||||||
logger.debug("Parsing command line arguments.")
|
logger.debug("Parsing command line arguments.")
|
||||||
parser = argparse.ArgumentParser(description="Run an anybadge server.")
|
parser = argparse.ArgumentParser(description="Run an anybadge server.")
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"-p",
|
"-p",
|
||||||
"--port",
|
"--port",
|
||||||
type=int,
|
type=int,
|
||||||
default=DEFAULT_SERVER_PORT,
|
default=config.DEFAULT_SERVER_PORT,
|
||||||
help="Server port number. Default is %s. This can also be set via an environment "
|
help=f"Server port number. Default is {config.DEFAULT_SERVER_PORT}. This can also be set via an environment "
|
||||||
"variable called ``ANYBADGE_PORT``." % DEFAULT_SERVER_PORT,
|
"variable called ``ANYBADGE_PORT``.",
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"-l",
|
"-l",
|
||||||
"--listen-address",
|
"--listen-address",
|
||||||
type=str,
|
type=str,
|
||||||
default=DEFAULT_SERVER_LISTEN_ADDRESS,
|
default=config.DEFAULT_SERVER_LISTEN_ADDRESS,
|
||||||
help="Server listen address. Default is %s. This can also be set via an environment "
|
help=f"Server listen address. Default is {config.DEFAULT_SERVER_LISTEN_ADDRESS}. This can also be set via an "
|
||||||
"variable called ``ANYBADGE_LISTEN_ADDRESS``." % DEFAULT_SERVER_LISTEN_ADDRESS,
|
f"environment variable called ``ANYBADGE_LISTEN_ADDRESS``.",
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"-d", "--debug", action="store_true", help="Enable debug logging."
|
"-d", "--debug", action="store_true", help="Enable debug logging."
|
||||||
@@ -56,23 +57,23 @@ def parse_args():
|
|||||||
def main():
|
def main():
|
||||||
"""Run server."""
|
"""Run server."""
|
||||||
|
|
||||||
global DEFAULT_SERVER_PORT, DEFAULT_SERVER_LISTEN_ADDRESS, DEFAULT_LOGGING_LEVEL
|
|
||||||
|
|
||||||
# Check for environment variables
|
# Check for environment variables
|
||||||
if "ANYBADGE_PORT" in environ:
|
if "ANYBADGE_PORT" in environ:
|
||||||
DEFAULT_SERVER_PORT = environ["ANYBADGE_PORT"]
|
config.DEFAULT_SERVER_PORT = environ["ANYBADGE_PORT"]
|
||||||
|
|
||||||
if "ANYBADGE_LISTEN_ADDRESS" in environ:
|
if "ANYBADGE_LISTEN_ADDRESS" in environ:
|
||||||
DEFAULT_SERVER_LISTEN_ADDRESS = environ["ANYBADGE_LISTEN_ADDRESS"]
|
config.DEFAULT_SERVER_LISTEN_ADDRESS = environ["ANYBADGE_LISTEN_ADDRESS"]
|
||||||
|
|
||||||
if "ANYBADGE_LOG_LEVEL" in environ:
|
if "ANYBADGE_LOG_LEVEL" in environ:
|
||||||
DEFAULT_LOGGING_LEVEL = logging.getLevelName(environ["ANYBADGE_LOG_LEVEL"])
|
config.DEFAULT_LOGGING_LEVEL = logging.getLevelName(
|
||||||
|
environ["ANYBADGE_LOG_LEVEL"]
|
||||||
|
)
|
||||||
|
|
||||||
# Parse command line args
|
# Parse command line args
|
||||||
args = parse_args()
|
args: argparse.Namespace = parse_args()
|
||||||
|
|
||||||
# Set logging level
|
# Set logging level
|
||||||
logging_level = DEFAULT_LOGGING_LEVEL
|
logging_level = config.DEFAULT_LOGGING_LEVEL
|
||||||
if args.debug:
|
if args.debug:
|
||||||
logging_level = logging.DEBUG
|
logging_level = logging.DEBUG
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
|
||||||
DEFAULT_SERVER_PORT = 8000
|
DEFAULT_SERVER_PORT: int = 8000
|
||||||
DEFAULT_SERVER_LISTEN_ADDRESS = "localhost"
|
DEFAULT_SERVER_LISTEN_ADDRESS: str = "localhost"
|
||||||
DEFAULT_LOGGING_LEVEL = logging.INFO
|
DEFAULT_LOGGING_LEVEL = logging.INFO
|
||||||
|
|
||||||
SERVER_PORT = DEFAULT_SERVER_PORT
|
SERVER_PORT: int = DEFAULT_SERVER_PORT
|
||||||
SERVER_LISTEN_ADDRESS = DEFAULT_SERVER_LISTEN_ADDRESS
|
SERVER_LISTEN_ADDRESS: str = DEFAULT_SERVER_LISTEN_ADDRESS
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ import urllib.parse as urlparse
|
|||||||
from http.server import BaseHTTPRequestHandler
|
from http.server import BaseHTTPRequestHandler
|
||||||
|
|
||||||
from anybadge import Badge
|
from anybadge import Badge
|
||||||
from anybadge.server import config
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@@ -55,7 +54,9 @@ class AnyBadgeHTTPRequestHandler(BaseHTTPRequestHandler):
|
|||||||
self.wfile.write(b"<html><head><title>Anybadge Web Server.</title></head>")
|
self.wfile.write(b"<html><head><title>Anybadge Web Server.</title></head>")
|
||||||
self.wfile.write(b"<body>")
|
self.wfile.write(b"<body>")
|
||||||
|
|
||||||
help_text = """
|
listen_host, listen_port = self.server.server_address
|
||||||
|
|
||||||
|
help_text = f"""
|
||||||
<h1>Welcome to the Anybadge Web Server.</h1>
|
<h1>Welcome to the Anybadge Web Server.</h1>
|
||||||
|
|
||||||
You are seeing this message because you haven't passed all the query parameters
|
You are seeing this message because you haven't passed all the query parameters
|
||||||
@@ -65,11 +66,9 @@ class AnyBadgeHTTPRequestHandler(BaseHTTPRequestHandler):
|
|||||||
|
|
||||||
Here is an example:
|
Here is an example:
|
||||||
|
|
||||||
<a href="http://localhost:{port}/?label=Project%20Awesomeness&value=110%">\
|
<a href="http://{listen_host}:{listen_port}/?label=Project%20Awesomeness&value=110%">\
|
||||||
http://localhost:{port}/?label=Project%20Awesomeness&value=110%</a>
|
http://{listen_host}:{listen_port}/?label=Project%20Awesomeness&value=110%</a>
|
||||||
""".format(
|
"""
|
||||||
port=config.SERVER_PORT
|
|
||||||
)
|
|
||||||
|
|
||||||
for line in help_text.splitlines():
|
for line in help_text.splitlines():
|
||||||
self.wfile.write(str.encode("<p>%s</p>" % line))
|
self.wfile.write(str.encode("<p>%s</p>" % line))
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ class Style(Enum):
|
|||||||
self.suffix = suffix
|
self.suffix = suffix
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def exists(cls, name: str):
|
def exists(cls, name: str) -> bool:
|
||||||
"""Test whether a style exists."""
|
"""Test whether a style exists."""
|
||||||
try:
|
try:
|
||||||
_ = cls[name]
|
_ = cls[name]
|
||||||
|
|||||||
@@ -14,6 +14,11 @@ def get_template(name: str) -> str:
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
return pkgutil.get_data(__name__, name + ".svg").decode("utf-8")
|
data = pkgutil.get_data(__name__, name + ".svg")
|
||||||
except FileNotFoundError as e:
|
except FileNotFoundError as e:
|
||||||
raise UnknownBadgeTemplate from e
|
raise UnknownBadgeTemplate from e
|
||||||
|
|
||||||
|
if not data:
|
||||||
|
raise UnknownBadgeTemplate
|
||||||
|
|
||||||
|
return data.decode("utf-8")
|
||||||
|
|||||||
@@ -3,21 +3,20 @@ import anybadge
|
|||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
||||||
print(
|
print(
|
||||||
"""| Color Name | Hex Code | Example |
|
"""
|
||||||
| ---------- | -------- | ------- |"""
|
| Color Name | Hex | Example |
|
||||||
|
| ------------- | ------- | ------- |"""
|
||||||
)
|
)
|
||||||
for color, hex in sorted(anybadge.COLORS.items()):
|
for color in sorted(anybadge.colors.Color):
|
||||||
|
|
||||||
file = "examples/color_" + color + ".svg"
|
file = "examples/color_" + color.name.lower() + ".svg"
|
||||||
|
|
||||||
url = "https://cdn.rawgit.com/jongracecox/anybadge/master/" + file
|
url = "https://cdn.rawgit.com/jongracecox/anybadge/master/" + file
|
||||||
|
|
||||||
anybadge.Badge(label="Color", value=color, default_color=color).write_badge(
|
anybadge.Badge(
|
||||||
file, overwrite=True
|
label="Color", value=color.name.lower(), default_color=color.value
|
||||||
)
|
).write_badge(file, overwrite=True)
|
||||||
|
|
||||||
print(
|
print(
|
||||||
"| {color} | {hex} |  |".format(
|
f"| {color.name.lower():<13} | {color.value.upper():<7} | ':<84}|"
|
||||||
color=color, hex=hex.upper(), url=url
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,23 +1,23 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" width="118" height="20">
|
<svg xmlns="http://www.w3.org/2000/svg" width="79" height="20">
|
||||||
<linearGradient id="b" x2="0" y2="100%">
|
<linearGradient id="b" x2="0" y2="100%">
|
||||||
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
|
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
|
||||||
<stop offset="1" stop-opacity=".1"/>
|
<stop offset="1" stop-opacity=".1"/>
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<mask id="anybadge_43">
|
<mask id="anybadge_1">
|
||||||
<rect width="118" height="20" rx="3" fill="#fff"/>
|
<rect width="79" height="20" rx="3" fill="#fff"/>
|
||||||
</mask>
|
</mask>
|
||||||
<g mask="url(#anybadge_43)">
|
<g mask="url(#anybadge_1)">
|
||||||
<path fill="#555" d="M0 0h41v20H0z"/>
|
<path fill="#555" d="M0 0h41v20H0z"/>
|
||||||
<path fill="#00FFFF" d="M41 0h77v20H41z"/>
|
<path fill="#00FFFF" d="M41 0h38v20H41z"/>
|
||||||
<path fill="url(#b)" d="M0 0h118v20H0z"/>
|
<path fill="url(#b)" d="M0 0h79v20H0z"/>
|
||||||
</g>
|
</g>
|
||||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||||
<text x="21.5" y="15" fill="#010101" fill-opacity=".3">Color</text>
|
<text x="21.5" y="15" fill="#010101" fill-opacity=".3">Color</text>
|
||||||
<text x="20.5" y="14">Color</text>
|
<text x="20.5" y="14">Color</text>
|
||||||
</g>
|
</g>
|
||||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||||
<text x="80.5" y="15" fill="#010101" fill-opacity=".3">Color.AQUA</text>
|
<text x="61.0" y="15" fill="#010101" fill-opacity=".3">aqua</text>
|
||||||
<text x="79.5" y="14">Color.AQUA</text>
|
<text x="60.0" y="14">aqua</text>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
@@ -1,23 +1,23 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" width="122" height="20">
|
<svg xmlns="http://www.w3.org/2000/svg" width="83" height="20">
|
||||||
<linearGradient id="b" x2="0" y2="100%">
|
<linearGradient id="b" x2="0" y2="100%">
|
||||||
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
|
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
|
||||||
<stop offset="1" stop-opacity=".1"/>
|
<stop offset="1" stop-opacity=".1"/>
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<mask id="anybadge_44">
|
<mask id="anybadge_2">
|
||||||
<rect width="122" height="20" rx="3" fill="#fff"/>
|
<rect width="83" height="20" rx="3" fill="#fff"/>
|
||||||
</mask>
|
</mask>
|
||||||
<g mask="url(#anybadge_44)">
|
<g mask="url(#anybadge_2)">
|
||||||
<path fill="#555" d="M0 0h41v20H0z"/>
|
<path fill="#555" d="M0 0h41v20H0z"/>
|
||||||
<path fill="#000000" d="M41 0h81v20H41z"/>
|
<path fill="#000000" d="M41 0h42v20H41z"/>
|
||||||
<path fill="url(#b)" d="M0 0h122v20H0z"/>
|
<path fill="url(#b)" d="M0 0h83v20H0z"/>
|
||||||
</g>
|
</g>
|
||||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||||
<text x="21.5" y="15" fill="#010101" fill-opacity=".3">Color</text>
|
<text x="21.5" y="15" fill="#010101" fill-opacity=".3">Color</text>
|
||||||
<text x="20.5" y="14">Color</text>
|
<text x="20.5" y="14">Color</text>
|
||||||
</g>
|
</g>
|
||||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||||
<text x="82.5" y="15" fill="#010101" fill-opacity=".3">Color.BLACK</text>
|
<text x="63.0" y="15" fill="#010101" fill-opacity=".3">black</text>
|
||||||
<text x="81.5" y="14">Color.BLACK</text>
|
<text x="62.0" y="14">black</text>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
@@ -1,23 +1,23 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" width="115" height="20">
|
<svg xmlns="http://www.w3.org/2000/svg" width="76" height="20">
|
||||||
<linearGradient id="b" x2="0" y2="100%">
|
<linearGradient id="b" x2="0" y2="100%">
|
||||||
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
|
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
|
||||||
<stop offset="1" stop-opacity=".1"/>
|
<stop offset="1" stop-opacity=".1"/>
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<mask id="anybadge_45">
|
<mask id="anybadge_3">
|
||||||
<rect width="115" height="20" rx="3" fill="#fff"/>
|
<rect width="76" height="20" rx="3" fill="#fff"/>
|
||||||
</mask>
|
</mask>
|
||||||
<g mask="url(#anybadge_45)">
|
<g mask="url(#anybadge_3)">
|
||||||
<path fill="#555" d="M0 0h41v20H0z"/>
|
<path fill="#555" d="M0 0h41v20H0z"/>
|
||||||
<path fill="#0000FF" d="M41 0h74v20H41z"/>
|
<path fill="#0000FF" d="M41 0h35v20H41z"/>
|
||||||
<path fill="url(#b)" d="M0 0h115v20H0z"/>
|
<path fill="url(#b)" d="M0 0h76v20H0z"/>
|
||||||
</g>
|
</g>
|
||||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||||
<text x="21.5" y="15" fill="#010101" fill-opacity=".3">Color</text>
|
<text x="21.5" y="15" fill="#010101" fill-opacity=".3">Color</text>
|
||||||
<text x="20.5" y="14">Color</text>
|
<text x="20.5" y="14">Color</text>
|
||||||
</g>
|
</g>
|
||||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||||
<text x="79.0" y="15" fill="#010101" fill-opacity=".3">Color.BLUE</text>
|
<text x="59.5" y="15" fill="#010101" fill-opacity=".3">blue</text>
|
||||||
<text x="78.0" y="14">Color.BLUE</text>
|
<text x="58.5" y="14">blue</text>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
@@ -1,23 +1,23 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" width="158" height="20">
|
<svg xmlns="http://www.w3.org/2000/svg" width="114" height="20">
|
||||||
<linearGradient id="b" x2="0" y2="100%">
|
<linearGradient id="b" x2="0" y2="100%">
|
||||||
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
|
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
|
||||||
<stop offset="1" stop-opacity=".1"/>
|
<stop offset="1" stop-opacity=".1"/>
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<mask id="anybadge_46">
|
<mask id="anybadge_4">
|
||||||
<rect width="158" height="20" rx="3" fill="#fff"/>
|
<rect width="114" height="20" rx="3" fill="#fff"/>
|
||||||
</mask>
|
</mask>
|
||||||
<g mask="url(#anybadge_46)">
|
<g mask="url(#anybadge_4)">
|
||||||
<path fill="#555" d="M0 0h41v20H0z"/>
|
<path fill="#555" d="M0 0h41v20H0z"/>
|
||||||
<path fill="#FF0000" d="M41 0h117v20H41z"/>
|
<path fill="#FF0000" d="M41 0h73v20H41z"/>
|
||||||
<path fill="url(#b)" d="M0 0h158v20H0z"/>
|
<path fill="url(#b)" d="M0 0h114v20H0z"/>
|
||||||
</g>
|
</g>
|
||||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||||
<text x="21.5" y="15" fill="#010101" fill-opacity=".3">Color</text>
|
<text x="21.5" y="15" fill="#010101" fill-opacity=".3">Color</text>
|
||||||
<text x="20.5" y="14">Color</text>
|
<text x="20.5" y="14">Color</text>
|
||||||
</g>
|
</g>
|
||||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||||
<text x="100.5" y="15" fill="#010101" fill-opacity=".3">Color.BRIGHT_RED</text>
|
<text x="78.5" y="15" fill="#010101" fill-opacity=".3">bright_red</text>
|
||||||
<text x="99.5" y="14">Color.BRIGHT_RED</text>
|
<text x="77.5" y="14">bright_red</text>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
@@ -1,23 +1,23 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" width="185" height="20">
|
<svg xmlns="http://www.w3.org/2000/svg" width="130" height="20">
|
||||||
<linearGradient id="b" x2="0" y2="100%">
|
<linearGradient id="b" x2="0" y2="100%">
|
||||||
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
|
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
|
||||||
<stop offset="1" stop-opacity=".1"/>
|
<stop offset="1" stop-opacity=".1"/>
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<mask id="anybadge_47">
|
<mask id="anybadge_5">
|
||||||
<rect width="185" height="20" rx="3" fill="#fff"/>
|
<rect width="130" height="20" rx="3" fill="#fff"/>
|
||||||
</mask>
|
</mask>
|
||||||
<g mask="url(#anybadge_47)">
|
<g mask="url(#anybadge_5)">
|
||||||
<path fill="#555" d="M0 0h41v20H0z"/>
|
<path fill="#555" d="M0 0h41v20H0z"/>
|
||||||
<path fill="#FFFF00" d="M41 0h144v20H41z"/>
|
<path fill="#FFFF00" d="M41 0h89v20H41z"/>
|
||||||
<path fill="url(#b)" d="M0 0h185v20H0z"/>
|
<path fill="url(#b)" d="M0 0h130v20H0z"/>
|
||||||
</g>
|
</g>
|
||||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||||
<text x="21.5" y="15" fill="#010101" fill-opacity=".3">Color</text>
|
<text x="21.5" y="15" fill="#010101" fill-opacity=".3">Color</text>
|
||||||
<text x="20.5" y="14">Color</text>
|
<text x="20.5" y="14">Color</text>
|
||||||
</g>
|
</g>
|
||||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||||
<text x="114.0" y="15" fill="#010101" fill-opacity=".3">Color.BRIGHT_YELLOW</text>
|
<text x="86.5" y="15" fill="#010101" fill-opacity=".3">bright_yellow</text>
|
||||||
<text x="113.0" y="14">Color.BRIGHT_YELLOW</text>
|
<text x="85.5" y="14">bright_yellow</text>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.0 KiB |
@@ -1,23 +1,23 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" width="134" height="20">
|
<svg xmlns="http://www.w3.org/2000/svg" width="95" height="20">
|
||||||
<linearGradient id="b" x2="0" y2="100%">
|
<linearGradient id="b" x2="0" y2="100%">
|
||||||
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
|
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
|
||||||
<stop offset="1" stop-opacity=".1"/>
|
<stop offset="1" stop-opacity=".1"/>
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<mask id="anybadge_48">
|
<mask id="anybadge_6">
|
||||||
<rect width="134" height="20" rx="3" fill="#fff"/>
|
<rect width="95" height="20" rx="3" fill="#fff"/>
|
||||||
</mask>
|
</mask>
|
||||||
<g mask="url(#anybadge_48)">
|
<g mask="url(#anybadge_6)">
|
||||||
<path fill="#555" d="M0 0h41v20H0z"/>
|
<path fill="#555" d="M0 0h41v20H0z"/>
|
||||||
<path fill="#FF00FF" d="M41 0h93v20H41z"/>
|
<path fill="#FF00FF" d="M41 0h54v20H41z"/>
|
||||||
<path fill="url(#b)" d="M0 0h134v20H0z"/>
|
<path fill="url(#b)" d="M0 0h95v20H0z"/>
|
||||||
</g>
|
</g>
|
||||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||||
<text x="21.5" y="15" fill="#010101" fill-opacity=".3">Color</text>
|
<text x="21.5" y="15" fill="#010101" fill-opacity=".3">Color</text>
|
||||||
<text x="20.5" y="14">Color</text>
|
<text x="20.5" y="14">Color</text>
|
||||||
</g>
|
</g>
|
||||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||||
<text x="88.5" y="15" fill="#010101" fill-opacity=".3">Color.FUCHSIA</text>
|
<text x="69.0" y="15" fill="#010101" fill-opacity=".3">fuchsia</text>
|
||||||
<text x="87.5" y="14">Color.FUCHSIA</text>
|
<text x="68.0" y="14">fuchsia</text>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
@@ -1,23 +1,23 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" width="118" height="20">
|
<svg xmlns="http://www.w3.org/2000/svg" width="78" height="20">
|
||||||
<linearGradient id="b" x2="0" y2="100%">
|
<linearGradient id="b" x2="0" y2="100%">
|
||||||
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
|
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
|
||||||
<stop offset="1" stop-opacity=".1"/>
|
<stop offset="1" stop-opacity=".1"/>
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<mask id="anybadge_49">
|
<mask id="anybadge_7">
|
||||||
<rect width="118" height="20" rx="3" fill="#fff"/>
|
<rect width="78" height="20" rx="3" fill="#fff"/>
|
||||||
</mask>
|
</mask>
|
||||||
<g mask="url(#anybadge_49)">
|
<g mask="url(#anybadge_7)">
|
||||||
<path fill="#555" d="M0 0h41v20H0z"/>
|
<path fill="#555" d="M0 0h41v20H0z"/>
|
||||||
<path fill="#808080" d="M41 0h77v20H41z"/>
|
<path fill="#808080" d="M41 0h37v20H41z"/>
|
||||||
<path fill="url(#b)" d="M0 0h118v20H0z"/>
|
<path fill="url(#b)" d="M0 0h78v20H0z"/>
|
||||||
</g>
|
</g>
|
||||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||||
<text x="21.5" y="15" fill="#010101" fill-opacity=".3">Color</text>
|
<text x="21.5" y="15" fill="#010101" fill-opacity=".3">Color</text>
|
||||||
<text x="20.5" y="14">Color</text>
|
<text x="20.5" y="14">Color</text>
|
||||||
</g>
|
</g>
|
||||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||||
<text x="80.5" y="15" fill="#010101" fill-opacity=".3">Color.GRAY</text>
|
<text x="60.5" y="15" fill="#010101" fill-opacity=".3">gray</text>
|
||||||
<text x="79.5" y="14">Color.GRAY</text>
|
<text x="59.5" y="14">gray</text>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
@@ -1,23 +1,23 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" width="125" height="20">
|
<svg xmlns="http://www.w3.org/2000/svg" width="85" height="20">
|
||||||
<linearGradient id="b" x2="0" y2="100%">
|
<linearGradient id="b" x2="0" y2="100%">
|
||||||
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
|
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
|
||||||
<stop offset="1" stop-opacity=".1"/>
|
<stop offset="1" stop-opacity=".1"/>
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<mask id="anybadge_50">
|
<mask id="anybadge_8">
|
||||||
<rect width="125" height="20" rx="3" fill="#fff"/>
|
<rect width="85" height="20" rx="3" fill="#fff"/>
|
||||||
</mask>
|
</mask>
|
||||||
<g mask="url(#anybadge_50)">
|
<g mask="url(#anybadge_8)">
|
||||||
<path fill="#555" d="M0 0h41v20H0z"/>
|
<path fill="#555" d="M0 0h41v20H0z"/>
|
||||||
<path fill="#4c1" d="M41 0h84v20H41z"/>
|
<path fill="#4C1" d="M41 0h44v20H41z"/>
|
||||||
<path fill="url(#b)" d="M0 0h125v20H0z"/>
|
<path fill="url(#b)" d="M0 0h85v20H0z"/>
|
||||||
</g>
|
</g>
|
||||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||||
<text x="21.5" y="15" fill="#010101" fill-opacity=".3">Color</text>
|
<text x="21.5" y="15" fill="#010101" fill-opacity=".3">Color</text>
|
||||||
<text x="20.5" y="14">Color</text>
|
<text x="20.5" y="14">Color</text>
|
||||||
</g>
|
</g>
|
||||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||||
<text x="84.0" y="15" fill="#010101" fill-opacity=".3">Color.GREEN</text>
|
<text x="64.0" y="15" fill="#010101" fill-opacity=".3">green</text>
|
||||||
<text x="83.0" y="14">Color.GREEN</text>
|
<text x="63.0" y="14">green</text>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
@@ -1,23 +1,23 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" width="161" height="20">
|
<svg xmlns="http://www.w3.org/2000/svg" width="112" height="20">
|
||||||
<linearGradient id="b" x2="0" y2="100%">
|
<linearGradient id="b" x2="0" y2="100%">
|
||||||
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
|
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
|
||||||
<stop offset="1" stop-opacity=".1"/>
|
<stop offset="1" stop-opacity=".1"/>
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<mask id="anybadge_51">
|
<mask id="anybadge_9">
|
||||||
<rect width="161" height="20" rx="3" fill="#fff"/>
|
<rect width="112" height="20" rx="3" fill="#fff"/>
|
||||||
</mask>
|
</mask>
|
||||||
<g mask="url(#anybadge_51)">
|
<g mask="url(#anybadge_9)">
|
||||||
<path fill="#555" d="M0 0h41v20H0z"/>
|
<path fill="#555" d="M0 0h41v20H0z"/>
|
||||||
<path fill="#9f9f9f" d="M41 0h120v20H41z"/>
|
<path fill="#9F9F9F" d="M41 0h71v20H41z"/>
|
||||||
<path fill="url(#b)" d="M0 0h161v20H0z"/>
|
<path fill="url(#b)" d="M0 0h112v20H0z"/>
|
||||||
</g>
|
</g>
|
||||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||||
<text x="21.5" y="15" fill="#010101" fill-opacity=".3">Color</text>
|
<text x="21.5" y="15" fill="#010101" fill-opacity=".3">Color</text>
|
||||||
<text x="20.5" y="14">Color</text>
|
<text x="20.5" y="14">Color</text>
|
||||||
</g>
|
</g>
|
||||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||||
<text x="102.0" y="15" fill="#010101" fill-opacity=".3">Color.LIGHT_GREY</text>
|
<text x="77.5" y="15" fill="#010101" fill-opacity=".3">light_grey</text>
|
||||||
<text x="101.0" y="14">Color.LIGHT_GREY</text>
|
<text x="76.5" y="14">light_grey</text>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
@@ -1,23 +1,23 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" width="116" height="20">
|
<svg xmlns="http://www.w3.org/2000/svg" width="76" height="20">
|
||||||
<linearGradient id="b" x2="0" y2="100%">
|
<linearGradient id="b" x2="0" y2="100%">
|
||||||
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
|
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
|
||||||
<stop offset="1" stop-opacity=".1"/>
|
<stop offset="1" stop-opacity=".1"/>
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<mask id="anybadge_52">
|
<mask id="anybadge_10">
|
||||||
<rect width="116" height="20" rx="3" fill="#fff"/>
|
<rect width="76" height="20" rx="3" fill="#fff"/>
|
||||||
</mask>
|
</mask>
|
||||||
<g mask="url(#anybadge_52)">
|
<g mask="url(#anybadge_10)">
|
||||||
<path fill="#555" d="M0 0h41v20H0z"/>
|
<path fill="#555" d="M0 0h41v20H0z"/>
|
||||||
<path fill="#00FF00" d="M41 0h75v20H41z"/>
|
<path fill="#00FF00" d="M41 0h35v20H41z"/>
|
||||||
<path fill="url(#b)" d="M0 0h116v20H0z"/>
|
<path fill="url(#b)" d="M0 0h76v20H0z"/>
|
||||||
</g>
|
</g>
|
||||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||||
<text x="21.5" y="15" fill="#010101" fill-opacity=".3">Color</text>
|
<text x="21.5" y="15" fill="#010101" fill-opacity=".3">Color</text>
|
||||||
<text x="20.5" y="14">Color</text>
|
<text x="20.5" y="14">Color</text>
|
||||||
</g>
|
</g>
|
||||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||||
<text x="79.5" y="15" fill="#010101" fill-opacity=".3">Color.LIME</text>
|
<text x="59.5" y="15" fill="#010101" fill-opacity=".3">lime</text>
|
||||||
<text x="78.5" y="14">Color.LIME</text>
|
<text x="58.5" y="14">lime</text>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
@@ -1,23 +1,23 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" width="138" height="20">
|
<svg xmlns="http://www.w3.org/2000/svg" width="95" height="20">
|
||||||
<linearGradient id="b" x2="0" y2="100%">
|
<linearGradient id="b" x2="0" y2="100%">
|
||||||
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
|
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
|
||||||
<stop offset="1" stop-opacity=".1"/>
|
<stop offset="1" stop-opacity=".1"/>
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<mask id="anybadge_53">
|
<mask id="anybadge_11">
|
||||||
<rect width="138" height="20" rx="3" fill="#fff"/>
|
<rect width="95" height="20" rx="3" fill="#fff"/>
|
||||||
</mask>
|
</mask>
|
||||||
<g mask="url(#anybadge_53)">
|
<g mask="url(#anybadge_11)">
|
||||||
<path fill="#555" d="M0 0h41v20H0z"/>
|
<path fill="#555" d="M0 0h41v20H0z"/>
|
||||||
<path fill="#800000" d="M41 0h97v20H41z"/>
|
<path fill="#800000" d="M41 0h54v20H41z"/>
|
||||||
<path fill="url(#b)" d="M0 0h138v20H0z"/>
|
<path fill="url(#b)" d="M0 0h95v20H0z"/>
|
||||||
</g>
|
</g>
|
||||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||||
<text x="21.5" y="15" fill="#010101" fill-opacity=".3">Color</text>
|
<text x="21.5" y="15" fill="#010101" fill-opacity=".3">Color</text>
|
||||||
<text x="20.5" y="14">Color</text>
|
<text x="20.5" y="14">Color</text>
|
||||||
</g>
|
</g>
|
||||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||||
<text x="90.5" y="15" fill="#010101" fill-opacity=".3">Color.MAROON</text>
|
<text x="69.0" y="15" fill="#010101" fill-opacity=".3">maroon</text>
|
||||||
<text x="89.5" y="14">Color.MAROON</text>
|
<text x="68.0" y="14">maroon</text>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
@@ -1,23 +1,23 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" width="115" height="20">
|
<svg xmlns="http://www.w3.org/2000/svg" width="79" height="20">
|
||||||
<linearGradient id="b" x2="0" y2="100%">
|
<linearGradient id="b" x2="0" y2="100%">
|
||||||
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
|
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
|
||||||
<stop offset="1" stop-opacity=".1"/>
|
<stop offset="1" stop-opacity=".1"/>
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<mask id="anybadge_54">
|
<mask id="anybadge_12">
|
||||||
<rect width="115" height="20" rx="3" fill="#fff"/>
|
<rect width="79" height="20" rx="3" fill="#fff"/>
|
||||||
</mask>
|
</mask>
|
||||||
<g mask="url(#anybadge_54)">
|
<g mask="url(#anybadge_12)">
|
||||||
<path fill="#555" d="M0 0h41v20H0z"/>
|
<path fill="#555" d="M0 0h41v20H0z"/>
|
||||||
<path fill="#000080" d="M41 0h74v20H41z"/>
|
<path fill="#000080" d="M41 0h38v20H41z"/>
|
||||||
<path fill="url(#b)" d="M0 0h115v20H0z"/>
|
<path fill="url(#b)" d="M0 0h79v20H0z"/>
|
||||||
</g>
|
</g>
|
||||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||||
<text x="21.5" y="15" fill="#010101" fill-opacity=".3">Color</text>
|
<text x="21.5" y="15" fill="#010101" fill-opacity=".3">Color</text>
|
||||||
<text x="20.5" y="14">Color</text>
|
<text x="20.5" y="14">Color</text>
|
||||||
</g>
|
</g>
|
||||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||||
<text x="79.0" y="15" fill="#010101" fill-opacity=".3">Color.NAVY</text>
|
<text x="61.0" y="15" fill="#010101" fill-opacity=".3">navy</text>
|
||||||
<text x="78.0" y="14">Color.NAVY</text>
|
<text x="60.0" y="14">navy</text>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
@@ -1,23 +1,23 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" width="123" height="20">
|
<svg xmlns="http://www.w3.org/2000/svg" width="80" height="20">
|
||||||
<linearGradient id="b" x2="0" y2="100%">
|
<linearGradient id="b" x2="0" y2="100%">
|
||||||
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
|
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
|
||||||
<stop offset="1" stop-opacity=".1"/>
|
<stop offset="1" stop-opacity=".1"/>
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<mask id="anybadge_55">
|
<mask id="anybadge_13">
|
||||||
<rect width="123" height="20" rx="3" fill="#fff"/>
|
<rect width="80" height="20" rx="3" fill="#fff"/>
|
||||||
</mask>
|
</mask>
|
||||||
<g mask="url(#anybadge_55)">
|
<g mask="url(#anybadge_13)">
|
||||||
<path fill="#555" d="M0 0h41v20H0z"/>
|
<path fill="#555" d="M0 0h41v20H0z"/>
|
||||||
<path fill="#808000" d="M41 0h82v20H41z"/>
|
<path fill="#808000" d="M41 0h39v20H41z"/>
|
||||||
<path fill="url(#b)" d="M0 0h123v20H0z"/>
|
<path fill="url(#b)" d="M0 0h80v20H0z"/>
|
||||||
</g>
|
</g>
|
||||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||||
<text x="21.5" y="15" fill="#010101" fill-opacity=".3">Color</text>
|
<text x="21.5" y="15" fill="#010101" fill-opacity=".3">Color</text>
|
||||||
<text x="20.5" y="14">Color</text>
|
<text x="20.5" y="14">Color</text>
|
||||||
</g>
|
</g>
|
||||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||||
<text x="83.0" y="15" fill="#010101" fill-opacity=".3">Color.OLIVE</text>
|
<text x="61.5" y="15" fill="#010101" fill-opacity=".3">olive</text>
|
||||||
<text x="82.0" y="14">Color.OLIVE</text>
|
<text x="60.5" y="14">olive</text>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
@@ -1,23 +1,23 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" width="135" height="20">
|
<svg xmlns="http://www.w3.org/2000/svg" width="92" height="20">
|
||||||
<linearGradient id="b" x2="0" y2="100%">
|
<linearGradient id="b" x2="0" y2="100%">
|
||||||
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
|
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
|
||||||
<stop offset="1" stop-opacity=".1"/>
|
<stop offset="1" stop-opacity=".1"/>
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<mask id="anybadge_56">
|
<mask id="anybadge_14">
|
||||||
<rect width="135" height="20" rx="3" fill="#fff"/>
|
<rect width="92" height="20" rx="3" fill="#fff"/>
|
||||||
</mask>
|
</mask>
|
||||||
<g mask="url(#anybadge_56)">
|
<g mask="url(#anybadge_14)">
|
||||||
<path fill="#555" d="M0 0h41v20H0z"/>
|
<path fill="#555" d="M0 0h41v20H0z"/>
|
||||||
<path fill="#fe7d37" d="M41 0h94v20H41z"/>
|
<path fill="#FE7D37" d="M41 0h51v20H41z"/>
|
||||||
<path fill="url(#b)" d="M0 0h135v20H0z"/>
|
<path fill="url(#b)" d="M0 0h92v20H0z"/>
|
||||||
</g>
|
</g>
|
||||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||||
<text x="21.5" y="15" fill="#010101" fill-opacity=".3">Color</text>
|
<text x="21.5" y="15" fill="#010101" fill-opacity=".3">Color</text>
|
||||||
<text x="20.5" y="14">Color</text>
|
<text x="20.5" y="14">Color</text>
|
||||||
</g>
|
</g>
|
||||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||||
<text x="89.0" y="15" fill="#010101" fill-opacity=".3">Color.ORANGE</text>
|
<text x="67.5" y="15" fill="#010101" fill-opacity=".3">orange</text>
|
||||||
<text x="88.0" y="14">Color.ORANGE</text>
|
<text x="66.5" y="14">orange</text>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
@@ -1,23 +1,23 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" width="129" height="20">
|
<svg xmlns="http://www.w3.org/2000/svg" width="89" height="20">
|
||||||
<linearGradient id="b" x2="0" y2="100%">
|
<linearGradient id="b" x2="0" y2="100%">
|
||||||
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
|
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
|
||||||
<stop offset="1" stop-opacity=".1"/>
|
<stop offset="1" stop-opacity=".1"/>
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<mask id="anybadge_57">
|
<mask id="anybadge_15">
|
||||||
<rect width="129" height="20" rx="3" fill="#fff"/>
|
<rect width="89" height="20" rx="3" fill="#fff"/>
|
||||||
</mask>
|
</mask>
|
||||||
<g mask="url(#anybadge_57)">
|
<g mask="url(#anybadge_15)">
|
||||||
<path fill="#555" d="M0 0h41v20H0z"/>
|
<path fill="#555" d="M0 0h41v20H0z"/>
|
||||||
<path fill="#800080" d="M41 0h88v20H41z"/>
|
<path fill="#800080" d="M41 0h48v20H41z"/>
|
||||||
<path fill="url(#b)" d="M0 0h129v20H0z"/>
|
<path fill="url(#b)" d="M0 0h89v20H0z"/>
|
||||||
</g>
|
</g>
|
||||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||||
<text x="21.5" y="15" fill="#010101" fill-opacity=".3">Color</text>
|
<text x="21.5" y="15" fill="#010101" fill-opacity=".3">Color</text>
|
||||||
<text x="20.5" y="14">Color</text>
|
<text x="20.5" y="14">Color</text>
|
||||||
</g>
|
</g>
|
||||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||||
<text x="86.0" y="15" fill="#010101" fill-opacity=".3">Color.PURPLE</text>
|
<text x="66.0" y="15" fill="#010101" fill-opacity=".3">purple</text>
|
||||||
<text x="85.0" y="14">Color.PURPLE</text>
|
<text x="65.0" y="14">purple</text>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
@@ -1,23 +1,23 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" width="108" height="20">
|
<svg xmlns="http://www.w3.org/2000/svg" width="71" height="20">
|
||||||
<linearGradient id="b" x2="0" y2="100%">
|
<linearGradient id="b" x2="0" y2="100%">
|
||||||
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
|
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
|
||||||
<stop offset="1" stop-opacity=".1"/>
|
<stop offset="1" stop-opacity=".1"/>
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<mask id="anybadge_58">
|
<mask id="anybadge_16">
|
||||||
<rect width="108" height="20" rx="3" fill="#fff"/>
|
<rect width="71" height="20" rx="3" fill="#fff"/>
|
||||||
</mask>
|
</mask>
|
||||||
<g mask="url(#anybadge_58)">
|
<g mask="url(#anybadge_16)">
|
||||||
<path fill="#555" d="M0 0h41v20H0z"/>
|
<path fill="#555" d="M0 0h41v20H0z"/>
|
||||||
<path fill="#e05d44" d="M41 0h67v20H41z"/>
|
<path fill="#E05D44" d="M41 0h30v20H41z"/>
|
||||||
<path fill="url(#b)" d="M0 0h108v20H0z"/>
|
<path fill="url(#b)" d="M0 0h71v20H0z"/>
|
||||||
</g>
|
</g>
|
||||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||||
<text x="21.5" y="15" fill="#010101" fill-opacity=".3">Color</text>
|
<text x="21.5" y="15" fill="#010101" fill-opacity=".3">Color</text>
|
||||||
<text x="20.5" y="14">Color</text>
|
<text x="20.5" y="14">Color</text>
|
||||||
</g>
|
</g>
|
||||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||||
<text x="75.5" y="15" fill="#010101" fill-opacity=".3">Color.RED</text>
|
<text x="57.0" y="15" fill="#010101" fill-opacity=".3">red</text>
|
||||||
<text x="74.5" y="14">Color.RED</text>
|
<text x="56.0" y="14">red</text>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
@@ -1,23 +1,23 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" width="127" height="20">
|
<svg xmlns="http://www.w3.org/2000/svg" width="86" height="20">
|
||||||
<linearGradient id="b" x2="0" y2="100%">
|
<linearGradient id="b" x2="0" y2="100%">
|
||||||
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
|
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
|
||||||
<stop offset="1" stop-opacity=".1"/>
|
<stop offset="1" stop-opacity=".1"/>
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<mask id="anybadge_59">
|
<mask id="anybadge_17">
|
||||||
<rect width="127" height="20" rx="3" fill="#fff"/>
|
<rect width="86" height="20" rx="3" fill="#fff"/>
|
||||||
</mask>
|
</mask>
|
||||||
<g mask="url(#anybadge_59)">
|
<g mask="url(#anybadge_17)">
|
||||||
<path fill="#555" d="M0 0h41v20H0z"/>
|
<path fill="#555" d="M0 0h41v20H0z"/>
|
||||||
<path fill="#C0C0C0" d="M41 0h86v20H41z"/>
|
<path fill="#C0C0C0" d="M41 0h45v20H41z"/>
|
||||||
<path fill="url(#b)" d="M0 0h127v20H0z"/>
|
<path fill="url(#b)" d="M0 0h86v20H0z"/>
|
||||||
</g>
|
</g>
|
||||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||||
<text x="21.5" y="15" fill="#010101" fill-opacity=".3">Color</text>
|
<text x="21.5" y="15" fill="#010101" fill-opacity=".3">Color</text>
|
||||||
<text x="20.5" y="14">Color</text>
|
<text x="20.5" y="14">Color</text>
|
||||||
</g>
|
</g>
|
||||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||||
<text x="85.0" y="15" fill="#010101" fill-opacity=".3">Color.SILVER</text>
|
<text x="64.5" y="15" fill="#010101" fill-opacity=".3">silver</text>
|
||||||
<text x="84.0" y="14">Color.SILVER</text>
|
<text x="63.5" y="14">silver</text>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
@@ -1,23 +1,23 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" width="115" height="20">
|
<svg xmlns="http://www.w3.org/2000/svg" width="74" height="20">
|
||||||
<linearGradient id="b" x2="0" y2="100%">
|
<linearGradient id="b" x2="0" y2="100%">
|
||||||
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
|
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
|
||||||
<stop offset="1" stop-opacity=".1"/>
|
<stop offset="1" stop-opacity=".1"/>
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<mask id="anybadge_60">
|
<mask id="anybadge_18">
|
||||||
<rect width="115" height="20" rx="3" fill="#fff"/>
|
<rect width="74" height="20" rx="3" fill="#fff"/>
|
||||||
</mask>
|
</mask>
|
||||||
<g mask="url(#anybadge_60)">
|
<g mask="url(#anybadge_18)">
|
||||||
<path fill="#555" d="M0 0h41v20H0z"/>
|
<path fill="#555" d="M0 0h41v20H0z"/>
|
||||||
<path fill="#008080" d="M41 0h74v20H41z"/>
|
<path fill="#008080" d="M41 0h33v20H41z"/>
|
||||||
<path fill="url(#b)" d="M0 0h115v20H0z"/>
|
<path fill="url(#b)" d="M0 0h74v20H0z"/>
|
||||||
</g>
|
</g>
|
||||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||||
<text x="21.5" y="15" fill="#010101" fill-opacity=".3">Color</text>
|
<text x="21.5" y="15" fill="#010101" fill-opacity=".3">Color</text>
|
||||||
<text x="20.5" y="14">Color</text>
|
<text x="20.5" y="14">Color</text>
|
||||||
</g>
|
</g>
|
||||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||||
<text x="79.0" y="15" fill="#010101" fill-opacity=".3">Color.TEAL</text>
|
<text x="58.5" y="15" fill="#010101" fill-opacity=".3">teal</text>
|
||||||
<text x="78.0" y="14">Color.TEAL</text>
|
<text x="57.5" y="14">teal</text>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
@@ -1,23 +1,23 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" width="123" height="20">
|
<svg xmlns="http://www.w3.org/2000/svg" width="81" height="20">
|
||||||
<linearGradient id="b" x2="0" y2="100%">
|
<linearGradient id="b" x2="0" y2="100%">
|
||||||
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
|
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
|
||||||
<stop offset="1" stop-opacity=".1"/>
|
<stop offset="1" stop-opacity=".1"/>
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<mask id="anybadge_61">
|
<mask id="anybadge_19">
|
||||||
<rect width="123" height="20" rx="3" fill="#fff"/>
|
<rect width="81" height="20" rx="3" fill="#fff"/>
|
||||||
</mask>
|
</mask>
|
||||||
<g mask="url(#anybadge_61)">
|
<g mask="url(#anybadge_19)">
|
||||||
<path fill="#555" d="M0 0h41v20H0z"/>
|
<path fill="#555" d="M0 0h41v20H0z"/>
|
||||||
<path fill="#FFFFFF" d="M41 0h82v20H41z"/>
|
<path fill="#FFFFFF" d="M41 0h40v20H41z"/>
|
||||||
<path fill="url(#b)" d="M0 0h123v20H0z"/>
|
<path fill="url(#b)" d="M0 0h81v20H0z"/>
|
||||||
</g>
|
</g>
|
||||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||||
<text x="21.5" y="15" fill="#010101" fill-opacity=".3">Color</text>
|
<text x="21.5" y="15" fill="#010101" fill-opacity=".3">Color</text>
|
||||||
<text x="20.5" y="14">Color</text>
|
<text x="20.5" y="14">Color</text>
|
||||||
</g>
|
</g>
|
||||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||||
<text x="83.0" y="15" fill="#010101" fill-opacity=".3">Color.WHITE</text>
|
<text x="62.0" y="15" fill="#010101" fill-opacity=".3">white</text>
|
||||||
<text x="82.0" y="14">Color.WHITE</text>
|
<text x="61.0" y="14">white</text>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
@@ -1,23 +1,23 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" width="135" height="20">
|
<svg xmlns="http://www.w3.org/2000/svg" width="87" height="20">
|
||||||
<linearGradient id="b" x2="0" y2="100%">
|
<linearGradient id="b" x2="0" y2="100%">
|
||||||
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
|
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
|
||||||
<stop offset="1" stop-opacity=".1"/>
|
<stop offset="1" stop-opacity=".1"/>
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<mask id="anybadge_62">
|
<mask id="anybadge_20">
|
||||||
<rect width="135" height="20" rx="3" fill="#fff"/>
|
<rect width="87" height="20" rx="3" fill="#fff"/>
|
||||||
</mask>
|
</mask>
|
||||||
<g mask="url(#anybadge_62)">
|
<g mask="url(#anybadge_20)">
|
||||||
<path fill="#555" d="M0 0h41v20H0z"/>
|
<path fill="#555" d="M0 0h41v20H0z"/>
|
||||||
<path fill="#dfb317" d="M41 0h94v20H41z"/>
|
<path fill="#DFB317" d="M41 0h46v20H41z"/>
|
||||||
<path fill="url(#b)" d="M0 0h135v20H0z"/>
|
<path fill="url(#b)" d="M0 0h87v20H0z"/>
|
||||||
</g>
|
</g>
|
||||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||||
<text x="21.5" y="15" fill="#010101" fill-opacity=".3">Color</text>
|
<text x="21.5" y="15" fill="#010101" fill-opacity=".3">Color</text>
|
||||||
<text x="20.5" y="14">Color</text>
|
<text x="20.5" y="14">Color</text>
|
||||||
</g>
|
</g>
|
||||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||||
<text x="89.0" y="15" fill="#010101" fill-opacity=".3">Color.YELLOW</text>
|
<text x="65.0" y="15" fill="#010101" fill-opacity=".3">yellow</text>
|
||||||
<text x="88.0" y="14">Color.YELLOW</text>
|
<text x="64.0" y="14">yellow</text>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
@@ -1,23 +1,23 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" width="180" height="20">
|
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="20">
|
||||||
<linearGradient id="b" x2="0" y2="100%">
|
<linearGradient id="b" x2="0" y2="100%">
|
||||||
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
|
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
|
||||||
<stop offset="1" stop-opacity=".1"/>
|
<stop offset="1" stop-opacity=".1"/>
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<mask id="anybadge_63">
|
<mask id="anybadge_21">
|
||||||
<rect width="180" height="20" rx="3" fill="#fff"/>
|
<rect width="128" height="20" rx="3" fill="#fff"/>
|
||||||
</mask>
|
</mask>
|
||||||
<g mask="url(#anybadge_63)">
|
<g mask="url(#anybadge_21)">
|
||||||
<path fill="#555" d="M0 0h41v20H0z"/>
|
<path fill="#555" d="M0 0h41v20H0z"/>
|
||||||
<path fill="#a4a61d" d="M41 0h139v20H41z"/>
|
<path fill="#A4A61D" d="M41 0h87v20H41z"/>
|
||||||
<path fill="url(#b)" d="M0 0h180v20H0z"/>
|
<path fill="url(#b)" d="M0 0h128v20H0z"/>
|
||||||
</g>
|
</g>
|
||||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||||
<text x="21.5" y="15" fill="#010101" fill-opacity=".3">Color</text>
|
<text x="21.5" y="15" fill="#010101" fill-opacity=".3">Color</text>
|
||||||
<text x="20.5" y="14">Color</text>
|
<text x="20.5" y="14">Color</text>
|
||||||
</g>
|
</g>
|
||||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||||
<text x="111.5" y="15" fill="#010101" fill-opacity=".3">Color.YELLOW_GREEN</text>
|
<text x="85.5" y="15" fill="#010101" fill-opacity=".3">yellow_green</text>
|
||||||
<text x="110.5" y="14">Color.YELLOW_GREEN</text>
|
<text x="84.5" y="14">yellow_green</text>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
2
setup.py
@@ -27,7 +27,7 @@ setup(
|
|||||||
install_requires=["packaging"],
|
install_requires=["packaging"],
|
||||||
package_data={"anybadge": ["templates/*.svg"]},
|
package_data={"anybadge": ["templates/*.svg"]},
|
||||||
options={"bdist_wheel": {"universal": False}},
|
options={"bdist_wheel": {"universal": False}},
|
||||||
python_requires=">=3.4",
|
python_requires=">=3.7",
|
||||||
url="https://github.com/jongracecox/anybadge",
|
url="https://github.com/jongracecox/anybadge",
|
||||||
entry_points={
|
entry_points={
|
||||||
"console_scripts": [
|
"console_scripts": [
|
||||||
|
|||||||
@@ -145,13 +145,13 @@ class TestAnybadge(TestCase):
|
|||||||
|
|
||||||
self.assertNotEqual(badges[0].badge_width, badges[1].badge_width)
|
self.assertNotEqual(badges[0].badge_width, badges[1].badge_width)
|
||||||
|
|
||||||
def test_multiple_badges_get_different_mask_id(self):
|
def test_multiple_badges_get_different_mask(self):
|
||||||
badges = [
|
badges = [
|
||||||
Badge("multiple 1", value="100", value_suffix="%", num_padding_chars=0),
|
Badge("multiple 1", value="100", value_suffix="%", num_padding_chars=0),
|
||||||
Badge("multiple 2", value="1234567890"),
|
Badge("multiple 2", value="1234567890"),
|
||||||
]
|
]
|
||||||
|
|
||||||
self.assertNotEqual(badges[0].mask_id, badges[1].mask_id)
|
self.assertNotEqual(badges[0].mask_str, badges[1].mask_str)
|
||||||
|
|
||||||
def test_integer_str_value_is_handled_as_integer(self):
|
def test_integer_str_value_is_handled_as_integer(self):
|
||||||
badge = Badge("integer", value="1234")
|
badge = Badge("integer", value="1234")
|
||||||
|
|||||||