forked from nique_372/GrapichsByLeo
246 lines
7.9 KiB
MQL5
//+------------------------------------------------------------------+
| |||
//| Base.mqh |
| |||
//| Copyright 2025, Niquel Mendoza. |
| |||
//| https://www.mql5.com/es/users/nique_372/news |
| |||
//+------------------------------------------------------------------+
| |||
#property copyright "Copyright 2025, Niquel Mendoza."
| |||
#property link "https://www.mql5.com/es/users/nique_372/news"
| |||
#property strict
| |||
| |||
| |||
#ifndef GRAPICHSBYLEO_GENERAL_BASE_MQH
| |||
#define GRAPICHSBYLEO_GENERAL_BASE_MQH
| |||
| |||
//+------------------------------------------------------------------+
| |||
//| |
| |||
//+------------------------------------------------------------------+
| |||
#include "..\\Canvas.mqh"
| |||
| |||
//+------------------------------------------------------------------+
| |||
//| |
| |||
//+------------------------------------------------------------------+
| |||
class CCanvasLine
| |||
{
| |||
protected:
| |||
//---
| |||
int m_ci;
| |||
int m_c1;
| |||
int m_ce;
| |||
int m_c2;
| |||
uint m_clr;
| |||
uint m_clr_clean;
| |||
CCanvasCustom* m_canvas;
| |||
| |||
public:
| |||
CCanvasLine(void) {}
| |||
~CCanvasLine(void) {}
| |||
| |||
//---
| |||
virtual void CleanPx() = 0;
| |||
virtual void Draw() = 0;
| |||
| |||
//--- Getters y setters
| |||
// Ci
| |||
__forceinline int Ci() const { return m_ci; }
| |||
void Ci(int new_value);
| |||
void CiTodo(int new_value);
| |||
| |||
// C1
| |||
__forceinline int C1() const { return m_c1; }
| |||
virtual void C1(int new_value) = 0;
| |||
void C1Todo(int new_value);
| |||
| |||
// Ce
| |||
__forceinline int Ce() const { return m_ce; }
| |||
virtual void Ce(int new_value);
| |||
| |||
// C2
| |||
__forceinline int C2() const { return m_c2; }
| |||
virtual void C2(int new_value) = 0;
| |||
| |||
// Color
| |||
__forceinline uint Color() const { return m_clr; }
| |||
void Color(uint new_value);
| |||
| |||
// Size
| |||
__forceinline int Ancho() const { return (m_c2 - m_c1);}
| |||
void Ancho(int new_value) { C2((m_c1 + new_value)); }
| |||
| |||
// Color de limpieza
| |||
__forceinline uint CleanColor() const { return m_clr_clean; }
| |||
void CleanColor(uint new_value) { m_clr_clean = new_value; }
| |||
| |||
//---
| |||
void ChangeCordinatesAnc1(int ci, int c1);
| |||
void ChangeCordinatesAnc2(int ce, int c2);
| |||
void ChangeCordinates(int ci, int c1, int c2);
| |||
void ChangeCordinatesAll(int ci, int c1, int ce, int c2);
| |||
};
| |||
| |||
//+------------------------------------------------------------------+
| |||
//| |
| |||
//+------------------------------------------------------------------+
| |||
void CCanvasLine::Ce(int new_value)
| |||
{
| |||
CleanPx();
| |||
m_ce = new_value;
| |||
Draw();
| |||
}
| |||
| |||
//+------------------------------------------------------------------+
| |||
//| |
| |||
//+------------------------------------------------------------------+
| |||
void CCanvasLine::Ci(int new_value)
| |||
{
| |||
CleanPx();
| |||
m_ci = new_value;
| |||
Draw();
| |||
}
| |||
| |||
//+------------------------------------------------------------------+
| |||
//| |
| |||
//+------------------------------------------------------------------+
| |||
void CCanvasLine::C1Todo(int new_value)
| |||
{
| |||
int new_c2 = m_c1 + new_value;
| |||
C1(new_value);
| |||
C2(new_c2);
| |||
}
| |||
| |||
//+------------------------------------------------------------------+
| |||
//| |
| |||
//+------------------------------------------------------------------+
| |||
void CCanvasLine::CiTodo(int new_value)
| |||
{
| |||
int new_c2 = m_c1 + new_value;
| |||
C1(new_value);
| |||
C2(new_c2);
| |||
}
| |||
| |||
//+------------------------------------------------------------------+
| |||
//| |
| |||
//+------------------------------------------------------------------+
| |||
void CCanvasLine::Color(uint new_value)
| |||
{
| |||
CleanPx();
| |||
m_clr = new_value;
| |||
Draw();
| |||
}
| |||
//+------------------------------------------------------------------+
| |||
//| |
| |||
//+------------------------------------------------------------------+
| |||
void CCanvasLine::ChangeCordinates(int ci, int c1, int c2)
| |||
{
| |||
CleanPx();
| |||
m_ci = ci;
| |||
m_c1 = c1;
| |||
m_c2 = c2;
| |||
Draw();
| |||
}
| |||
//+------------------------------------------------------------------+
| |||
//| |
| |||
//+------------------------------------------------------------------+
| |||
void CCanvasLine::ChangeCordinatesAnc1(int ci, int c1)
| |||
{
| |||
CleanPx();
| |||
m_ci = ci;
| |||
m_c1 = c1;
| |||
Draw();
| |||
}
| |||
//+------------------------------------------------------------------+
| |||
//| |
| |||
//+------------------------------------------------------------------+
| |||
void CCanvasLine::ChangeCordinatesAnc2(int ce, int c2)
| |||
{
| |||
CleanPx();
| |||
m_ce = ce;
| |||
m_c2 = c2;
| |||
Draw();
| |||
}
| |||
| |||
//+------------------------------------------------------------------+
| |||
//| |
| |||
//+------------------------------------------------------------------+
| |||
void CCanvasLine::ChangeCordinatesAll(int ci, int c1, int ce, int c2)
| |||
{
| |||
CleanPx();
| |||
m_ci = ci;
| |||
m_c1 = c1;
| |||
m_ce = ce;
| |||
m_c2 = c2;
| |||
Draw();
| |||
}
| |||
| |||
| |||
//+------------------------------------------------------------------+
| |||
//| |
| |||
//+------------------------------------------------------------------+
| |||
class CCanvasLineSimpleBase : public CCanvasLine
| |||
{
| |||
public:
| |||
CCanvasLineSimpleBase(int ci, int c1, int ce, int c2, uint clr, uint clr_clean, CCanvasCustom* c);
| |||
~CCanvasLineSimpleBase(void) {}
| |||
};
| |||
| |||
//+------------------------------------------------------------------+
| |||
CCanvasLineSimpleBase::CCanvasLineSimpleBase(int ci, int c1, int ce, int c2, uint clr, uint clr_clean, CCanvasCustom *c)
| |||
{
| |||
//---
| |||
m_ci = ci;
| |||
m_c1 = c1;
| |||
m_ce = ce;
| |||
m_c2 = c2;
| |||
m_clr = clr;
| |||
m_clr_clean = clr_clean;
| |||
m_canvas = c;
| |||
}
| |||
| |||
| |||
//+------------------------------------------------------------------+
| |||
//| |
| |||
//+------------------------------------------------------------------+
| |||
class CCanvasLineAA : public CCanvasLineSimpleBase
| |||
{
| |||
protected:
| |||
uint m_style;
| |||
| |||
public:
| |||
CCanvasLineAA(int ci, int c1, int ce, int c2, uint clr, uint clr_clean, CCanvasCustom* c, uint style)
| |||
: CCanvasLineSimpleBase(ci, c1, ce, c2, clr, clr_clean, c), m_style(style) {}
| |||
~CCanvasLineAA(void) {}
| |||
| |||
//---
| |||
// Estilo
| |||
__forceinline uint Style() const { return m_style; }
| |||
void Style(uint new_value);
| |||
};
| |||
| |||
//+------------------------------------------------------------------+
| |||
void CCanvasLineAA::Style(uint new_value)
| |||
{
| |||
CleanPx();
| |||
m_style = new_value;
| |||
Draw();
| |||
}
| |||
| |||
//+------------------------------------------------------------------+
| |||
//| |
| |||
//+------------------------------------------------------------------+
| |||
class CCanvasLineAASimple : public CCanvasLineAA
| |||
{
| |||
public:
| |||
CCanvasLineAASimple(int ci, int c1, int ce, int c2, uint clr, uint clr_clean, CCanvasCustom* c, uint style);
| |||
~CCanvasLineAASimple(void) {}
| |||
};
| |||
| |||
//+------------------------------------------------------------------+
| |||
CCanvasLineAASimple::CCanvasLineAASimple(int ci, int c1, int ce, int c2, uint clr, uint clr_clean, CCanvasCustom* c, uint style)
| |||
: CCanvasLineAA(ci, c1, c2, c2, clr, clr_clean, c, style)
| |||
{
| |||
}
| |||
| |||
| |||
| |||
//+------------------------------------------------------------------+
| |||
#endif
| |||
//+------------------------------------------------------------------+
|