Индикаторы: Flame

 

Flame:

Индикатор показывает метод рисования градиентных полупрозрачных областей с независимой частотой обновлений.

Автор: Renat Fatkhullin

 

Читал, изучал, смотрел, возникли некоторые вопросы на которые не нашел ответа (может плохо искал), а так же мелкое пожелание в плане  ChartRedraw(ExtChartID) в  OnDeinit.

  double g=0,b=0,dg=1.5,db=0.63;
//---
   for(uint a,i=0;i<256;i++)
     {
      //--- первые 32 значения пламени полностью прозрачны
      a=uchar(i<32?0:i-32);
      //--- формируем цвет для значения пламени i
      ExtPal[i]=(a<<24)|(uint(255)<<16)|(uint(g+0.5)<<8)|uint(b+0.5);
      //--- инкрементируем компоненты цвета
      //--- красный получает градацию за счёт прозрачности цвета
      if(i>80)  g+=dg;
      if(i>160) b+=db;
     }

 1) Долго не мог понять как собирался цвет (не знал что такое побитные операции, нигде не описано в справке такой формат получения цвета, а главное справка гласит

Тип color предназначен для хранения информации о цвете и занимает в памяти 4 байта. Первый байт не учитывается, остальные 3 байта содержат RGB-составляющие.

верно ли понял что первый байт отвечает за прозрачность и он таки учитывается ((a<<24))???

2) Почему при переключении ТФ пламя перезапаливается с середины ширины окна ( иногда это происходит не с средины) ???

3) Почему при прикреплении нескольких индикаторов на разные фалютные пары их работа мешает друг другу (постоянное мерцание) ??? А если на одной валюте но разные ТФ - почти нет.

4) Где посмотреть соотношение кода генерации события и int id сгенерированого события, почему они разные?

EventChartCustom(ExtChartID,1302,0,0,NULL);
void OnChartEvent(const int id,const long &lp,const double &dp,const string &sp) // id=2302
 

ALXIMIKS: 

4) Где посмотреть соотношение кода генерации события и int id сгенерированого события, почему они разные?

  const int id в OnChartEvent получается как сумма  (int) CHARTEVENT_CUSTOM и индификатора Вашего пользовательского события в EventChartCustom:

int id = (int) CHARTEVENT_CUSTOM + 1302;
// (int) CHARTEVENT_CUSTOM = 1000;
Посмотрите пример внизу по ссылке.
 

Color в общем смысле при использовании в графических объектах не учитывает байт прозрачности.

А вот при использовании канваса он доступен вместе со специальными флагами учета прозрачности.