| Hisham Muhammad | 33113fe | 2006-04-10 20:40:38 +0000 | [diff] [blame] | 1 | /* Do not edit this file. It was automatically generated. */ |
| Hisham Muhammad | d6231ba | 2006-03-04 18:16:49 +0000 | [diff] [blame] | 2 | |
| 3 | #ifndef HEADER_Meter |
| 4 | #define HEADER_Meter |
| 5 | /* |
| Hisham Muhammad | f6e0b7d | 2006-06-06 20:28:42 +0000 | [diff] [blame] | 6 | htop - Meter.h |
| Hisham Muhammad | 300caa0 | 2011-05-26 16:35:07 +0000 | [diff] [blame] | 7 | (C) 2004-2011 Hisham H. Muhammad |
| Hisham Muhammad | d6231ba | 2006-03-04 18:16:49 +0000 | [diff] [blame] | 8 | Released under the GNU GPL, see the COPYING file |
| 9 | in the source distribution for its full text. |
| 10 | */ |
| 11 | |
| Hisham Muhammad | 33113fe | 2006-04-10 20:40:38 +0000 | [diff] [blame] | 12 | #define METER_BUFFER_LEN 128 |
| Hisham Muhammad | d6231ba | 2006-03-04 18:16:49 +0000 | [diff] [blame] | 13 | |
| Hisham Muhammad | 84281bd | 2011-12-26 21:35:57 +0000 | [diff] [blame] | 14 | #include "ListItem.h" |
| 15 | #include "ProcessList.h" |
| Hisham Muhammad | d6231ba | 2006-03-04 18:16:49 +0000 | [diff] [blame] | 16 | |
| 17 | typedef struct Meter_ Meter; |
| 18 | |
| Hisham Muhammad | 00b324b | 2012-12-05 15:12:20 +0000 | [diff] [blame] | 19 | typedef void(*Meter_Init)(Meter*); |
| 20 | typedef void(*Meter_Done)(Meter*); |
| 21 | typedef void(*Meter_UpdateMode)(Meter*, int); |
| Hisham Muhammad | 33113fe | 2006-04-10 20:40:38 +0000 | [diff] [blame] | 22 | typedef void(*Meter_SetValues)(Meter*, char*, int); |
| Hisham Muhammad | d6231ba | 2006-03-04 18:16:49 +0000 | [diff] [blame] | 23 | typedef void(*Meter_Draw)(Meter*, int, int, int); |
| 24 | |
| Hisham Muhammad | 00b324b | 2012-12-05 15:12:20 +0000 | [diff] [blame] | 25 | typedef 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 Muhammad | 00b324b | 2012-12-05 15:12:20 +0000 | [diff] [blame] | 33 | const double total; |
| 34 | const int* attributes; |
| Hisham Muhammad | 02a30bf | 2010-02-25 01:43:18 +0000 | [diff] [blame] | 35 | const char* name; |
| 36 | const char* uiName; |
| 37 | const char* caption; |
| Hisham Muhammad | c1e0f6e | 2014-01-16 01:40:47 -0200 | [diff] [blame] | 38 | const char maxItems; |
| 39 | char curItems; |
| Hisham Muhammad | 00b324b | 2012-12-05 15:12:20 +0000 | [diff] [blame] | 40 | } 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 Muhammad | c1e0f6e | 2014-01-16 01:40:47 -0200 | [diff] [blame] | 52 | #define Meter_getItems(this_) As_Meter(this_)->curItems |
| 53 | #define Meter_setItems(this_, n_) As_Meter(this_)->curItems = (n_) |
| Hisham Muhammad | 00b324b | 2012-12-05 15:12:20 +0000 | [diff] [blame] | 54 | #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 Muhammad | d6231ba | 2006-03-04 18:16:49 +0000 | [diff] [blame] | 57 | |
| 58 | struct Meter_ { |
| 59 | Object super; |
| Hisham Muhammad | 00b324b | 2012-12-05 15:12:20 +0000 | [diff] [blame] | 60 | Meter_Draw draw; |
| 61 | |
| Hisham Muhammad | 33113fe | 2006-04-10 20:40:38 +0000 | [diff] [blame] | 62 | char* caption; |
| Hisham Muhammad | 33113fe | 2006-04-10 20:40:38 +0000 | [diff] [blame] | 63 | int mode; |
| 64 | int param; |
| Hisham Muhammad | a9c0ea3 | 2011-03-22 20:37:08 +0000 | [diff] [blame] | 65 | void* drawData; |
| Hisham Muhammad | 33113fe | 2006-04-10 20:40:38 +0000 | [diff] [blame] | 66 | int h; |
| 67 | ProcessList* pl; |
| Hisham Muhammad | d6231ba | 2006-03-04 18:16:49 +0000 | [diff] [blame] | 68 | double* values; |
| 69 | double total; |
| Hisham Muhammad | d6231ba | 2006-03-04 18:16:49 +0000 | [diff] [blame] | 70 | }; |
| 71 | |
| Hisham Muhammad | 00b324b | 2012-12-05 15:12:20 +0000 | [diff] [blame] | 72 | typedef struct MeterMode_ { |
| 73 | Meter_Draw draw; |
| 74 | const char* uiName; |
| 75 | int h; |
| 76 | } MeterMode; |
| Hisham Muhammad | a9c0ea3 | 2011-03-22 20:37:08 +0000 | [diff] [blame] | 77 | |
| Hisham Muhammad | 33113fe | 2006-04-10 20:40:38 +0000 | [diff] [blame] | 78 | typedef enum { |
| 79 | CUSTOM_METERMODE = 0, |
| 80 | BAR_METERMODE, |
| 81 | TEXT_METERMODE, |
| Hisham Muhammad | 33113fe | 2006-04-10 20:40:38 +0000 | [diff] [blame] | 82 | GRAPH_METERMODE, |
| 83 | LED_METERMODE, |
| Hisham Muhammad | 33113fe | 2006-04-10 20:40:38 +0000 | [diff] [blame] | 84 | LAST_METERMODE |
| 85 | } MeterModeId; |
| 86 | |
| Hisham Muhammad | 00b324b | 2012-12-05 15:12:20 +0000 | [diff] [blame] | 87 | typedef struct GraphData_ { |
| 88 | struct timeval time; |
| 89 | double values[METER_BUFFER_LEN]; |
| 90 | } GraphData; |
| 91 | |
| Hisham Muhammad | 33113fe | 2006-04-10 20:40:38 +0000 | [diff] [blame] | 92 | |
| Hisham Muhammad | 33113fe | 2006-04-10 20:40:38 +0000 | [diff] [blame] | 93 | #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 Muhammad | d6231ba | 2006-03-04 18:16:49 +0000 | [diff] [blame] | 99 | |
| Hisham Muhammad | 00b324b | 2012-12-05 15:12:20 +0000 | [diff] [blame] | 100 | extern MeterClass Meter_class; |
| Hisham Muhammad | d6231ba | 2006-03-04 18:16:49 +0000 | [diff] [blame] | 101 | |
| Hisham Muhammad | 00b324b | 2012-12-05 15:12:20 +0000 | [diff] [blame] | 102 | extern MeterClass* Meter_types[]; |
| Hisham Muhammad | d6231ba | 2006-03-04 18:16:49 +0000 | [diff] [blame] | 103 | |
| Hisham Muhammad | 00b324b | 2012-12-05 15:12:20 +0000 | [diff] [blame] | 104 | Meter* Meter_new(ProcessList* pl, int param, MeterClass* type); |
| Hisham Muhammad | d6231ba | 2006-03-04 18:16:49 +0000 | [diff] [blame] | 105 | |
| 106 | void Meter_delete(Object* cast); |
| 107 | |
| Hisham Muhammad | 02a30bf | 2010-02-25 01:43:18 +0000 | [diff] [blame] | 108 | void Meter_setCaption(Meter* this, const char* caption); |
| Hisham Muhammad | d6231ba | 2006-03-04 18:16:49 +0000 | [diff] [blame] | 109 | |
| Hisham Muhammad | 33113fe | 2006-04-10 20:40:38 +0000 | [diff] [blame] | 110 | void Meter_setMode(Meter* this, int modeIndex); |
| Hisham Muhammad | d6231ba | 2006-03-04 18:16:49 +0000 | [diff] [blame] | 111 | |
| 112 | ListItem* Meter_toListItem(Meter* this); |
| 113 | |
| Hisham Muhammad | 33113fe | 2006-04-10 20:40:38 +0000 | [diff] [blame] | 114 | /* ---------- TextMeterMode ---------- */ |
| 115 | |
| Hisham Muhammad | 33113fe | 2006-04-10 20:40:38 +0000 | [diff] [blame] | 116 | /* ---------- BarMeterMode ---------- */ |
| 117 | |
| Hisham Muhammad | 33113fe | 2006-04-10 20:40:38 +0000 | [diff] [blame] | 118 | /* ---------- GraphMeterMode ---------- */ |
| 119 | |
| 120 | #define DrawDot(a,y,c) do { attrset(a); mvaddch(y, x+k, c); } while(0) |
| 121 | |
| Hisham Muhammad | 33113fe | 2006-04-10 20:40:38 +0000 | [diff] [blame] | 122 | /* ---------- LEDMeterMode ---------- */ |
| 123 | |
| Hisham Muhammad | da23c8c | 2008-03-09 08:58:38 +0000 | [diff] [blame] | 124 | extern MeterMode* Meter_modes[]; |
| 125 | |
| Hisham Muhammad | 6d90e58 | 2014-02-27 16:35:22 -0300 | [diff] [blame^] | 126 | /* Blank meter */ |
| 127 | |
| 128 | extern int BlankMeter_attributes[]; |
| 129 | |
| 130 | extern MeterClass BlankMeter_class; |
| 131 | |
| Hisham Muhammad | d6231ba | 2006-03-04 18:16:49 +0000 | [diff] [blame] | 132 | #endif |