A simple module to handle colors
Project description
colorviews
A module to handle colors.
Inter-convert colors with and without alpha between RGB(A), HSL(A) and HSV(A) color schemes.
- Installation
- Quickstart
- Color objects
- Creating color objects
- Accessing color component values
- AlphaColor objects
- Creating color objects
- Accessing color component values
- Scaling color component values to int equivalent
- Comparing colors
- Duplicating or copying color objects
- Caveats
Installation
Python>=3.6 is needed for colorviews.
Can be installed with pip from PyPI using
pip install tzview
Quickstart
Colors may be represented using Color
(for colors without alpha value) and AlphaColor
(for colors with alpha value) objects.
All colors are stored internally using their RGB(A) values and are converted to other color schemes when needed using appropriate ColorView objects.
ColorViewRGB
: RGB color view forColor
objects.ColorViewHSL
: HSL color view forColor
objects.ColorViewHSV
: HSV color view forColor
objects.ColorViewRGBA
: RGBA color view forAlphaColor
objects.ColorViewHSLA
: HSLA color view forAlphaColor
objects.ColorViewHSVA
: HSVA color view forAlphaColor
objects.
All color component values are handled as float values between and including 0.0 and 1.0.
These float values may be converted to their integer equivalent using scale()
function of the colorviews package.
Color objects
Color
objects can be store colors without alpha value.
Creating Color objects
From color RGB integer value
With Color.from_int(value: int)
.
from colorviews import Color
color = Color.from_int(0xabcdef) # <Color(<Color(0xabcdef)>)>
From color name
With Color.from_name()
.
CSS3 extended color keywords are recognized.
Case of the color name doesn't matter.
from colorviews import Color
color = Color.from_name("darkgrey") # <Color(0xa9a9a9)>
From RGB values
With constructor or Color.from_rgb(r: float, g: float, b: float)
.
from colorviews import Color
color = Color(0.2, 0.4, 0.8) # <Color(0x3366cc)>
color = Color.from_rgb(0.2, 0.4, 0.8) # <Color(0x3366cc)>
From HSL values
With Color.from_hsl(h: float, s: float, l: float)
.
from colorviews import Color
color = Color.from_hsl(0.5, 1.0, 0.52) # <Color(0xaffff)>
From HSV values
With Color.from_hsv(h: float, s: float, v: float)
.
from colorviews import Color
color = Color.from_hsv(0.5, 1.0, 0.52) # <Color(0x8585)>
Accessing color component values
Hex value of color
from colorviews import Color
color = Color.from_int(0xabcdef) # <Color(0xabcdef)>
hex(color) # '0xabcdef'
str(color) # 'abcdef'
RGB color view
RGB color view has the following attributes which may be read or written:
r
: red component of RGB color value.g
: green component of RGB color value.b
: blue component of RGB color value.vals
: red, green and blue components as a tuple.
from colorviews import Color
color = Color.from_int(0xabcdef) # <Color(0xabcdef)>
# Red component
color.rgb.r # 0.6705882352941176
# Green component
color.rgb.g # 0.803921568627451
# Blue component
color.rgb.b # 0.9372549019607843
# All RGB components as a tuple
color.rgb.vals # (0.6705882352941176, 0.803921568627451,
# 0.9372549019607843)
# New red component value
color.rgb.r = 0.52
color.rgb.vals # (0.52, 0.803921568627451, 0.9372549019607843)
# Change all RGB values
color.rgb.vals = (0.25, 0.50, 0.75)
color # <Color(0x4080bf)>
HSL color view
HSL color view has the following attributes which may be read or written:
h
: hue component of HSL color value.s
: saturation component of HSL color value.l
: lightness component of HSL color value.vals
: hue, saturation and lightness components as a tuple.
from colorviews import Color
color = Color.from_int(0xabcdef) # <Color(0xabcdef)>
# Hue component
color.hsl.h # 0.5833333333333334
# Saturation component
color.hsl.s # 0.68
# Lightness component
color.hsl.l # 0.803921568627451
# All HSL components as a tuple
color.hsl.vals # (0.5833333333333334, 0.68, 0.803921568627451)
# New saturation component value
color.hsl.s = 0.87
color.hsl.vals # (0.5833333333333334, 0.8700000000000002, 0.68)
# Change all HSL values
color.hsl.vals = (0.25, 0.50, 0.75)
color # <Color(0xbfdf9f)>
HSV color view
HSV color view has the following attributes which may be read or written:
h
: hue component of HSV color value.s
: saturation component of HSV color value.v
: value component of HSV color value.vals
: hue, saturation and value components as a tuple.
from colorviews import Color
color = Color.from_int(0xabcdef) # <Color(0xabcdef)>
# Hue component
color.hsv.h # 0.5833333333333334
# Saturation component
color.hsv.s # 0.2845188284518829
# Value component
color.hsv.v # 0.9372549019607843
# All HSV components as a tuple
color.hsv.vals
# (0.5833333333333334, 0.2845188284518829, 0.9372549019607843)
# New hue component value
color.hsv.h = 0.82
color.hsv.vals # (0.82, 0.6799999999999992, 0.803921568627451)
# Change all HSV values
color.hsv.vals = (0.25, 0.50, 0.75)
color # <Color(0x8fbf60)>
AlphaColor objects
AlphaColor
objects can be store colors with alpha value.
Creating AlphaColor objects
From color name
With AlphaColor.from_name()
.
from colorviews import AlphaColor
color = AlphaColor.from_name("darkgrey") # <AlphaColor(0xa9a9a900)>
From RGBA values
With the constructor or AlphaColor.from_rgba(r: float, g: float, b: float, a: float)
.
from colorviews import AlphaColor
color = AlphaColor(0.2, 0.4, 0.8, 0.5) # <AlphaColor(0x3366cc80)>
color = AlphaColor.from_rgba(0.2, 0.4, 0.8, 0.75) # <AlphaColor(0x3366ccbf)>
From color RGBA integer value
With AlphaColor.from_int()
.
from colorviews import AlphaColor
color = AlphaColor.from_int(0xabcdef80) # <AlphaColor(0xabcdef80)>
From HSLA values
With AlphaColor.from_hsla(h: float, s: float, l: float, a: float)
.
from colorviews import AlphaColor
color = AlphaColor.from_hsla(0.5, 1.0, 0.52, 0.8) # <AlphaColor(0xaffffcc)>
From HSVA values
With Color.from_hsva(h: float, s: float, v: float, a: float)
.
from colorviews import AlphaColor
color = AlphaColor.from_hsva(0.5, 1.0, 0.52, 0.8) # <AlphaColor(0x8585cc)>
Accessing color component values
Hex value of color
from colorviews import AlphaColor
color = AlphaColor.from_int(0xabcdef80) # <AlphaColor(0xabcdef80)>
hex(color) # '0xabcdef80'
str(color) # 'abcdef80'
RGBA color view
RGBA color view has the following attributes which may be read or written:
r
: red component of RGBA color value.g
: green component of RGBA color value.b
: blue component of RGBA color value.a
: alpha component of RGBA color value.vals
: red, green and blue components as a tuple.
from colorviews import AlphaColor
color = AlphaColor.from_int(0xabcdef80) # <AlphaColor(0xabcdef80)>
# Red component
color.rgba.r # 0.6705882352941176
# Green component
color.rgba.g # 0.803921568627451
# Blue component
color.rgba.b # 0.9372549019607843
# Alpha component
color.rgba.a # 0.5019607843137255
# All RGBA components as a tuple
color.rgba.vals
# (0.6705882352941176, 0.803921568627451, 0.9372549019607843,
# 0.5019607843137255)
# New red component value
color.rgba.r = 0.52
color.rgba.vals # (0.52, 0.803921568627451, 0.9372549019607843)
# Change all RGBA values
color.rgba.vals = (0.25, 0.50, 0.75, 0.2)
color # <AlphaColor(0x4080bf33)>
HSLA color view
HSLA color view has the following attributes which may be read or written:
h
: hue component of HSLA color value.s
: saturation component of HSLA color value.l
: lightness component of HSLA color value.a
: alpha component of HSLA color value.vals
: hue, saturation and lightness components as a tuple.
from colorviews import AlphaColor
color = AlphaColor.from_int(0xabcdef80) # <AlphaColor(0xabcdef80)>
# Hue component
color.hsla.h # 0.5833333333333334
# Saturation component
color.hsla.s # 0.68
# Lightness component
color.hsla.l # 0.803921568627451
# Alpha component
color.hsla.a # 0.5019607843137255
# All HSLA components as a tuple
color.hsla.vals
# (0.5833333333333334, 0.68, 0.803921568627451, 0.5019607843137255)
# New lightness component value
color.hsla.l = 0.24
color.hsla.vals
# (0.5833333333333334, 0.803921568627451, 0.24, 0.5019607843137255)
# Change all HSLA values
color.hsla.vals = (0.25, 0.50, 0.75, 0.2)
color # <AlphaColor(0xbfdf9f33)>
HSVA color view
HSVA color view has the following attributes which may be read or written:
h
: hue component of HSVA color value.s
: saturation component of HSVA color value.v
: value component of HSVA color value.a
: alpha component of HSVA color value.vals
: hue, saturation and value components as a tuple.
from colorviews import AlphaColor
color = AlphaColor.from_int(0xabcdef80) # <AlphaColor(0xabcdef80)>
# Hue component
color.hsva.h # 0.5833333333333334
# Saturation component
color.hsva.s # 0.2845188284518829
# Value component
color.hsva.v # 0.9372549019607843
# Alpha component
color.hsva.a # 0.5019607843137255
# All HSVA components as a tuple
color.hsva.vals
# (0.5833333333333334, 0.2845188284518829, 0.9372549019607843,
# 0.5019607843137255)
# New value (brightness) component value
color.hsva.v = 0.11
color.hsva.vals
# (0.5833333333333334, 0.28451882845188287, 0.11, 0.5019607843137255)
# Change all HSVA values
color.hsva.vals = (0.25, 0.50, 0.75, 0.2)
color # <AlphaColor(0x8fbf6033)>
Scaling color component values to int equivalent
scale()
function may be used to convert the color component values from float values to integer equivalent.
It multiplies a value with another scaling factor and returns this product value rounded off to the closest integer.
For example,
from colorviews import Color, AlphaColor, scale
color = Color.from_int(0xabcdef)
alphacolor = AlphaColor.from_int(0xabcdef80)
# Unsigned integer values: [0.0, 1.0] -> [0, 255]
red = [color.rgb.r, scale(color.rgb.r, 255)]
# [0.6705882352941176, 171]
# Percentage values: [0.0, 1.0] -> [0, 100]
alpha = [alphacolor.hsla.a, scale(alphacolor.hsla.a, 100)]
# [0.5019607843137255, 50]
# Angle value in degrees: [0.0, 1.0] -> [0, 360)
hue = [color.hsv.h, scale(color.hsv.h, 360)]
# [0.5833333333333334, 210]
Comparing colors
Colors can be compared using the usual comparison operators.
Comparions will done based on the integer RGB(A) values.
darkred = Color.from_name("darkred") # <Color(0x8b0000)>
crimson = Color.from_name("crimson") # <Color(0xdc143c)>
crimson < darkred # False
crimson > darkred # True
crimson <= darkred # False
crimson >= darkred # True
crimson == darkred # False
crimson != darkred # True
Likewise with AlphaColor
:
faint_red = AlphaColor.from_name("red", 0.5) # <AlphaColor(0xff000080)>
fainter_red = AlphaColor.from_name("red", 0.2) # <AlphaColor(0xff000033)>
faint_red < fainter_red # False
faint_red > fainter_red # True
But comparison between a Color
object and a AlphaColor
object is not supported. Even when their RGB values match.
red_noalpha = Color.from_name("red") # <Color(0xff0000)>
red_alpha = AlphaColor.from_name("red") # <AlphaColor(0xff0000)>
red_noalpha < red_alpha # Exception!
Duplicating or copying color objects
copy()
method of the color classes can be used to duplicate a color object.
# Duplicating Color objects
color = Color.from_int(0xabcdef) # <Color(0xabcdef)>
color_copy = color.copy()
id(color_copy) != id(color) # True
# Duplicating AlphaColor objects
alphacolor = AlphaColor.from_name("red") # <AlphaColor(0xff0000)>
alphacolor_copy = alphacolor.copy()
id(alphacolor_copy) != id(alphacolor) # True
Caveats
The color component values are stored internally as RGB(A) float values in the [0.0, 1.0] range.
Depending on the way in which the color objects are created, there may be a slight difference in this RGB(A) values.
For example, consider two AlphaColor objects where one as is made using an integer value and the other is made using RGBA values as in
t1=cvs.AlphaColor.from_int(0xffffff80) # <AlphaColor(0xffffff80)>
t2=cvs.AlphaColor.from_rgba(1,1,1,0.5) # <AlphaColor(0xffffff80)>
Both t1
and t2
would have the same integer value.
t1 == t2 # True
But their alpha values would be slighlty different.
t1.rgba.a # 0.5019607843137255
t2.rgba.a # 0.5
This is because the alpha value 0x80 being converted to its float equivalent like
0x80 / 0xff # 0.5019607843137255
Long version
Color objects
Represents colors without alpha value.
Color value is stored internally using RGB color scheme.
class Color(red: float, green: float, blue: float)
Arguments:
r
: Value of red component.g
: Value of green component.b
: Value of blue component.
All arguments must have value between 0.0 and 1.0, inclusive of the limits.
Attributes
rgb
: RGB color view. AColorViewRGB
object.hsl
: HSL color view. AColorViewHSL
object.hsv
: HSV color view. AColorViewHSV
object.
Methods
Color.from_int(value: int)
Create a Color
object using the RGB integer value of the color.
Arguments:
- value: RGB integer value of color
Returns: Color
object whose RGB value is the given integer.
Color.from_name(name: str)
Create a Color
object using the color's name.
CSS3 extended color keywords are recognized.
Case of the color name doesn't matter.
Arguments:
name
: Name of the color
Returns: Color
object for color corresponding to given color name.
Color.from_rgb(r: float, g: float, b: float)
Create a Color
object from RGB values.
Same as using the constructor of Color
.
Arguments:
r
: Value of red component.g
: Value of green component.b
: Value of blue component.
Returns: Color
object of given RGB value.
Color.from_hsl(h: float, s: float, l: float)
Create a Color
object from HSL values.
Arguments:
h
: Value of hue component.s
: Value of saturation component.l
: Value of lightness component.
Returns: Color
object of given HSL value.
Color.from_hsv(h: float, s: float, v: float)
Create a Color
object from HSV values.
Arguments:
h
: Value of hue component.s
: Value of saturation component.v
: Value of the value component.
Returns: Color
object of given HSV value.
Color.copy()
Duplicate the Color
object.
Returns: A separate copy of the Color
object.
AlphaColor objects
Represents colors with alpha value.
Color value is stored internally using RGBA color scheme.
class AlphaColor(red: float, green: float, blue: float, alpha: float)
Arguments:
r
: Value of red componentg
: Value of green componentb
: Value of blue componenta
: Value of alpha component
All arguments must have value between 0.0 and 1.0, inclusive of the limits.
Attributes
rgba
: RGBA color view. AColorViewRGBA
object.hsla
: HSLA color view. AColorViewHSLA
object.hsva
: HSVA color view. AColorViewHSVA
object.
Methods
AlphaColor.from_int(value: int)
Create an AlphaColor
object using the RGBA integer value of the color.
Arguments:
value
: RGBA integer value of color
Returns: AlphaColor
object whose RGBA value is the given integer.
AlphaColor.from_name(name: str, a: float = 0.0)
Create an AlphaColor
object with RGB values of the named color and given alpha value.
Alpha value is 0.0 by default.
CSS3 extended color keywords are recognized.
Case of the color name doesn't matter.
Arguments:
name
: Name of the colora
: Alpha value of the color
Returns: AlphaColor
object for color corresponding to given color name and alpha value.
AlphaColor.from_rgba(r: float, g: float, b: float, a: float)
Create an AlphaColor
object from RGBA values.
Same as using the constructor of AlphaColor
.
Arguments:
r
: Value of red component.g
: Value of green component.b
: Value of blue component.a
: Value of alpha component.
Returns: AlphaColor
object of given RGBA value.
AlphaColor.from_hsla(h: float, s: float, l: float, a: float)
Create an AlphaColor
object from HSLA values.
Arguments:
h
: Value of hue component.s
: Value of saturation component.l
: Value of lightness component.a
: Value of alpha component.
Returns: AlphaColor
object of given HSLA value.
AlphaColor.from_hsva(h: float, s: float, v: float, a: float)
Create an AlphaColor
object from HSVA values.
Arguments:
h
: Value of hue component.s
: Value of saturation component.v
: Value of the value component.a
: Value of alpha component.
Returns: AlphaColor
object of given HSVA value.
AlphaColor.copy()
Duplicate the AlphaColor
object.
Returns: A separate copy of the AlphaColor
object.
ColorViewRGB objects
RGB color view for Color
objects.
class ColorViewRGB(color: Color)
Arguments:
color
:Color
object to be associated with the RGB view
Attributes
r
: Red component of RGB value.g
: Green component of RGB value.b
: Blue component of RGB value.vals
: Red, green and blue component values as a tuple.color
:Color
object associated with the RGB view.
Methods
ColorViewRGB.replace(r: float = None, g: float = None, b: float = None) -> Color
Creates a new Color
object by replacing RGB components of the Color
object associated with the RGB color view.
Arguments:
r
: New value for red component.g
: New value for green component.b
: New value for blue component.
Returns: A new Color
object made by replacing RGB components of the Color
object with given values.
ColorViewHSL objects
HSL color view for Color
objects.
class ColorViewHSL(color: Color)
Arguments:
color
:Color
object to be associated with the HSL view.
Attributes
h
: Hue component of HSL value.s
: Saturation component of HSL value.l
: Lightness component of HSL value.vals
: Hue, saturation and lightness component values as a tuple.color
:Color
object associated with the HSL view.
Methods
ColorViewHSL.replace(h: float = None, s: float = None, l: float = None) -> Color
Creates a new Color
object by replacing HSL components of the Color
object associated with the HSL color view.
Arguments:
h
: New value for hue component.s
: New value for saturation component.l
: New value for lightness component.
Returns: A new Color
object made by replacing HSL components of the Color
object with given values.
ColorViewHSV objects
HSV color view for Color
objects.
class ColorViewHSV(color: Color)
Arguments:
color
:Color
object to be associated with the HSV view.
Attributes
h
: Hue component of HSV value.s
: Saturation component of HSV value.v
: Value component of HSV value.vals
: Hue, saturation and value component values as a tuple.color
:Color
object associated with the HSV view.
Methods
ColorViewHSV.replace(h: float = None, s: float = None, v: float = None) -> Color
Creates a new Color
object by replacing HSV components of the Color
object associated with the HSV color view.
Arguments:
h
: New value for hue component.s
: New value for saturation component.v
: New value for value component.
Returns: A new Color
object made by replacing HSV components of the Color
object with given values.
ColorViewRGBA objects
RGBA color view for AlphaColor
objects.
class ColorViewRGBA(color: AlphaColor)
Arguments:
color
:AlphaColor
object to be associated with the RGBA view
Attributes
r
: Red component of RGBA value.g
: Green component of RGBA value.b
: Blue component of RGBA value.a
: Alpha component of RGBA value.vals
: Red, green and blue component values as a tuple.color
:AlphaColor
object associated with the RGBA view.
Methods
ColorViewRGBA.replace(r: float = None, g: float = None, b: float = None, a: float = None) -> AlphaColor
Creates a new AlphaColor
object by replacing RGBA components of the AlphaColor
object associated with the RGBA color view.
Arguments:
r
: New value for red component.g
: New value for green component.b
: New value for blue component.a
: New value for alpha component.
Returns: A new AlphaColor
object made by replacing RGBA components of the AlphaColor
object with given values.
ColorViewHSLA objects
HSLA color view for AlphaColor
objects.
class ColorViewHSLA(color: AlphaColor)
Arguments:
color
:AlphaColor
object to be associated with the HSLA view.
Attributes
h
: Hue component of HSLA value.s
: Saturation component of HSLA value.l
: Lightness component of HSLA value.a
: Alpha component of HSLA value.vals
: Hue, saturation and lightness component values as a tuple.color
:AlphaColor
object associated with the HSLA view.
Methods
ColorViewHSLA.replace(h: float = None, s: float = None, l: float = None, a: float = None) -> AlphaColor
Creates a new AlphaColor
object by replacing HSLA components of the AlphaColor
object associated with the HSLA color view.
Arguments:
h
: New value for hue component.s
: New value for saturation component.l
: New value for lightness component.a
: New value for alpha component.
Returns: A new AlphaColor
object made by replacing HSLA components of the AlphaColor
object with given values.
ColorViewHSVA objects
HSVA color view for AlphaColor
objects.
class ColorViewHSVA(color: AlphaColor)
Arguments:
color
:AlphaColor
object to be associated with the HSVA view.
Attributes
h
: Hue component of HSVA value.s
: Saturation component of HSVA value.v
: Lightness component of HSVA value.a
: Alpha component of HSVA value.vals
: Hue, saturation and lightness component values as a tuple.color
:AlphaColor
object associated with the HSVA view.
Methods
ColorViewHSVA.replace(h: float = None, s: float = None, v: float = None, a: float = None) -> AlphaColor
Creates a new AlphaColor
object by replacing HSVA components of the AlphaColor
object associated with the HSVA color view.
Arguments:
h
: New value for hue component.s
: New value for saturation component.v
: New value for value component.a
: New value for alpha component.
Returns: A new AlphaColor
object made by replacing HSVA components of the AlphaColor
object with given values.
Scaling float values to integers
scale(val: float, multiplier: int) -> int
Scales a value by a factor.
Multiplies a value with a scaling factor and returns the product value rounded off to the closest integer.
Arguments:
val
: Value to be scaled.factor
: Scaling factor.
Returns: Integer closest to the product of val
and factor
.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file colorviews-0.1a1.tar.gz
.
File metadata
- Download URL: colorviews-0.1a1.tar.gz
- Upload date:
- Size: 22.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/3.7.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.7.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7aec1a4459e0281be011946415b2e95c72b319bcfc8eec540627493d12797ea1 |
|
MD5 | 28d73b5906e07e91b96b02d1ff0d4185 |
|
BLAKE2b-256 | d558243712721e5866a44ae216d14b3a5fe9af9925325790d30f93a6cb0966ec |
File details
Details for the file colorviews-0.1a1-py3-none-any.whl
.
File metadata
- Download URL: colorviews-0.1a1-py3-none-any.whl
- Upload date:
- Size: 12.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/3.7.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.7.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 752c120ac18470dff76b0c44c696d8a979980b1a26bad6d5aaecda91976ebe6c |
|
MD5 | 21c3724ef2226371ce26b8ae4f307fca |
|
BLAKE2b-256 | 0dd5841c1cfbc97f1980170579fa31a321765c0661165e2e6c7c531804cd562e |