Showing
6 changed files
with
182 additions
and
85 deletions
| @@ -17,13 +17,17 @@ | @@ -17,13 +17,17 @@ | ||
| 17 | part of pdf; | 17 | part of pdf; |
| 18 | 18 | ||
| 19 | class PdfColor { | 19 | class PdfColor { |
| 20 | - const PdfColor(this.r, this.g, this.b, [this.a = 1.0]); | 20 | + const PdfColor(this.red, this.green, this.blue, [this.alpha = 1.0]) |
| 21 | + : assert(red >= 0 && red <= 1), | ||
| 22 | + assert(green >= 0 && green <= 1), | ||
| 23 | + assert(blue >= 0 && blue <= 1), | ||
| 24 | + assert(alpha >= 0 && alpha <= 1); | ||
| 21 | 25 | ||
| 22 | const PdfColor.fromInt(int color) | 26 | const PdfColor.fromInt(int color) |
| 23 | - : r = (color >> 16 & 0xff) / 255.0, | ||
| 24 | - g = (color >> 8 & 0xff) / 255.0, | ||
| 25 | - b = (color & 0xff) / 255.0, | ||
| 26 | - a = (color >> 24 & 0xff) / 255.0; | 27 | + : red = (color >> 16 & 0xff) / 255.0, |
| 28 | + green = (color >> 8 & 0xff) / 255.0, | ||
| 29 | + blue = (color & 0xff) / 255.0, | ||
| 30 | + alpha = (color >> 24 & 0xff) / 255.0; | ||
| 27 | 31 | ||
| 28 | factory PdfColor.fromHex(String color) { | 32 | factory PdfColor.fromHex(String color) { |
| 29 | if (color.startsWith('#')) { | 33 | if (color.startsWith('#')) { |
| @@ -36,73 +40,30 @@ class PdfColor { | @@ -36,73 +40,30 @@ class PdfColor { | ||
| 36 | (int.parse(color.substring(6, 7), radix: 16) >> 24 & 0xff) / 255.0); | 40 | (int.parse(color.substring(6, 7), radix: 16) >> 24 & 0xff) / 255.0); |
| 37 | } | 41 | } |
| 38 | 42 | ||
| 39 | - final double a; | ||
| 40 | - final double r; | ||
| 41 | - final double g; | ||
| 42 | - final double b; | ||
| 43 | - | ||
| 44 | - @deprecated | ||
| 45 | - static const PdfColor black = PdfColors.black; | ||
| 46 | - @deprecated | ||
| 47 | - static const PdfColor white = PdfColors.white; | ||
| 48 | - @deprecated | ||
| 49 | - static const PdfColor red = PdfColors.red; | ||
| 50 | - @deprecated | ||
| 51 | - static const PdfColor pink = PdfColors.pink; | ||
| 52 | - @deprecated | ||
| 53 | - static const PdfColor purple = PdfColors.purple; | ||
| 54 | - @deprecated | ||
| 55 | - static const PdfColor deepPurple = PdfColors.deepPurple; | ||
| 56 | - @deprecated | ||
| 57 | - static const PdfColor indigo = PdfColors.indigo; | ||
| 58 | - @deprecated | ||
| 59 | - static const PdfColor blue = PdfColors.blue; | ||
| 60 | - @deprecated | ||
| 61 | - static const PdfColor lightBlue = PdfColors.lightBlue; | ||
| 62 | - @deprecated | ||
| 63 | - static const PdfColor cyan = PdfColors.cyan; | ||
| 64 | - @deprecated | ||
| 65 | - static const PdfColor teal = PdfColors.teal; | ||
| 66 | - @deprecated | ||
| 67 | - static const PdfColor green = PdfColors.green; | ||
| 68 | - @deprecated | ||
| 69 | - static const PdfColor lightGreen = PdfColors.lightGreen; | ||
| 70 | - @deprecated | ||
| 71 | - static const PdfColor lime = PdfColors.lime; | ||
| 72 | - @deprecated | ||
| 73 | - static const PdfColor yellow = PdfColors.yellow; | ||
| 74 | - @deprecated | ||
| 75 | - static const PdfColor amber = PdfColors.amber; | ||
| 76 | - @deprecated | ||
| 77 | - static const PdfColor orange = PdfColors.orange; | ||
| 78 | - @deprecated | ||
| 79 | - static const PdfColor deepOrange = PdfColors.deepOrange; | ||
| 80 | - @deprecated | ||
| 81 | - static const PdfColor brown = PdfColors.brown; | ||
| 82 | - @deprecated | ||
| 83 | - static const PdfColor grey = PdfColors.grey; | ||
| 84 | - @deprecated | ||
| 85 | - static const PdfColor blueGrey = PdfColors.blueGrey; | 43 | + final double alpha; |
| 44 | + final double red; | ||
| 45 | + final double green; | ||
| 46 | + final double blue; | ||
| 86 | 47 | ||
| 87 | int toInt() => | 48 | int toInt() => |
| 88 | - ((((a * 255.0).round() & 0xff) << 24) | | ||
| 89 | - (((r * 255.0).round() & 0xff) << 16) | | ||
| 90 | - (((g * 255.0).round() & 0xff) << 8) | | ||
| 91 | - (((b * 255.0).round() & 0xff) << 0)) & | 49 | + ((((alpha * 255.0).round() & 0xff) << 24) | |
| 50 | + (((red * 255.0).round() & 0xff) << 16) | | ||
| 51 | + (((green * 255.0).round() & 0xff) << 8) | | ||
| 52 | + (((blue * 255.0).round() & 0xff) << 0)) & | ||
| 92 | 0xFFFFFFFF; | 53 | 0xFFFFFFFF; |
| 93 | 54 | ||
| 94 | String toHex() => '#' + toInt().toRadixString(16); | 55 | String toHex() => '#' + toInt().toRadixString(16); |
| 95 | 56 | ||
| 96 | PdfColorCmyk toCmyk() { | 57 | PdfColorCmyk toCmyk() { |
| 97 | - return PdfColorCmyk.fromRgb(r, g, b, a); | 58 | + return PdfColorCmyk.fromRgb(red, green, blue, alpha); |
| 98 | } | 59 | } |
| 99 | 60 | ||
| 100 | PdfColorHsv toHsv() { | 61 | PdfColorHsv toHsv() { |
| 101 | - return PdfColorHsv.fromRgb(r, g, b, a); | 62 | + return PdfColorHsv.fromRgb(red, green, blue, alpha); |
| 102 | } | 63 | } |
| 103 | 64 | ||
| 104 | PdfColorHsl toHsl() { | 65 | PdfColorHsl toHsl() { |
| 105 | - return PdfColorHsl.fromRgb(r, g, b, a); | 66 | + return PdfColorHsl.fromRgb(red, green, blue, alpha); |
| 106 | } | 67 | } |
| 107 | 68 | ||
| 108 | static double _linearizeColorComponent(double component) { | 69 | static double _linearizeColorComponent(double component) { |
| @@ -113,35 +74,50 @@ class PdfColor { | @@ -113,35 +74,50 @@ class PdfColor { | ||
| 113 | } | 74 | } |
| 114 | 75 | ||
| 115 | double get luminance { | 76 | double get luminance { |
| 116 | - final double R = _linearizeColorComponent(r); | ||
| 117 | - final double G = _linearizeColorComponent(g); | ||
| 118 | - final double B = _linearizeColorComponent(b); | 77 | + final double R = _linearizeColorComponent(red); |
| 78 | + final double G = _linearizeColorComponent(green); | ||
| 79 | + final double B = _linearizeColorComponent(blue); | ||
| 119 | return 0.2126 * R + 0.7152 * G + 0.0722 * B; | 80 | return 0.2126 * R + 0.7152 * G + 0.0722 * B; |
| 120 | } | 81 | } |
| 121 | 82 | ||
| 83 | + /// Get a complementary color with hue shifted by -120° | ||
| 84 | + PdfColor get complementary => toHsv().complementary; | ||
| 85 | + | ||
| 86 | + /// Get some similar colors | ||
| 87 | + List<PdfColor> get monochromatic => toHsv().monochromatic; | ||
| 88 | + | ||
| 89 | + List<PdfColor> get splitcomplementary => toHsv().splitcomplementary; | ||
| 90 | + | ||
| 91 | + List<PdfColor> get tetradic => toHsv().tetradic; | ||
| 92 | + | ||
| 93 | + List<PdfColor> get triadic => toHsv().triadic; | ||
| 94 | + | ||
| 95 | + List<PdfColor> get analagous => toHsv().analagous; | ||
| 96 | + | ||
| 122 | @override | 97 | @override |
| 123 | - String toString() => '$runtimeType($r, $g, $b, $a)'; | 98 | + String toString() => '$runtimeType($red, $green, $blue, $alpha)'; |
| 124 | } | 99 | } |
| 125 | 100 | ||
| 126 | class PdfColorCmyk extends PdfColor { | 101 | class PdfColorCmyk extends PdfColor { |
| 127 | - const PdfColorCmyk(this.c, this.m, this.y, this.k, [double a = 1.0]) | ||
| 128 | - : super((1.0 - c) * (1.0 - k), (1.0 - m) * (1.0 - k), | ||
| 129 | - (1.0 - y) * (1.0 - k), a); | 102 | + const PdfColorCmyk(this.cyan, this.magenta, this.yellow, this.black, |
| 103 | + [double a = 1.0]) | ||
| 104 | + : super((1.0 - cyan) * (1.0 - black), (1.0 - magenta) * (1.0 - black), | ||
| 105 | + (1.0 - yellow) * (1.0 - black), a); | ||
| 130 | 106 | ||
| 131 | const PdfColorCmyk.fromRgb(double r, double g, double b, [double a = 1.0]) | 107 | const PdfColorCmyk.fromRgb(double r, double g, double b, [double a = 1.0]) |
| 132 | - : k = 1.0 - r > g ? r : g > b ? r > g ? r : g : b, | ||
| 133 | - c = (1.0 - r - (1.0 - r > g ? r : g > b ? r > g ? r : g : b)) / | 108 | + : black = 1.0 - r > g ? r : g > b ? r > g ? r : g : b, |
| 109 | + cyan = (1.0 - r - (1.0 - r > g ? r : g > b ? r > g ? r : g : b)) / | ||
| 134 | (1.0 - (1.0 - r > g ? r : g > b ? r > g ? r : g : b)), | 110 | (1.0 - (1.0 - r > g ? r : g > b ? r > g ? r : g : b)), |
| 135 | - m = (1.0 - g - (1.0 - r > g ? r : g > b ? r > g ? r : g : b)) / | 111 | + magenta = (1.0 - g - (1.0 - r > g ? r : g > b ? r > g ? r : g : b)) / |
| 136 | (1.0 - (1.0 - r > g ? r : g > b ? r > g ? r : g : b)), | 112 | (1.0 - (1.0 - r > g ? r : g > b ? r > g ? r : g : b)), |
| 137 | - y = (1.0 - b - (1.0 - r > g ? r : g > b ? r > g ? r : g : b)) / | 113 | + yellow = (1.0 - b - (1.0 - r > g ? r : g > b ? r > g ? r : g : b)) / |
| 138 | (1.0 - (1.0 - r > g ? r : g > b ? r > g ? r : g : b)), | 114 | (1.0 - (1.0 - r > g ? r : g > b ? r > g ? r : g : b)), |
| 139 | super(r, g, b, a); | 115 | super(r, g, b, a); |
| 140 | 116 | ||
| 141 | - final double c; | ||
| 142 | - final double m; | ||
| 143 | - final double y; | ||
| 144 | - final double k; | 117 | + final double cyan; |
| 118 | + final double magenta; | ||
| 119 | + final double yellow; | ||
| 120 | + final double black; | ||
| 145 | 121 | ||
| 146 | @override | 122 | @override |
| 147 | PdfColorCmyk toCmyk() { | 123 | PdfColorCmyk toCmyk() { |
| @@ -149,7 +125,7 @@ class PdfColorCmyk extends PdfColor { | @@ -149,7 +125,7 @@ class PdfColorCmyk extends PdfColor { | ||
| 149 | } | 125 | } |
| 150 | 126 | ||
| 151 | @override | 127 | @override |
| 152 | - String toString() => '$runtimeType($c, $m, $y, $k, $a)'; | 128 | + String toString() => '$runtimeType($cyan, $magenta, $yellow, $black, $alpha)'; |
| 153 | } | 129 | } |
| 154 | 130 | ||
| 155 | double _getHue( | 131 | double _getHue( |
| @@ -170,6 +146,9 @@ double _getHue( | @@ -170,6 +146,9 @@ double _getHue( | ||
| 170 | return hue; | 146 | return hue; |
| 171 | } | 147 | } |
| 172 | 148 | ||
| 149 | +/// Same as HSB, Cylindrical geometries with hue, their angular dimension, | ||
| 150 | +/// starting at the red primary at 0°, passing through the green primary | ||
| 151 | +/// at 120° and the blue primary at 240°, and then wrapping back to red at 360° | ||
| 173 | class PdfColorHsv extends PdfColor { | 152 | class PdfColorHsv extends PdfColor { |
| 174 | factory PdfColorHsv(double hue, double saturation, double value, | 153 | factory PdfColorHsv(double hue, double saturation, double value, |
| 175 | [double alpha = 1.0]) { | 154 | [double alpha = 1.0]) { |
| @@ -213,7 +192,10 @@ class PdfColorHsv extends PdfColor { | @@ -213,7 +192,10 @@ class PdfColorHsv extends PdfColor { | ||
| 213 | 192 | ||
| 214 | const PdfColorHsv._(this.hue, this.saturation, this.value, double red, | 193 | const PdfColorHsv._(this.hue, this.saturation, this.value, double red, |
| 215 | double green, double blue, double alpha) | 194 | double green, double blue, double alpha) |
| 216 | - : super(red, green, blue, alpha); | 195 | + : assert(hue >= 0 && hue < 360), |
| 196 | + assert(saturation >= 0 && saturation <= 1), | ||
| 197 | + assert(value >= 0 && value <= 1), | ||
| 198 | + super(red, green, blue, alpha); | ||
| 217 | 199 | ||
| 218 | factory PdfColorHsv.fromRgb(double red, double green, double blue, | 200 | factory PdfColorHsv.fromRgb(double red, double green, double blue, |
| 219 | [double alpha]) { | 201 | [double alpha]) { |
| @@ -227,8 +209,13 @@ class PdfColorHsv extends PdfColor { | @@ -227,8 +209,13 @@ class PdfColorHsv extends PdfColor { | ||
| 227 | return PdfColorHsv._(hue, saturation, max, red, green, blue, alpha); | 209 | return PdfColorHsv._(hue, saturation, max, red, green, blue, alpha); |
| 228 | } | 210 | } |
| 229 | 211 | ||
| 212 | + /// Angular position the colorspace coordinate diagram in degrees from 0° to 360° | ||
| 230 | final double hue; | 213 | final double hue; |
| 214 | + | ||
| 215 | + /// Saturation of the color | ||
| 231 | final double saturation; | 216 | final double saturation; |
| 217 | + | ||
| 218 | + /// Brightness | ||
| 232 | final double value; | 219 | final double value; |
| 233 | 220 | ||
| 234 | @override | 221 | @override |
| @@ -236,8 +223,59 @@ class PdfColorHsv extends PdfColor { | @@ -236,8 +223,59 @@ class PdfColorHsv extends PdfColor { | ||
| 236 | return this; | 223 | return this; |
| 237 | } | 224 | } |
| 238 | 225 | ||
| 226 | + /// Get a complementary color with hue shifted by -120° | ||
| 227 | + @override | ||
| 228 | + PdfColorHsv get complementary => | ||
| 229 | + PdfColorHsv((hue - 120) % 360, saturation, value, alpha); | ||
| 230 | + | ||
| 231 | + /// Get a similar color | ||
| 232 | + @override | ||
| 233 | + List<PdfColorHsv> get monochromatic => <PdfColorHsv>[ | ||
| 234 | + PdfColorHsv( | ||
| 235 | + hue, | ||
| 236 | + (saturation > 0.5 ? saturation - 0.2 : saturation + 0.2) | ||
| 237 | + .clamp(0, 1), | ||
| 238 | + (value > 0.5 ? value - 0.1 : value + 0.1).clamp(0, 1)), | ||
| 239 | + PdfColorHsv( | ||
| 240 | + hue, | ||
| 241 | + (saturation > 0.5 ? saturation - 0.4 : saturation + 0.4) | ||
| 242 | + .clamp(0, 1), | ||
| 243 | + (value > 0.5 ? value - 0.2 : value + 0.2).clamp(0, 1)), | ||
| 244 | + PdfColorHsv( | ||
| 245 | + hue, | ||
| 246 | + (saturation > 0.5 ? saturation - 0.15 : saturation + 0.15) | ||
| 247 | + .clamp(0, 1), | ||
| 248 | + (value > 0.5 ? value - 0.05 : value + 0.05).clamp(0, 1)) | ||
| 249 | + ]; | ||
| 250 | + | ||
| 251 | + /// Get two complementary colors with hue shifted by -120° | ||
| 252 | + @override | ||
| 253 | + List<PdfColorHsv> get splitcomplementary => <PdfColorHsv>[ | ||
| 254 | + PdfColorHsv((hue - 150) % 360, saturation, value, alpha), | ||
| 255 | + PdfColorHsv((hue - 180) % 360, saturation, value, alpha), | ||
| 256 | + ]; | ||
| 257 | + | ||
| 258 | + @override | ||
| 259 | + List<PdfColorHsv> get triadic => <PdfColorHsv>[ | ||
| 260 | + PdfColorHsv((hue + 80) % 360, saturation, value, alpha), | ||
| 261 | + PdfColorHsv((hue - 120) % 360, saturation, value, alpha), | ||
| 262 | + ]; | ||
| 263 | + | ||
| 264 | + @override | ||
| 265 | + List<PdfColorHsv> get tetradic => <PdfColorHsv>[ | ||
| 266 | + PdfColorHsv((hue + 120) % 360, saturation, value, alpha), | ||
| 267 | + PdfColorHsv((hue - 150) % 360, saturation, value, alpha), | ||
| 268 | + PdfColorHsv((hue + 60) % 360, saturation, value, alpha), | ||
| 269 | + ]; | ||
| 270 | + | ||
| 271 | + @override | ||
| 272 | + List<PdfColorHsv> get analagous => <PdfColorHsv>[ | ||
| 273 | + PdfColorHsv((hue + 30) % 360, saturation, value, alpha), | ||
| 274 | + PdfColorHsv((hue - 20) % 360, saturation, value, alpha), | ||
| 275 | + ]; | ||
| 276 | + | ||
| 239 | @override | 277 | @override |
| 240 | - String toString() => '$runtimeType($hue, $saturation, $value, $a)'; | 278 | + String toString() => '$runtimeType($hue, $saturation, $value, $alpha)'; |
| 241 | } | 279 | } |
| 242 | 280 | ||
| 243 | class PdfColorHsl extends PdfColor { | 281 | class PdfColorHsl extends PdfColor { |
| @@ -309,5 +347,5 @@ class PdfColorHsl extends PdfColor { | @@ -309,5 +347,5 @@ class PdfColorHsl extends PdfColor { | ||
| 309 | } | 347 | } |
| 310 | 348 | ||
| 311 | @override | 349 | @override |
| 312 | - String toString() => '$runtimeType($hue, $saturation, $lightness, $a)'; | 350 | + String toString() => '$runtimeType($hue, $saturation, $lightness, $alpha)'; |
| 313 | } | 351 | } |
| @@ -107,13 +107,59 @@ class PDFColor extends PdfColor { | @@ -107,13 +107,59 @@ class PDFColor extends PdfColor { | ||
| 107 | 107 | ||
| 108 | factory PDFColor.fromInt(int color) { | 108 | factory PDFColor.fromInt(int color) { |
| 109 | final PdfColor c = PdfColor.fromInt(color); | 109 | final PdfColor c = PdfColor.fromInt(color); |
| 110 | - return PDFColor(c.r, c.g, c.b, c.a); | 110 | + return PDFColor(c.red, c.green, c.blue, c.alpha); |
| 111 | } | 111 | } |
| 112 | 112 | ||
| 113 | factory PDFColor.fromHex(String color) { | 113 | factory PDFColor.fromHex(String color) { |
| 114 | final PdfColor c = PdfColor.fromHex(color); | 114 | final PdfColor c = PdfColor.fromHex(color); |
| 115 | - return PDFColor(c.r, c.g, c.b, c.a); | 115 | + return PDFColor(c.red, c.green, c.blue, c.alpha); |
| 116 | } | 116 | } |
| 117 | + | ||
| 118 | + @deprecated | ||
| 119 | + static const PdfColor black = PdfColors.black; | ||
| 120 | + @deprecated | ||
| 121 | + static const PdfColor white = PdfColors.white; | ||
| 122 | + @deprecated | ||
| 123 | + static const PdfColor pink = PdfColors.pink; | ||
| 124 | + @deprecated | ||
| 125 | + static const PdfColor purple = PdfColors.purple; | ||
| 126 | + @deprecated | ||
| 127 | + static const PdfColor deepPurple = PdfColors.deepPurple; | ||
| 128 | + @deprecated | ||
| 129 | + static const PdfColor indigo = PdfColors.indigo; | ||
| 130 | + @deprecated | ||
| 131 | + static const PdfColor lightBlue = PdfColors.lightBlue; | ||
| 132 | + @deprecated | ||
| 133 | + static const PdfColor cyan = PdfColors.cyan; | ||
| 134 | + @deprecated | ||
| 135 | + static const PdfColor teal = PdfColors.teal; | ||
| 136 | + @deprecated | ||
| 137 | + static const PdfColor lightGreen = PdfColors.lightGreen; | ||
| 138 | + @deprecated | ||
| 139 | + static const PdfColor lime = PdfColors.lime; | ||
| 140 | + @deprecated | ||
| 141 | + static const PdfColor yellow = PdfColors.yellow; | ||
| 142 | + @deprecated | ||
| 143 | + static const PdfColor amber = PdfColors.amber; | ||
| 144 | + @deprecated | ||
| 145 | + static const PdfColor orange = PdfColors.orange; | ||
| 146 | + @deprecated | ||
| 147 | + static const PdfColor deepOrange = PdfColors.deepOrange; | ||
| 148 | + @deprecated | ||
| 149 | + static const PdfColor brown = PdfColors.brown; | ||
| 150 | + @deprecated | ||
| 151 | + static const PdfColor grey = PdfColors.grey; | ||
| 152 | + @deprecated | ||
| 153 | + static const PdfColor blueGrey = PdfColors.blueGrey; | ||
| 154 | + | ||
| 155 | + @deprecated | ||
| 156 | + double get r => red; | ||
| 157 | + | ||
| 158 | + @deprecated | ||
| 159 | + double get g => green; | ||
| 160 | + | ||
| 161 | + @deprecated | ||
| 162 | + double get b => blue; | ||
| 117 | } | 163 | } |
| 118 | 164 | ||
| 119 | @deprecated | 165 | @deprecated |
| @@ -212,10 +212,11 @@ class PdfGraphics { | @@ -212,10 +212,11 @@ class PdfGraphics { | ||
| 212 | /// @param c Color to use | 212 | /// @param c Color to use |
| 213 | void setFillColor(PdfColor color) { | 213 | void setFillColor(PdfColor color) { |
| 214 | if (color is PdfColorCmyk) { | 214 | if (color is PdfColorCmyk) { |
| 215 | - buf.putNumList(<double>[color.c, color.m, color.y, color.k]); | 215 | + buf.putNumList( |
| 216 | + <double>[color.cyan, color.magenta, color.yellow, color.black]); | ||
| 216 | buf.putString(' k\n'); | 217 | buf.putString(' k\n'); |
| 217 | } else { | 218 | } else { |
| 218 | - buf.putNumList(<double>[color.r, color.g, color.b]); | 219 | + buf.putNumList(<double>[color.red, color.green, color.blue]); |
| 219 | buf.putString(' rg\n'); | 220 | buf.putString(' rg\n'); |
| 220 | } | 221 | } |
| 221 | } | 222 | } |
| @@ -225,10 +226,11 @@ class PdfGraphics { | @@ -225,10 +226,11 @@ class PdfGraphics { | ||
| 225 | /// @param c Color to use | 226 | /// @param c Color to use |
| 226 | void setStrokeColor(PdfColor color) { | 227 | void setStrokeColor(PdfColor color) { |
| 227 | if (color is PdfColorCmyk) { | 228 | if (color is PdfColorCmyk) { |
| 228 | - buf.putNumList(<double>[color.c, color.m, color.y, color.k]); | 229 | + buf.putNumList( |
| 230 | + <double>[color.cyan, color.magenta, color.yellow, color.black]); | ||
| 229 | buf.putString(' K\n'); | 231 | buf.putString(' K\n'); |
| 230 | } else { | 232 | } else { |
| 231 | - buf.putNumList(<double>[color.r, color.g, color.b]); | 233 | + buf.putNumList(<double>[color.red, color.green, color.blue]); |
| 232 | buf.putString(' RG\n'); | 234 | buf.putString(' RG\n'); |
| 233 | } | 235 | } |
| 234 | } | 236 | } |
| @@ -4,7 +4,7 @@ description: A pdf producer for Dart. It can create pdf files for both web or fl | @@ -4,7 +4,7 @@ description: A pdf producer for Dart. It can create pdf files for both web or fl | ||
| 4 | homepage: https://github.com/DavBfr/dart_pdf/tree/master/pdf | 4 | homepage: https://github.com/DavBfr/dart_pdf/tree/master/pdf |
| 5 | repository: https://github.com/DavBfr/dart_pdf | 5 | repository: https://github.com/DavBfr/dart_pdf |
| 6 | issue_tracker: https://github.com/DavBfr/dart_pdf/issues | 6 | issue_tracker: https://github.com/DavBfr/dart_pdf/issues |
| 7 | -version: 1.3.4 | 7 | +version: 1.3.5 |
| 8 | 8 | ||
| 9 | environment: | 9 | environment: |
| 10 | sdk: ">=2.1.0 <3.0.0" | 10 | sdk: ">=2.1.0 <3.0.0" |
| @@ -44,6 +44,13 @@ class Color extends StatelessWidget { | @@ -44,6 +44,13 @@ class Color extends StatelessWidget { | ||
| 44 | Text(varient ?? '', style: style), | 44 | Text(varient ?? '', style: style), |
| 45 | Padding(padding: const EdgeInsets.all(2 * PdfPageFormat.mm)), | 45 | Padding(padding: const EdgeInsets.all(2 * PdfPageFormat.mm)), |
| 46 | Text(color.toHex(), style: hexStyle), | 46 | Text(color.toHex(), style: hexStyle), |
| 47 | + Row( | ||
| 48 | + mainAxisSize: MainAxisSize.max, | ||
| 49 | + mainAxisAlignment: MainAxisAlignment.spaceEvenly, | ||
| 50 | + children: color.monochromatic | ||
| 51 | + .map<Widget>((PdfColor color) => | ||
| 52 | + Container(width: 30, height: 30, color: color)) | ||
| 53 | + .toList()) | ||
| 47 | ], | 54 | ], |
| 48 | // ) | 55 | // ) |
| 49 | )); | 56 | )); |
-
Please register or login to post a comment