From 69f439eff387a6ecb52734e400b297a3c85f2285 Mon Sep 17 00:00:00 2001 From: Daniel Lange Date: Tue, 21 Sep 2021 08:35:19 +0200 Subject: New upstream version 3.1.0 --- Meter.h | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) (limited to 'Meter.h') diff --git a/Meter.h b/Meter.h index 2a78fd1..0e6b3f9 100644 --- a/Meter.h +++ b/Meter.h @@ -10,6 +10,7 @@ in the source distribution for its full text. #include "config.h" // IWYU pragma: keep #include +#include #include #include @@ -18,7 +19,8 @@ in the source distribution for its full text. #include "ProcessList.h" -#define METER_BUFFER_LEN 256 +#define METER_TXTBUFFER_LEN 256 +#define METER_GRAPHDATA_SIZE 256 #define METER_BUFFER_CHECK(buffer, size, written) \ do { \ @@ -49,16 +51,20 @@ typedef struct Meter_ Meter; typedef void(*Meter_Init)(Meter*); typedef void(*Meter_Done)(Meter*); typedef void(*Meter_UpdateMode)(Meter*, int); -typedef void(*Meter_UpdateValues)(Meter*, char*, size_t); +typedef void(*Meter_UpdateValues)(Meter*); typedef void(*Meter_Draw)(Meter*, int, int, int); +typedef const char* (*Meter_GetCaption)(const Meter*); +typedef void(*Meter_GetUiName)(const Meter*, char*, size_t); typedef struct MeterClass_ { const ObjectClass super; const Meter_Init init; const Meter_Done done; const Meter_UpdateMode updateMode; - const Meter_Draw draw; const Meter_UpdateValues updateValues; + const Meter_Draw draw; + const Meter_GetCaption getCaption; + const Meter_GetUiName getUiName; const int defaultMode; const double total; const int* const attributes; @@ -67,6 +73,7 @@ typedef struct MeterClass_ { const char* const caption; /* prefix in the actual header */ const char* const description; /* optional meter description in header setup menu */ const uint8_t maxItems; + const bool isMultiColumn; /* whether the meter draws multiple sub-columns (defaults to false) */ } MeterClass; #define As_Meter(this_) ((const MeterClass*)((this_)->super.klass)) @@ -77,16 +84,20 @@ typedef struct MeterClass_ { #define Meter_updateMode(this_, m_) As_Meter(this_)->updateMode((Meter*)(this_), m_) #define Meter_drawFn(this_) As_Meter(this_)->draw #define Meter_doneFn(this_) As_Meter(this_)->done -#define Meter_updateValues(this_, buf_, sz_) \ - As_Meter(this_)->updateValues((Meter*)(this_), buf_, sz_) +#define Meter_updateValues(this_) As_Meter(this_)->updateValues((Meter*)(this_)) +#define Meter_getUiNameFn(this_) As_Meter(this_)->getUiName +#define Meter_getUiName(this_,n_,l_) As_Meter(this_)->getUiName((const Meter*)(this_),n_,l_) +#define Meter_getCaptionFn(this_) As_Meter(this_)->getCaption +#define Meter_getCaption(this_) (Meter_getCaptionFn(this_) ? As_Meter(this_)->getCaption((const Meter*)(this_)) : (this_)->caption) #define Meter_defaultMode(this_) As_Meter(this_)->defaultMode #define Meter_attributes(this_) As_Meter(this_)->attributes #define Meter_name(this_) As_Meter(this_)->name #define Meter_uiName(this_) As_Meter(this_)->uiName +#define Meter_isMultiColumn(this_) As_Meter(this_)->isMultiColumn typedef struct GraphData_ { struct timeval time; - double values[METER_BUFFER_LEN]; + double values[METER_GRAPHDATA_SIZE]; } GraphData; struct Meter_ { @@ -95,12 +106,14 @@ struct Meter_ { char* caption; int mode; - int param; + unsigned int param; GraphData* drawData; int h; + int columnWidthCount; /**< only used internally by the Header */ const ProcessList* pl; uint8_t curItems; const int* curAttributes; + char txtBuffer[METER_TXTBUFFER_LEN]; double* values; double total; void* meterData; @@ -123,7 +136,7 @@ typedef enum { extern const MeterClass Meter_class; -Meter* Meter_new(const ProcessList* pl, int param, const MeterClass* type); +Meter* Meter_new(const ProcessList* pl, unsigned int param, const MeterClass* type); int Meter_humanUnit(char* buffer, unsigned long int value, size_t size); @@ -133,7 +146,7 @@ void Meter_setCaption(Meter* this, const char* caption); void Meter_setMode(Meter* this, int modeIndex); -ListItem* Meter_toListItem(Meter* this, bool moving); +ListItem* Meter_toListItem(const Meter* this, bool moving); extern const MeterMode* const Meter_modes[]; -- cgit v1.2.3