blob: 6f8e12b3294965ffb179300dce3a2d2e8db541ca [file] [log] [blame]
# Copyright 2021 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import re
import sys
# Python3's unicode class is just 'str'.
STRTYPE = str if sys.version_info >= (3, ) else basestring
class Opacity:
'''A representation of a single color value.
This opacity can be of the following formats:
- 0.5
- $named_opacity
'''
def __init__(self, value=None):
self.var = None
self.a = -1
if value is not None:
self.Parse(value)
if not self.var and self.a == -1:
raise ValueError('Malformed opacity value:' + value)
def Parse(self, value):
if isinstance(value, STRTYPE):
match = re.match('^\$([a-z0-9_]+_opacity)$', value)
if match:
self.var = match.group(1)
return
self.a = float(value)
if not (0 <= self.a <= 1):
raise ValueError('Alpha expected to be between 0 and 1')
def __repr__(self):
return 'var(--%s)' % self.var if self.var else '%g' % self.a