mirror of
				https://github.com/InsanusMokrassar/MicroUtils.git
				synced 2025-10-30 19:50:31 +00:00 
			
		
		
		
	add ahex to color
This commit is contained in:
		| @@ -2,6 +2,10 @@ | |||||||
|  |  | ||||||
| ## 0.20.33 | ## 0.20.33 | ||||||
|  |  | ||||||
|  | * `Colors` | ||||||
|  |     * `Common`: | ||||||
|  |         * Add opportunity to use `HEXAColor` with `ahex` colors | ||||||
|  |  | ||||||
| ## 0.20.32 | ## 0.20.32 | ||||||
|  |  | ||||||
| * `Versions`: | * `Versions`: | ||||||
|   | |||||||
| @@ -12,16 +12,30 @@ import kotlin.math.floor | |||||||
|  * * Red (0.5 capacity): `0xff000088u` |  * * Red (0.5 capacity): `0xff000088u` | ||||||
|  * |  * | ||||||
|  * Anyway it is recommended to use |  * Anyway it is recommended to use | ||||||
|  |  * | ||||||
|  |  * @param uint rgba [UInt] in format `0xFFEEBBAA` where FF - red, EE - green, BB - blue` and AA - alpha | ||||||
|  */ |  */ | ||||||
| @Serializable | @Serializable | ||||||
| @JvmInline | @JvmInline | ||||||
| value class HEXAColor ( | value class HEXAColor ( | ||||||
|     val uint: UInt |     val uint: UInt | ||||||
| ) : Comparable<HEXAColor> { | ) : Comparable<HEXAColor> { | ||||||
|  |     /** | ||||||
|  |      * @returns [uint] as a string with format `#FFEEBBAA` where FF - red, EE - green, BB - blue and AA - alpha | ||||||
|  |      */ | ||||||
|     val hexa: String |     val hexa: String | ||||||
|         get() = "#${uint.toString(16).padStart(8, '0')}" |         get() = "#${uint.toString(16).padStart(8, '0')}" | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * @returns [uint] as a string with format `#FFEEBB` where FF - red, EE - green and BB - blue | ||||||
|  |      */ | ||||||
|     val hex: String |     val hex: String | ||||||
|         get() = hexa.take(7) |         get() = hexa.take(7) | ||||||
|  |     /** | ||||||
|  |      * @returns [uint] as a string with format `#AAFFEEBB` where AA - alpha, FF - red, EE - green and BB - blue | ||||||
|  |      */ | ||||||
|  |     val ahex: String | ||||||
|  |         get() = "#${a.toString(16).padStart(2, '2')}${hex.drop(1)}" | ||||||
|     val rgba: String |     val rgba: String | ||||||
|         get() = "rgba($r,$g,$b,${aOfOne.toString().take(5)})" |         get() = "rgba($r,$g,$b,${aOfOne.toString().take(5)})" | ||||||
|     val rgb: String |     val rgb: String | ||||||
| @@ -121,6 +135,21 @@ value class HEXAColor ( | |||||||
|             else -> color |             else -> color | ||||||
|         }.lowercase().toUInt(16).let(::HEXAColor) |         }.lowercase().toUInt(16).let(::HEXAColor) | ||||||
|  |  | ||||||
|  |         /** | ||||||
|  |          * Creates [HEXAColor] from [uint] presume it is in format `0xFFEEBBAA` where FF - red, EE - green, BB - blue` and AA - alpha | ||||||
|  |          */ | ||||||
|  |         fun fromHexa(uint: UInt) = HEXAColor(uint) | ||||||
|  |  | ||||||
|  |         /** | ||||||
|  |          * Creates [HEXAColor] from [uint] presume it is in format `0xAAFFEEBB` where AA - alpha, FF - red, EE - green and BB - blue` | ||||||
|  |          */ | ||||||
|  |         fun fromAhex(uint: UInt) = HEXAColor( | ||||||
|  |             a = ((uint and 0xff000000u) / 0x1000000u).toInt(), | ||||||
|  |             r = ((uint and 0x00ff0000u) / 0x10000u).toInt(), | ||||||
|  |             g = ((uint and 0x0000ff00u) / 0x100u).toInt(), | ||||||
|  |             b = ((uint and 0x000000ffu)).toInt() | ||||||
|  |         ) | ||||||
|  |  | ||||||
|         /** |         /** | ||||||
|          * Parsing color from [color] |          * Parsing color from [color] | ||||||
|          * |          * | ||||||
|   | |||||||
| @@ -13,6 +13,7 @@ class HexColorTests { | |||||||
|         val shortHexa: String, |         val shortHexa: String, | ||||||
|         val hex: String, |         val hex: String, | ||||||
|         val hexa: String, |         val hexa: String, | ||||||
|  |         val ahex: String, | ||||||
|         val rgb: String, |         val rgb: String, | ||||||
|         val rgba: String, |         val rgba: String, | ||||||
|         val r: Int, |         val r: Int, | ||||||
| @@ -29,6 +30,7 @@ class HexColorTests { | |||||||
|                 shortHexa = "#f00f", |                 shortHexa = "#f00f", | ||||||
|                 hex = "#ff0000", |                 hex = "#ff0000", | ||||||
|                 hexa = "#ff0000ff", |                 hexa = "#ff0000ff", | ||||||
|  |                 ahex = "#ffff0000", | ||||||
|                 rgb = "rgb(255,0,0)", |                 rgb = "rgb(255,0,0)", | ||||||
|                 rgba = "rgba(255,0,0,1.0)", |                 rgba = "rgba(255,0,0,1.0)", | ||||||
|                 r = 0xff, |                 r = 0xff, | ||||||
| @@ -43,6 +45,7 @@ class HexColorTests { | |||||||
|                 shortHexa = "#0f0f", |                 shortHexa = "#0f0f", | ||||||
|                 hex = "#00ff00", |                 hex = "#00ff00", | ||||||
|                 hexa = "#00ff00ff", |                 hexa = "#00ff00ff", | ||||||
|  |                 ahex = "#ff00ff00", | ||||||
|                 rgb = "rgb(0,255,0)", |                 rgb = "rgb(0,255,0)", | ||||||
|                 rgba = "rgba(0,255,0,1.0)", |                 rgba = "rgba(0,255,0,1.0)", | ||||||
|                 r = 0x00, |                 r = 0x00, | ||||||
| @@ -57,6 +60,7 @@ class HexColorTests { | |||||||
|                 shortHexa = "#00ff", |                 shortHexa = "#00ff", | ||||||
|                 hex = "#0000ff", |                 hex = "#0000ff", | ||||||
|                 hexa = "#0000ffff", |                 hexa = "#0000ffff", | ||||||
|  |                 ahex = "#ff0000ff", | ||||||
|                 rgb = "rgb(0,0,255)", |                 rgb = "rgb(0,0,255)", | ||||||
|                 rgba = "rgba(0,0,255,1.0)", |                 rgba = "rgba(0,0,255,1.0)", | ||||||
|                 r = 0x00, |                 r = 0x00, | ||||||
| @@ -71,6 +75,7 @@ class HexColorTests { | |||||||
|                 shortHexa = "#f008", |                 shortHexa = "#f008", | ||||||
|                 hex = "#ff0000", |                 hex = "#ff0000", | ||||||
|                 hexa = "#ff000088", |                 hexa = "#ff000088", | ||||||
|  |                 ahex = "#88ff0000", | ||||||
|                 rgb = "rgb(255,0,0)", |                 rgb = "rgb(255,0,0)", | ||||||
|                 rgba = "rgba(255,0,0,0.533)", |                 rgba = "rgba(255,0,0,0.533)", | ||||||
|                 r = 0xff, |                 r = 0xff, | ||||||
| @@ -84,6 +89,7 @@ class HexColorTests { | |||||||
|                 shortHexa = "#0f08", |                 shortHexa = "#0f08", | ||||||
|                 hex = "#00ff00", |                 hex = "#00ff00", | ||||||
|                 hexa = "#00ff0088", |                 hexa = "#00ff0088", | ||||||
|  |                 ahex = "#8800ff00", | ||||||
|                 rgb = "rgb(0,255,0)", |                 rgb = "rgb(0,255,0)", | ||||||
|                 rgba = "rgba(0,255,0,0.533)", |                 rgba = "rgba(0,255,0,0.533)", | ||||||
|                 r = 0x00, |                 r = 0x00, | ||||||
| @@ -97,6 +103,7 @@ class HexColorTests { | |||||||
|                 shortHexa = "#00f8", |                 shortHexa = "#00f8", | ||||||
|                 hex = "#0000ff", |                 hex = "#0000ff", | ||||||
|                 hexa = "#0000ff88", |                 hexa = "#0000ff88", | ||||||
|  |                 ahex = "#880000ff", | ||||||
|                 rgb = "rgb(0,0,255)", |                 rgb = "rgb(0,0,255)", | ||||||
|                 rgba = "rgba(0,0,255,0.533)", |                 rgba = "rgba(0,0,255,0.533)", | ||||||
|                 r = 0x00, |                 r = 0x00, | ||||||
| @@ -110,6 +117,7 @@ class HexColorTests { | |||||||
|                 shortHexa = "#f002", |                 shortHexa = "#f002", | ||||||
|                 hex = "#ff0000", |                 hex = "#ff0000", | ||||||
|                 hexa = "#ff000022", |                 hexa = "#ff000022", | ||||||
|  |                 ahex = "#22ff0000", | ||||||
|                 rgb = "rgb(255,0,0)", |                 rgb = "rgb(255,0,0)", | ||||||
|                 rgba = "rgba(255,0,0,0.133)", |                 rgba = "rgba(255,0,0,0.133)", | ||||||
|                 r = 0xff, |                 r = 0xff, | ||||||
| @@ -123,6 +131,7 @@ class HexColorTests { | |||||||
|                 shortHexa = "#0f02", |                 shortHexa = "#0f02", | ||||||
|                 hex = "#00ff00", |                 hex = "#00ff00", | ||||||
|                 hexa = "#00ff0022", |                 hexa = "#00ff0022", | ||||||
|  |                 ahex = "#2200ff00", | ||||||
|                 rgb = "rgb(0,255,0)", |                 rgb = "rgb(0,255,0)", | ||||||
|                 rgba = "rgba(0,255,0,0.133)", |                 rgba = "rgba(0,255,0,0.133)", | ||||||
|                 r = 0x00, |                 r = 0x00, | ||||||
| @@ -136,6 +145,7 @@ class HexColorTests { | |||||||
|                 shortHexa = "#00f2", |                 shortHexa = "#00f2", | ||||||
|                 hex = "#0000ff", |                 hex = "#0000ff", | ||||||
|                 hexa = "#0000ff22", |                 hexa = "#0000ff22", | ||||||
|  |                 ahex = "#220000ff", | ||||||
|                 rgb = "rgb(0,0,255)", |                 rgb = "rgb(0,0,255)", | ||||||
|                 rgba = "rgba(0,0,255,0.133)", |                 rgba = "rgba(0,0,255,0.133)", | ||||||
|                 r = 0x00, |                 r = 0x00, | ||||||
| @@ -150,6 +160,7 @@ class HexColorTests { | |||||||
|         testColors.forEach { |         testColors.forEach { | ||||||
|             assertEquals(it.hex, it.color.hex) |             assertEquals(it.hex, it.color.hex) | ||||||
|             assertEquals(it.hexa, it.color.hexa) |             assertEquals(it.hexa, it.color.hexa) | ||||||
|  |             assertEquals(it.ahex, it.color.ahex) | ||||||
|             assertEquals(it.shortHex, it.color.shortHex) |             assertEquals(it.shortHex, it.color.shortHex) | ||||||
|             assertEquals(it.shortHexa, it.color.shortHexa) |             assertEquals(it.shortHexa, it.color.shortHexa) | ||||||
|             assertEquals(it.rgb, it.color.rgb) |             assertEquals(it.rgb, it.color.rgb) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user