45 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
	
| /***************************************************************************************
 | |
| // The following button class has been ported over from the Adafruit_GFX library so
 | |
| // should be compatible.
 | |
| // A slightly different implementation in this TFT_eSPI library allows the button
 | |
| // legends to be in any font, allow longer labels and to adjust text positioning
 | |
| // within button
 | |
| ***************************************************************************************/
 | |
| 
 | |
| class TFT_eSPI_Button {
 | |
| 
 | |
|  public:
 | |
|   TFT_eSPI_Button(void);
 | |
|   // "Classic" initButton() uses center & size
 | |
|   void     initButton(TFT_eSPI *gfx, int16_t x, int16_t y,
 | |
|   uint16_t w, uint16_t h, uint16_t outline, uint16_t fill,
 | |
|   uint16_t textcolor, char *label, uint8_t textsize);
 | |
| 
 | |
|   // New/alt initButton() uses upper-left corner & size
 | |
|   void     initButtonUL(TFT_eSPI *gfx, int16_t x1, int16_t y1,
 | |
|   uint16_t w, uint16_t h, uint16_t outline, uint16_t fill,
 | |
|   uint16_t textcolor, char *label, uint8_t textsize);
 | |
|   
 | |
|   // Adjust text datum and x, y deltas
 | |
|   void     setLabelDatum(int16_t x_delta, int16_t y_delta, uint8_t datum = MC_DATUM);
 | |
|   
 | |
|   void     drawButton(bool inverted = false, String long_name = "");
 | |
|   bool     contains(int16_t x, int16_t y);
 | |
| 
 | |
|   void     press(bool p);
 | |
|   bool     isPressed();
 | |
|   bool     justPressed();
 | |
|   bool     justReleased();
 | |
| 
 | |
|  private:
 | |
|   TFT_eSPI *_gfx;
 | |
|   int16_t  _x1, _y1; // Coordinates of top-left corner of button
 | |
|   int16_t  _xd, _yd; // Button text datum offsets (wrt center of button)
 | |
|   uint16_t _w, _h;   // Width and height of button
 | |
|   uint8_t  _textsize, _textdatum; // Text size multiplier and text datum for button
 | |
|   uint16_t _outlinecolor, _fillcolor, _textcolor;
 | |
|   char     _label[10]; // Button text is 9 chars maximum unless long_name used
 | |
| 
 | |
|   bool  currstate, laststate; // Button states
 | |
| };
 |