color
3.0.0A simple Dart package exposing a Color class which can be used to create, convert, alter, and compare colors in a variety of colorspaces.
Readme
Color
A simple Dart package exposing a Color class which can be used to create, convert, and compare colors.
Installation
- Add this to your package's
pubspec.yamlfile:
dependencies:
color: any
- Get the package using your IDE's GUI or via command line with
$ pub get
- Import the
color.dartfile in your app
import 'package:color/color.dart';
Usage
Color objects can be constructed using any of a few available constructors.
To create a color from rgb values, call
Color rgbColor = new Color.rgb(192, 255, 238);
RgbColor rgbColor = new RgbColor(192, 255, 238);
Alternatively, a color can be created directly in a number of other color spaces.
RgbColor rgb = new RgbColor(192, 255, 238);
HexColor hex = new HexColor('c0ffee');
HslColor hsl = new HslColor(163.8, 100, 87.6);
XyzColor xyz = new XyzColor(72.931, 88.9, 94.204);
CielabColor cielab = new CielabColor(95.538, -23.02, 1.732);
Colors are immutable, and can be created using const constructors.
RgbColor rgb = const RgbColor(192, 255, 238);
Colors can be created directly from CSS3 color names.
RgbColor black = new RgbColor.name('black'); //factory constructor that returns a const RgbColor
RgbColor white = RgbColor.namedColors['black']; //directly reference the const RgbColor without the factory
Colors implementing the CssColorSpace interface can output a css string representation.
RgbColor rgb = new RgbColor(192, 255, 238);
HexColor hex = new HexColor('c0ffee');
HslColor hsl = new HslColor(163.8, 100, 87.6);
assert(rgb is CssColorSpace, true);
assert(hex is CssColorSpace, true);
assert(hsl is CssColorSpace, true);
print(rgb.toCssString()); //rgb(192, 255, 238)
print(hex.toCssString()); //#c0ffee
print(hsl.toCssString()); //hsl(163.8, 100.0%, 87.6%)
Colors can be compared using the == operator, which will evaluate to true if the two colors share identical rgb values after being rounded to integers.
assert(new Color.hex('c0ffee') == new Color.hex('c0ffee'));
assert(new Color.rgb('192, 255, 238') == new Color.hex('c0ffee'));
Colors can be converted from one color space to another by calling the appropriate toXXXColor method on them.
HslColor hsl = new RgbColor(192, 255, 238).toHslColor();
Colors can be altered using a ColorFilter, which will return a new color in the same color space as the input color with that filter applied to it.
RgbColor grey = ColorFilter.greyscale(new RgbColor(192, 255, 238));
HslColor sepia = ColorFilter.sepia(new HslColor(163.8, 100, 87.6));
Changelog
0.1.0
- Creation of the Color class supporting rgb colors.
0.2.0
- Added hex support and conversion functions.
0.3.0
- Added hsl support and conversion functions.
0.3.1
- Resolved bug where Color.toHexString() was not prepending each byte with 0s as appropriate.
- Added Color.toRgbString() as an alias for Color.toSting().
1.0.0
- Major refactor which will break code using earlier versions.
- Refactored to pull each color space into its own subclass extending a base Color class.
1.1.0
- Added XYZ color space support with bidirectional conversions between XYZ and RGB color spaces.
1.2.0
- Added CIELAB color space support with bidirectional conversions with the XYZ color space (and the RGB color space using XYZ as an intermediary).
1.3.0
- Added toXXXColor() conversion methods for all possible color space transitions.
- Added Color.clone() method to make a copy of a Color object.
- Added toCssString() method to RGB, Hex, and HSL colors for easier use with CSS.
- Added ColorFilters to alter colors according to various filtering rules.
- Added a demo page to test the package and see the effect of filters.
2.0.0
- Color and all subclasses now implement a const constructor.
- Colors are no longer mutable, and all conversion and filter methods return new Color objects.
- Removed the Color.clone() method (this was only generally useful when Colors were mutable).
- Adjusted the greyscale and invert ColorFilters to use the CIELAB color space, giving better results.
- Added a lighten and darken ColorFilter.
- Added an RgbColor.name() constructor to create colors by CSS3 name.
- Added a Color.toHexColor() method for easier conversion to the HexColor class.
- Added a CssColorSpace interface for the color spaces which have representation in the CSS standard (RGB, HEX, and HSL).
2.0.1
- Removed a switch statement that was preventing dart2js compilation.
2.2.0
- Added hsv support and conversion functions.
2.2.1
- Added pedantic analysis options and updated code to resolve warnings raised by it.
- Renamed changelog so that pub can see it properly.
3.0.0
- Updated code for null safety.
Installing
export PUB_HOSTED_URL=https://pub.mirror.p-hatan.com
flutter pub add colorpubspec.yaml
name: color
version: 3.0.0
description: A simple Dart package exposing a Color class which can be used to create, convert, alter, and compare colors in a variety of colorspaces.
authors:
- Michael Fenwick <mike@mikefenwick.com>
homepage: https://github.com/MichaelFenwick/Color
environment:
sdk: '>=2.12.0 <3.0.0'
dev_dependencies:
build_runner: ^1.6.2
build_web_compilers: ^2.12.0
pedantic: ^1.11.0
test: ^1.16.5
Version history
| Version | Published | Archive | SHA-256 |
|---|---|---|---|
| 0.1.0 | On demand | Download | ca77b603…377f7b |
| 0.2.0 | On demand | Download | 93723c23…f40bb1 |
| 0.3.0 | On demand | Download | a7f746ab…85ba46 |
| 0.3.1 | On demand | Download | 0c3ca276…5f678d |
| 1.2.0 | On demand | Download | a6d4183b…e25c9f |
| 1.3.0 | On demand | Download | b9ac3813…cb874b |
| 2.0.0 | On demand | Download | ec2a67c9…5f286f |
| 2.0.1 | On demand | Download | 81730e97…a66a4b |
| 2.0.2 | On demand | Download | 2bda1e06…b03c67 |
| 2.1.1 | On demand | Download | 45950fb2…4fbb50 |
| 3.0.0 | Cached · Upstream SHA-256 matched | Download | ddcdf1b3…5725cb |
Dependencies
No direct dependencies declared.