diff options
Diffstat (limited to 'Meter.h')
-rw-r--r-- | Meter.h | 128 |
1 files changed, 56 insertions, 72 deletions
@@ -4,101 +4,91 @@ #define HEADER_Meter /* htop - Meter.h -(C) 2004-2010 Hisham H. Muhammad +(C) 2004-2011 Hisham H. Muhammad Released under the GNU GPL, see the COPYING file in the source distribution for its full text. */ -#define _GNU_SOURCE -#include "RichString.h" -#include "Object.h" -#include "CRT.h" -#include "ListItem.h" -#include "String.h" -#include "ProcessList.h" - -#include <math.h> -#include <string.h> -#include <stdlib.h> -#include <stdarg.h> - -#include "debug.h" -#include <assert.h> - -#ifndef USE_FUNKY_MODES -#define USE_FUNKY_MODES 1 -#endif - #define METER_BUFFER_LEN 128 +#include <sys/time.h> +#include "ListItem.h" +#include "ProcessList.h" typedef struct Meter_ Meter; -typedef struct MeterType_ MeterType; -typedef struct MeterMode_ MeterMode; -typedef void(*MeterType_Init)(Meter*); -typedef void(*MeterType_Done)(Meter*); -typedef void(*MeterType_SetMode)(Meter*, int); +typedef void(*Meter_Init)(Meter*); +typedef void(*Meter_Done)(Meter*); +typedef void(*Meter_UpdateMode)(Meter*, int); typedef void(*Meter_SetValues)(Meter*, char*, int); typedef void(*Meter_Draw)(Meter*, int, int, int); -struct MeterMode_ { - Meter_Draw draw; - const char* uiName; - int h; -}; - -struct MeterType_ { - Meter_SetValues setValues; - Object_Display display; - int mode; - int items; - double total; - int* attributes; +typedef struct MeterClass_ { + ObjectClass super; + const Meter_Init init; + const Meter_Done done; + const Meter_UpdateMode updateMode; + const Meter_Draw draw; + const Meter_SetValues setValues; + const int defaultMode; + const double total; + const int* attributes; const char* name; const char* uiName; const char* caption; - MeterType_Init init; - MeterType_Done done; - MeterType_SetMode setMode; - Meter_Draw draw; -}; + const char maxItems; + char curItems; +} MeterClass; + +#define As_Meter(this_) ((MeterClass*)((this_)->super.klass)) +#define Meter_initFn(this_) As_Meter(this_)->init +#define Meter_init(this_) As_Meter(this_)->init((Meter*)(this_)) +#define Meter_done(this_) As_Meter(this_)->done((Meter*)(this_)) +#define Meter_updateModeFn(this_) As_Meter(this_)->updateMode +#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_setValues(this_, c_, i_) As_Meter(this_)->setValues((Meter*)(this_), c_, i_) +#define Meter_defaultMode(this_) As_Meter(this_)->defaultMode +#define Meter_getItems(this_) As_Meter(this_)->curItems +#define Meter_setItems(this_, n_) As_Meter(this_)->curItems = (n_) +#define Meter_attributes(this_) As_Meter(this_)->attributes +#define Meter_name(this_) As_Meter(this_)->name +#define Meter_uiName(this_) As_Meter(this_)->uiName struct Meter_ { Object super; + Meter_Draw draw; + char* caption; - MeterType* type; int mode; int param; - Meter_Draw draw; - void* drawBuffer; + void* drawData; int h; ProcessList* pl; double* values; double total; }; +typedef struct MeterMode_ { + Meter_Draw draw; + const char* uiName; + int h; +} MeterMode; + typedef enum { CUSTOM_METERMODE = 0, BAR_METERMODE, TEXT_METERMODE, -#ifdef USE_FUNKY_MODES GRAPH_METERMODE, LED_METERMODE, -#endif LAST_METERMODE } MeterModeId; - -#include "CPUMeter.h" -#include "MemoryMeter.h" -#include "SwapMeter.h" -#include "TasksMeter.h" -#include "LoadAverageMeter.h" -#include "UptimeMeter.h" -#include "BatteryMeter.h" -#include "ClockMeter.h" -#include "HostnameMeter.h" +typedef struct GraphData_ { + struct timeval time; + double values[METER_BUFFER_LEN]; +} GraphData; #ifndef MIN @@ -108,15 +98,11 @@ typedef enum { #define MAX(a,b) ((a)>(b)?(a):(b)) #endif -#ifdef DEBUG -extern char* METER_CLASS; -#else -#define METER_CLASS NULL -#endif +extern MeterClass Meter_class; -extern MeterType* Meter_types[]; +extern MeterClass* Meter_types[]; -Meter* Meter_new(ProcessList* pl, int param, MeterType* type); +Meter* Meter_new(ProcessList* pl, int param, MeterClass* type); void Meter_delete(Object* cast); @@ -130,20 +116,18 @@ ListItem* Meter_toListItem(Meter* this); /* ---------- BarMeterMode ---------- */ -#ifdef USE_FUNKY_MODES - /* ---------- GraphMeterMode ---------- */ #define DrawDot(a,y,c) do { attrset(a); mvaddch(y, x+k, c); } while(0) /* ---------- LEDMeterMode ---------- */ -#endif +extern MeterMode* Meter_modes[]; -#ifdef USE_FUNKY_MODES +/* Blank meter */ -#endif +extern int BlankMeter_attributes[]; -extern MeterMode* Meter_modes[]; +extern MeterClass BlankMeter_class; #endif |