70 lines
2.5 KiB
MQL5
70 lines
2.5 KiB
MQL5
//+------------------------------------------------------------------+
|
|
//| ConversionColor.mq5 |
|
|
//| Copyright 2021, MetaQuotes Ltd. |
|
|
//| https://www.mql5.com |
|
|
//+------------------------------------------------------------------+
|
|
|
|
#define PRT(A) Print(#A, "=", (A))
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| ARGB equivalent representation |
|
|
//+------------------------------------------------------------------+
|
|
struct Argb
|
|
{
|
|
uchar BB;
|
|
uchar GG;
|
|
uchar RR;
|
|
uchar AA;
|
|
};
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| Split ARGB value into components |
|
|
//+------------------------------------------------------------------+
|
|
union ColorARGB
|
|
{
|
|
uint value;
|
|
uchar channels[4]; // 0 - BB, 1 - GG, 2 - RR, 3 - AA
|
|
Argb split[1];
|
|
ColorARGB(uint u) : value(u) { }
|
|
};
|
|
|
|
#define ARGBToColor(U) ((color)((((U) & 0xFF) << 16) | ((U) & 0xFF00) | (((U) >> 16) & 0xFF)))
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| Script program start function |
|
|
//+------------------------------------------------------------------+
|
|
void OnStart()
|
|
{
|
|
PRT(ColorToString(clrBlue)); // 0,0,255
|
|
PRT(ColorToString(C'0,0,255', true)); // clrBlue
|
|
PRT(ColorToString(C'0,0,250')); // 0,0,250
|
|
PRT(ColorToString(C'0,0,250', true)); // 0,0,250 (no such color name)
|
|
PRT(ColorToString(0x34AB6821, true)); // 33,104,171 (0x21,0x68,0xAB)
|
|
|
|
PRT(StringToColor("0,0,255")); // clrBlue
|
|
PRT(StringToColor("clrBlue")); // clrBlue
|
|
PRT(StringToColor("Blue")); // clrBlack (no such color name)
|
|
// excessive text is skipped
|
|
PRT(StringToColor("255,255,255 more text")); // clrWhite
|
|
PRT(StringToColor("This is color: 128,128,128")); // clrGray
|
|
|
|
uint u = ColorToARGB(clrBlue);
|
|
PrintFormat("ARGB1=%X", u); // ARGB1=FF0000FF
|
|
ColorARGB clr1(u);
|
|
ArrayPrint(clr1.split);
|
|
/*
|
|
[BB] [GG] [RR] [AA]
|
|
[0] 255 0 0 255
|
|
*/
|
|
|
|
u = ColorToARGB(clrDeepSkyBlue, 0x40);
|
|
PrintFormat("ARGB2=%X", u); // ARGB2=4000BFFF
|
|
ColorARGB clr2(u);
|
|
ArrayPrint(clr2.split);
|
|
/*
|
|
[BB] [GG] [RR] [AA]
|
|
[0] 255 191 0 64
|
|
*/
|
|
Print(ARGBToColor(u)); // clrDeepSkyBlue
|
|
}
|
|
//+------------------------------------------------------------------+
|