blob: 2f58b8fcc64de8995a242f53596fbd1e16a97641 [file] [log] [blame]
Hisham Muhammad33113fe2006-04-10 20:40:38 +00001/* Do not edit this file. It was automatically generated. */
Hisham Muhammadd6231ba2006-03-04 18:16:49 +00002
3#ifndef HEADER_Meter
4#define HEADER_Meter
5/*
Hisham Muhammadf6e0b7d2006-06-06 20:28:42 +00006htop - Meter.h
Hisham Muhammad300caa02011-05-26 16:35:07 +00007(C) 2004-2011 Hisham H. Muhammad
Hisham Muhammadd6231ba2006-03-04 18:16:49 +00008Released under the GNU GPL, see the COPYING file
9in the source distribution for its full text.
10*/
11
Hisham Muhammad33113fe2006-04-10 20:40:38 +000012#define METER_BUFFER_LEN 128
Hisham Muhammadd6231ba2006-03-04 18:16:49 +000013
Hisham Muhammad84281bd2011-12-26 21:35:57 +000014#include "ListItem.h"
15#include "ProcessList.h"
Hisham Muhammadd6231ba2006-03-04 18:16:49 +000016
17typedef struct Meter_ Meter;
18
Hisham Muhammad00b324b2012-12-05 15:12:20 +000019typedef void(*Meter_Init)(Meter*);
20typedef void(*Meter_Done)(Meter*);
21typedef void(*Meter_UpdateMode)(Meter*, int);
Hisham Muhammad33113fe2006-04-10 20:40:38 +000022typedef void(*Meter_SetValues)(Meter*, char*, int);
Hisham Muhammadd6231ba2006-03-04 18:16:49 +000023typedef void(*Meter_Draw)(Meter*, int, int, int);
24
Hisham Muhammad00b324b2012-12-05 15:12:20 +000025typedef struct MeterClass_ {
26 ObjectClass super;
27 const Meter_Init init;
28 const Meter_Done done;
29 const Meter_UpdateMode updateMode;
30 const Meter_Draw draw;
31 const Meter_SetValues setValues;
32 const int defaultMode;
Hisham Muhammad00b324b2012-12-05 15:12:20 +000033 const double total;
34 const int* attributes;
Hisham Muhammad02a30bf2010-02-25 01:43:18 +000035 const char* name;
36 const char* uiName;
37 const char* caption;
Hisham Muhammadc1e0f6e2014-01-16 01:40:47 -020038 const char maxItems;
39 char curItems;
Hisham Muhammad00b324b2012-12-05 15:12:20 +000040} MeterClass;
41
42#define As_Meter(this_) ((MeterClass*)((this_)->super.klass))
43#define Meter_initFn(this_) As_Meter(this_)->init
44#define Meter_init(this_) As_Meter(this_)->init((Meter*)(this_))
45#define Meter_done(this_) As_Meter(this_)->done((Meter*)(this_))
46#define Meter_updateModeFn(this_) As_Meter(this_)->updateMode
47#define Meter_updateMode(this_, m_) As_Meter(this_)->updateMode((Meter*)(this_), m_)
48#define Meter_drawFn(this_) As_Meter(this_)->draw
49#define Meter_doneFn(this_) As_Meter(this_)->done
50#define Meter_setValues(this_, c_, i_) As_Meter(this_)->setValues((Meter*)(this_), c_, i_)
51#define Meter_defaultMode(this_) As_Meter(this_)->defaultMode
Hisham Muhammadc1e0f6e2014-01-16 01:40:47 -020052#define Meter_getItems(this_) As_Meter(this_)->curItems
53#define Meter_setItems(this_, n_) As_Meter(this_)->curItems = (n_)
Hisham Muhammad00b324b2012-12-05 15:12:20 +000054#define Meter_attributes(this_) As_Meter(this_)->attributes
55#define Meter_name(this_) As_Meter(this_)->name
56#define Meter_uiName(this_) As_Meter(this_)->uiName
Hisham Muhammadd6231ba2006-03-04 18:16:49 +000057
58struct Meter_ {
59 Object super;
Hisham Muhammad00b324b2012-12-05 15:12:20 +000060 Meter_Draw draw;
61
Hisham Muhammad33113fe2006-04-10 20:40:38 +000062 char* caption;
Hisham Muhammad33113fe2006-04-10 20:40:38 +000063 int mode;
64 int param;
Hisham Muhammada9c0ea32011-03-22 20:37:08 +000065 void* drawData;
Hisham Muhammad33113fe2006-04-10 20:40:38 +000066 int h;
67 ProcessList* pl;
Hisham Muhammadd6231ba2006-03-04 18:16:49 +000068 double* values;
69 double total;
Hisham Muhammadd6231ba2006-03-04 18:16:49 +000070};
71
Hisham Muhammad00b324b2012-12-05 15:12:20 +000072typedef struct MeterMode_ {
73 Meter_Draw draw;
74 const char* uiName;
75 int h;
76} MeterMode;
Hisham Muhammada9c0ea32011-03-22 20:37:08 +000077
Hisham Muhammad33113fe2006-04-10 20:40:38 +000078typedef enum {
79 CUSTOM_METERMODE = 0,
80 BAR_METERMODE,
81 TEXT_METERMODE,
Hisham Muhammad33113fe2006-04-10 20:40:38 +000082 GRAPH_METERMODE,
83 LED_METERMODE,
Hisham Muhammad33113fe2006-04-10 20:40:38 +000084 LAST_METERMODE
85} MeterModeId;
86
Hisham Muhammad00b324b2012-12-05 15:12:20 +000087typedef struct GraphData_ {
88 struct timeval time;
89 double values[METER_BUFFER_LEN];
90} GraphData;
91
Hisham Muhammad33113fe2006-04-10 20:40:38 +000092
Hisham Muhammad33113fe2006-04-10 20:40:38 +000093#ifndef MIN
94#define MIN(a,b) ((a)<(b)?(a):(b))
95#endif
96#ifndef MAX
97#define MAX(a,b) ((a)>(b)?(a):(b))
98#endif
Hisham Muhammadd6231ba2006-03-04 18:16:49 +000099
Hisham Muhammad00b324b2012-12-05 15:12:20 +0000100extern MeterClass Meter_class;
Hisham Muhammadd6231ba2006-03-04 18:16:49 +0000101
Hisham Muhammad00b324b2012-12-05 15:12:20 +0000102extern MeterClass* Meter_types[];
Hisham Muhammadd6231ba2006-03-04 18:16:49 +0000103
Hisham Muhammad00b324b2012-12-05 15:12:20 +0000104Meter* Meter_new(ProcessList* pl, int param, MeterClass* type);
Hisham Muhammadd6231ba2006-03-04 18:16:49 +0000105
106void Meter_delete(Object* cast);
107
Hisham Muhammad02a30bf2010-02-25 01:43:18 +0000108void Meter_setCaption(Meter* this, const char* caption);
Hisham Muhammadd6231ba2006-03-04 18:16:49 +0000109
Hisham Muhammad33113fe2006-04-10 20:40:38 +0000110void Meter_setMode(Meter* this, int modeIndex);
Hisham Muhammadd6231ba2006-03-04 18:16:49 +0000111
112ListItem* Meter_toListItem(Meter* this);
113
Hisham Muhammad33113fe2006-04-10 20:40:38 +0000114/* ---------- TextMeterMode ---------- */
115
Hisham Muhammad33113fe2006-04-10 20:40:38 +0000116/* ---------- BarMeterMode ---------- */
117
Hisham Muhammad33113fe2006-04-10 20:40:38 +0000118/* ---------- GraphMeterMode ---------- */
119
120#define DrawDot(a,y,c) do { attrset(a); mvaddch(y, x+k, c); } while(0)
121
Hisham Muhammad33113fe2006-04-10 20:40:38 +0000122/* ---------- LEDMeterMode ---------- */
123
Hisham Muhammadda23c8c2008-03-09 08:58:38 +0000124extern MeterMode* Meter_modes[];
125
Hisham Muhammad6d90e582014-02-27 16:35:22 -0300126/* Blank meter */
127
128extern int BlankMeter_attributes[];
129
130extern MeterClass BlankMeter_class;
131
Hisham Muhammadd6231ba2006-03-04 18:16:49 +0000132#endif