Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
C
color_field
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Custom Issue Tracker
Custom Issue Tracker
Labels
Merge Requests
1
Merge Requests
1
Requirements
Requirements
List
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Analytics
Analytics
Code Review
Insights
Issue
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Commits
Open sidebar
project
color_field
Commits
44d485fc
Commit
44d485fc
authored
Oct 24, 2015
by
targoo
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
WIP D8
parent
dffc2f7d
Changes
14
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
1147 additions
and
102 deletions
+1147
-102
README.txt
README.txt
+4
-0
color_field.module
color_field.module
+26
-18
src/Color.php
src/Color.php
+0
-59
src/ColorBase.php
src/ColorBase.php
+209
-0
src/ColorCMY.php
src/ColorCMY.php
+118
-0
src/ColorCMYK.php
src/ColorCMYK.php
+129
-0
src/ColorHex.php
src/ColorHex.php
+91
-0
src/ColorInterface.php
src/ColorInterface.php
+31
-0
src/ColorRGB.php
src/ColorRGB.php
+125
-0
src/Plugin/Field/FieldFormatter/ColorFormatterSwatch.php
src/Plugin/Field/FieldFormatter/ColorFormatterSwatch.php
+57
-17
src/Plugin/Field/FieldFormatter/ColorFormatterText.php
src/Plugin/Field/FieldFormatter/ColorFormatterText.php
+148
-0
src/Plugin/Field/FieldType/ColorType.php
src/Plugin/Field/FieldType/ColorType.php
+178
-0
src/Plugin/Field/FieldWidget/ColorWidgetDefault.php
src/Plugin/Field/FieldWidget/ColorWidgetDefault.php
+12
-8
templates/color-field-swatch.html.twig
templates/color-field-swatch.html.twig
+19
-0
No files found.
README.txt
View file @
44d485fc
...
...
@@ -61,3 +61,7 @@ More info
-----------------------------------------------------------------------------
http://www.w3.org/TR/css3-color/#color
https://github.com/mikeemoo/ColorJizz-PHP
http://www.colorhexa.com/ff0000
https://github.com/PrimalPHP/Color/blob/master/lib/Primal/Color/Parser.php
https://github.com/matthewbaggett/php-color/blob/master/Color.php
color_field.module
View file @
44d485fc
<?php
/**
* @file
* A
n
color field with a custom color picker using the Field Types API.
* A color field with a custom color picker using the Field Types API.
*/
use
Drupal\Core\Routing\RouteMatchInterface
;
...
...
@@ -33,26 +33,34 @@ function color_field_help($route_name, RouteMatchInterface $route_match) {
}
/**
* Helper: Convert RGB to HEX6
*
* @param $rgb Must be an array indexed on r, g and b.
* Implements hook_theme().
*/
function
color_field_rgb2hex
(
$rgb
=
FALSE
)
{
$hex
=
''
;
$hex
.
=
str_pad
(
dechex
(
$rgb
[
0
]),
2
,
"0"
,
STR_PAD_LEFT
);
$hex
.
=
str_pad
(
dechex
(
$rgb
[
1
]),
2
,
"0"
,
STR_PAD_LEFT
);
$hex
.
=
str_pad
(
dechex
(
$rgb
[
2
]),
2
,
"0"
,
STR_PAD_LEFT
);
return
$hex
;
// returns the hex value including the number sign (#)
function
color_field_theme
()
{
$theme
=
[];
$theme
[
'color_field_swatch'
]
=
array
(
'variables'
=>
array
(
'color'
=>
NULL
,
'width'
=>
NULL
,
'height'
=>
NULL
,
),
);
return
$theme
;
}
/**
* Helper: Convert HEX6 to RGB
*
* @param $hex.
* Prepares variables for the color swatch templates.
*
* This template outputs a separate title and link.
*
* Default template: link-formatter-link-separate.html.twig.
*
* @param array $variables
* An associative array containing:
* - color: The color background.
* - width: The width of the color swatch.
* - height: The height of the color swatch.
*/
function
color_field_hex2rgb
(
$hex
=
FALSE
)
{
$r
=
hexdec
(
substr
(
$hex
,
0
,
2
));
$g
=
hexdec
(
substr
(
$hex
,
2
,
2
));
$b
=
hexdec
(
substr
(
$hex
,
-
2
));
return
compact
(
'r'
,
'g'
,
'b'
);
function
template_preprocess_color_field_swatch
(
&
$variables
)
{
}
src/Color.php
deleted
100644 → 0
View file @
dffc2f7d
<?php
/**
* @file
* Contains Drupal\color_field\Color.
*/
namespace
Drupal\color_field
;
class
Color
{
/**
* The color.
*
* @var string
*/
protected
$color
;
/**
* The opacity.
*
* @var float
*/
protected
$opacity
;
/**
* Creates a Color instance.
*
* @param string $color The color.
* @param float $opacity The opacity.
*/
public
function
__construct
(
$color
,
$opacity
)
{
$this
->
color
=
$color
;
$this
->
opacity
=
$opacity
;
}
/**
* {@inheritdoc}
*/
public
function
getColor
()
{
return
$this
->
color
;
}
/**
* {@inheritdoc}
*/
public
function
getOpacity
()
{
return
$this
->
opacity
;
}
/**
* Returns the string representation of the color (color, opacity).
*
* @return string
*/
public
function
__toString
()
{
return
$this
->
color
.
' '
.
$this
->
opacity
;
}
}
src/ColorBase.php
0 → 100644
View file @
44d485fc
<?php
/**
* @file
* Contains Drupal\color_field\Color.
*/
namespace
Drupal\color_field
;
abstract
class
ColorBase
implements
ColorInterface
{
/**
* @var
*/
protected
$opacity
;
/**
* Convert the color to Hex format
*
* @return ColorHex
* The color in Hex format.
*/
abstract
function
toHex
();
/**
* Convert the color to RGB format
*
* @return ColorRGB
* The color in RGB format.
*/
abstract
function
toRGB
();
/**
* Convert the color to a string format
*
* @return String
* The color in string format.
*/
abstract
function
toString
();
/**
* Get the opacity
*
* @return float
* The opacity value between 0 and 1.
*/
public
function
getOpacity
()
{
return
$this
->
opacity
|
1
;
}
static
$patterns
=
array
(
'cmyk'
=>
'/^(?:device-)?cmyk\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3}),\s*(\d+(?:\.\d+)?|\.\d+)\s*\)/'
,
'rgba'
=>
'/^rgba\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3}),\s*(\d+(?:\.\d+)?|\.\d+)\s*\)/'
,
'rgb'
=>
'/^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/'
,
'hsla'
=>
'/^hsla\((\d{1,3}),\s*(\d{1,3})%,\s*(\d{1,3})%,\s*(\d+(?:\.\d+)?|\.\d+)\s*\)/'
,
'hsl'
=>
'/^hsl\((\d{1,3}),\s*(\d{1,3})%,\s*(\d{1,3})%\)$/'
,
'hsva'
=>
'/^hsva\((\d{1,3}),\s*(\d{1,3})%,\s*(\d{1,3})%,\s*(\d+(?:\.\d+)?|\.\d+)\s*\)$/'
,
'hsv'
=>
'/^hsv\((\d{1,3}),\s*(\d{1,3})%,\s*(\d{1,3})%\)$/'
,
'hex6'
=>
'/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/'
,
'hex3'
=>
'/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/'
);
static
$named_colors
=
array
(
"aliceblue"
=>
"f0f8ff"
,
"antiquewhite"
=>
"faebd7"
,
"aqua"
=>
"00ffff"
,
"aquamarine"
=>
"7fffd4"
,
"azure"
=>
"f0ffff"
,
"beige"
=>
"f5f5dc"
,
"bisque"
=>
"ffe4c4"
,
"black"
=>
"000000"
,
"blanchedalmond"
=>
"ffebcd"
,
"blue"
=>
"0000ff"
,
"blueviolet"
=>
"8a2be2"
,
"brown"
=>
"a52a2a"
,
"burlywood"
=>
"deb887"
,
"cadetblue"
=>
"5f9ea0"
,
"chartreuse"
=>
"7fff00"
,
"chocolate"
=>
"d2691e"
,
"coral"
=>
"ff7f50"
,
"cornflowerblue"
=>
"6495ed"
,
"cornsilk"
=>
"fff8dc"
,
"crimson"
=>
"dc143c"
,
"cyan"
=>
"00ffff"
,
"darkblue"
=>
"00008b"
,
"darkcyan"
=>
"008b8b"
,
"darkgoldenrod"
=>
"b8860b"
,
"darkgray"
=>
"a9a9a9"
,
"darkgreen"
=>
"006400"
,
"darkkhaki"
=>
"bdb76b"
,
"darkmagenta"
=>
"8b008b"
,
"darkolivegreen"
=>
"556b2f"
,
"darkorange"
=>
"ff8c00"
,
"darkorchid"
=>
"9932cc"
,
"darkred"
=>
"8b0000"
,
"darksalmon"
=>
"e9967a"
,
"darkseagreen"
=>
"8fbc8f"
,
"darkslateblue"
=>
"483d8b"
,
"darkslategray"
=>
"2f4f4f"
,
"darkturquoise"
=>
"00ced1"
,
"darkviolet"
=>
"9400d3"
,
"deeppink"
=>
"ff1493"
,
"deepskyblue"
=>
"00bfff"
,
"dimgray"
=>
"696969"
,
"dodgerblue"
=>
"1e90ff"
,
"feldspar"
=>
"d19275"
,
"firebrick"
=>
"b22222"
,
"floralwhite"
=>
"fffaf0"
,
"forestgreen"
=>
"228b22"
,
"fuchsia"
=>
"ff00ff"
,
"gainsboro"
=>
"dcdcdc"
,
"ghostwhite"
=>
"f8f8ff"
,
"gold"
=>
"ffd700"
,
"goldenrod"
=>
"daa520"
,
"gray"
=>
"808080"
,
"green"
=>
"008000"
,
"greenyellow"
=>
"adff2f"
,
"honeydew"
=>
"f0fff0"
,
"hotpink"
=>
"ff69b4"
,
"indianred "
=>
"cd5c5c"
,
"indigo "
=>
"4b0082"
,
"ivory"
=>
"fffff0"
,
"khaki"
=>
"f0e68c"
,
"lavender"
=>
"e6e6fa"
,
"lavenderblush"
=>
"fff0f5"
,
"lawngreen"
=>
"7cfc00"
,
"lemonchiffon"
=>
"fffacd"
,
"lightblue"
=>
"add8e6"
,
"lightcoral"
=>
"f08080"
,
"lightcyan"
=>
"e0ffff"
,
"lightgoldenrodyellow"
=>
"fafad2"
,
"lightgrey"
=>
"d3d3d3"
,
"lightgreen"
=>
"90ee90"
,
"lightpink"
=>
"ffb6c1"
,
"lightsalmon"
=>
"ffa07a"
,
"lightseagreen"
=>
"20b2aa"
,
"lightskyblue"
=>
"87cefa"
,
"lightslateblue"
=>
"8470ff"
,
"lightslategray"
=>
"778899"
,
"lightsteelblue"
=>
"b0c4de"
,
"lightyellow"
=>
"ffffe0"
,
"lime"
=>
"00ff00"
,
"limegreen"
=>
"32cd32"
,
"linen"
=>
"faf0e6"
,
"magenta"
=>
"ff00ff"
,
"maroon"
=>
"800000"
,
"mediumaquamarine"
=>
"66cdaa"
,
"mediumblue"
=>
"0000cd"
,
"mediumorchid"
=>
"ba55d3"
,
"mediumpurple"
=>
"9370d8"
,
"mediumseagreen"
=>
"3cb371"
,
"mediumslateblue"
=>
"7b68ee"
,
"mediumspringgreen"
=>
"00fa9a"
,
"mediumturquoise"
=>
"48d1cc"
,
"mediumvioletred"
=>
"c71585"
,
"midnightblue"
=>
"191970"
,
"mintcream"
=>
"f5fffa"
,
"mistyrose"
=>
"ffe4e1"
,
"moccasin"
=>
"ffe4b5"
,
"navajowhite"
=>
"ffdead"
,
"navy"
=>
"000080"
,
"oldlace"
=>
"fdf5e6"
,
"olive"
=>
"808000"
,
"olivedrab"
=>
"6b8e23"
,
"orange"
=>
"ffa500"
,
"orangered"
=>
"ff4500"
,
"orchid"
=>
"da70d6"
,
"palegoldenrod"
=>
"eee8aa"
,
"palegreen"
=>
"98fb98"
,
"paleturquoise"
=>
"afeeee"
,
"palevioletred"
=>
"d87093"
,
"papayawhip"
=>
"ffefd5"
,
"peachpuff"
=>
"ffdab9"
,
"peru"
=>
"cd853f"
,
"pink"
=>
"ffc0cb"
,
"plum"
=>
"dda0dd"
,
"powderblue"
=>
"b0e0e6"
,
"purple"
=>
"800080"
,
"red"
=>
"ff0000"
,
"rosybrown"
=>
"bc8f8f"
,
"royalblue"
=>
"4169e1"
,
"saddlebrown"
=>
"8b4513"
,
"salmon"
=>
"fa8072"
,
"sandybrown"
=>
"f4a460"
,
"seagreen"
=>
"2e8b57"
,
"seashell"
=>
"fff5ee"
,
"sienna"
=>
"a0522d"
,
"silver"
=>
"c0c0c0"
,
"skyblue"
=>
"87ceeb"
,
"slateblue"
=>
"6a5acd"
,
"slategray"
=>
"708090"
,
"snow"
=>
"fffafa"
,
"springgreen"
=>
"00ff7f"
,
"steelblue"
=>
"4682b4"
,
"tan"
=>
"d2b48c"
,
"teal"
=>
"008080"
,
"thistle"
=>
"d8bfd8"
,
"tomato"
=>
"ff6347"
,
"turquoise"
=>
"40e0d0"
,
"violet"
=>
"ee82ee"
,
"violetred"
=>
"d02090"
,
"wheat"
=>
"f5deb3"
,
"white"
=>
"ffffff"
,
"whitesmoke"
=>
"f5f5f5"
,
"yellow"
=>
"ffff00"
,
"yellowgreen"
=>
"9acd32"
);
}
src/ColorCMY.php
0 → 100644
View file @
44d485fc
<?php
/**
* @file
* Contains Drupal\color_field\ColorCMY.
*/
namespace
Drupal\color_field
;
/**
* ColorCMY represents the CMY color format.
*/
class
ColorCMY
extends
ColorBase
{
/**
* The cyan
* @var float
*/
private
$cyan
;
/**
* The magenta
* @var float
*/
private
$magenta
;
/**
* The yellow
* @var float
*/
private
$yellow
;
/**
* Create a new CMYK color
*
* @param float $cyan
* The cyan
* @param float $magenta
* The magenta
* @param float $yellow
* The yellow
* @param float $opacity
* The opacity
*/
public
function
__construct
(
$cyan
,
$magenta
,
$yellow
,
$opacity
)
{
$this
->
cyan
=
$cyan
;
$this
->
magenta
=
$magenta
;
$this
->
yellow
=
$yellow
;
$this
->
opacity
=
floatval
(
$opacity
);
}
/**
* Get the amount of Cyan
*
* @return int The amount of cyan
*/
public
function
getCyan
()
{
return
$this
->
cyan
;
}
/**
* Get the amount of Magenta
*
* @return int The amount of magenta
*/
public
function
getMagenta
()
{
return
$this
->
magenta
;
}
/**
* Get the amount of Yellow
*
* @return int The amount of yellow
*/
public
function
getYellow
()
{
return
$this
->
yellow
;
}
/**
* A string representation of this color in the current format
*
* @param bool $opacity
* Whether or not to display the opacity.
*
* @return string
* The color in format: #RRGGBB
*/
public
function
toString
(
$opacity
=
TRUE
)
{
}
/**
* {@inheritdoc}
*/
public
function
toHex
()
{
return
$this
->
toRGB
()
->
toHex
();
}
/**
* {@inheritdoc}
*/
public
function
toRGB
()
{
$red
=
(
1
-
$this
->
cyan
)
*
255
;
$green
=
(
1
-
$this
->
magenta
)
*
255
;
$blue
=
(
1
-
$this
->
yellow
)
*
255
;
return
new
ColorRGB
(
$red
,
$green
,
$blue
,
$this
->
getOpacity
());
}
/**
* {@inheritdoc}
*/
public
function
toCMY
()
{
$cyan
=
(
$this
->
cyan
*
(
1
-
$this
->
key
)
+
$this
->
key
);
$magenta
=
(
$this
->
magenta
*
(
1
-
$this
->
key
)
+
$this
->
key
);
$yellow
=
(
$this
->
yellow
*
(
1
-
$this
->
key
)
+
$this
->
key
);
return
new
ColorCMY
(
$cyan
,
$magenta
,
$yellow
);
}
}
src/ColorCMYK.php
0 → 100644
View file @
44d485fc
<?php
/**
* @file
* Contains Drupal\color_field\ColorCMYK.
*/
namespace
Drupal\color_field
;
/**
* ColorCMYK represents the CMYK color format.
*/
class
ColorCMYK
extends
ColorBase
{
/**
* The cyan
* @var float
*/
private
$cyan
;
/**
* The magenta
* @var float
*/
private
$magenta
;
/**
* The yellow
* @var float
*/
private
$yellow
;
/**
* The key (black)
* @var float
*/
private
$key
;
/**
* Create a new CMYK color
*
* @param float $cyan The cyan
* @param float $magenta The magenta
* @param float $yellow The yellow
* @param float $key The key (black)
* @param float $opacity
* The opacity
*/
public
function
__construct
(
$cyan
,
$magenta
,
$yellow
,
$key
,
$opacity
)
{
$this
->
cyan
=
$cyan
;
$this
->
magenta
=
$magenta
;
$this
->
yellow
=
$yellow
;
$this
->
key
=
$key
;
$this
->
opacity
=
floatval
(
$opacity
);
}
/**
* Get the amount of Cyan
*
* @return int The amount of cyan
*/
public
function
getCyan
()
{
return
$this
->
cyan
;
}
/**
* Get the amount of Magenta
*
* @return int The amount of magenta
*/
public
function
getMagenta
()
{
return
$this
->
magenta
;
}
/**
* Get the amount of Yellow
*
* @return int The amount of yellow
*/
public
function
getYellow
()
{
return
$this
->
yellow
;
}
/**
* Get the key (black)
*
* @return int The amount of black
*/
public
function
getKey
()
{
return
$this
->
key
;
}
/**
* A string representation of this color in the current format
*
* @param bool $opacity
* Whether or not to display the opacity.
*
* @return string
* The color in format: #RRGGBB
*/
public
function
toString
(
$opacity
=
TRUE
)
{
}
/**
* {@inheritdoc}
*/
public
function
toHex
()
{
return
$this
->
toRGB
()
->
toHex
();
}
/**
* {@inheritdoc}
*/
public
function
toRGB
()
{
return
$this
->
toCMY
()
->
toRGB
();
}
/**
* {@inheritdoc}
*/
public
function
toCMY
()
{
$cyan
=
(
$this
->
cyan
*
(
1
-
$this
->
key
)
+
$this
->
key
);
$magenta
=
(
$this
->
magenta
*
(
1
-
$this
->
key
)
+
$this
->
key
);
$yellow
=
(
$this
->
yellow
*
(
1
-
$this
->
key
)
+
$this
->
key
);
return
new
ColorCMY
(
$cyan
,
$magenta
,
$yellow
,
$this
->
getOpacity
());
}
}
src/ColorHex.php
0 → 100644
View file @
44d485fc
<?php
/**
* @file
* Contains Drupal\color_field\ColorHex.
*/
namespace
Drupal\color_field
;
/**
* Hex represents the Hex color format
*/
class
ColorHex
extends
ColorBase
{
/**
* The Hex triplet of the color.
* @var int
*/
private
$color
;
/**
* Create a new Hex from a string.
*
* @param string $color
* The string hex value (i.e. "FFFFFF").
* @param string $opacity
* The opacity value.
* @return ColorHex
* The ColorHex object.
* @throws Exception
*/
public
function
__construct
(
$color
,
$opacity
)
{
$color
=
strtolower
(
$color
);
if
(
substr
(
$color
,
0
,
1
)
===
'#'
)
{
$color
=
substr
(
$color
,
1
);
}
if
(
strlen
(
$color
)
===
3
)
{
$color
=
str_repeat
(
$color
[
0
],
2
)
.
str_repeat
(
$color
[
1
],
2
)
.
str_repeat
(
$color
[
2
],
2
);
}
if
(
!
preg_match
(
'/[0-9A-F]{6}/i'
,
$color
))
{
// @throws exception.
}
$this
->
color
=
hexdec
(
$color
);
$this
->
opacity
=
floatval
(
$opacity
);
return
$this
;
}
/**