//+------------------------------------------------------------------+ //| 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 //+------------------------------------------------------------------+