color

3.0.0

A simple Dart package exposing a Color class which can be used to create, convert, alter, and compare colors in a variety of colorspaces.

Download archive

Readme

Color

A simple Dart package exposing a Color class which can be used to create, convert, and compare colors.

Installation

  1. Add this to your package's pubspec.yaml file:
dependencies:
  color: any
  1. Get the package using your IDE's GUI or via command line with
$ pub get
  1. Import the color.dart file 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 color
pubspec.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

VersionPublishedArchiveSHA-256
0.1.0On demandDownloadca77b603…377f7b
0.2.0On demandDownload93723c23…f40bb1
0.3.0On demandDownloada7f746ab…85ba46
0.3.1On demandDownload0c3ca276…5f678d
1.2.0On demandDownloada6d4183b…e25c9f
1.3.0On demandDownloadb9ac3813…cb874b
2.0.0On demandDownloadec2a67c9…5f286f
2.0.1On demandDownload81730e97…a66a4b
2.0.2On demandDownload2bda1e06…b03c67
2.1.1On demandDownload45950fb2…4fbb50
3.0.0Cached · Upstream SHA-256 matchedDownloadddcdf1b3…5725cb

Dependencies

No direct dependencies declared.