From 31b71b67011fa52f091df6fe536a11d6d0bfb256 Mon Sep 17 00:00:00 2001 From: Daniel Lange Date: Mon, 25 Jul 2016 18:25:28 +0200 Subject: Imported Upstream version 2.0.2 --- Meter.c | 39 ++++++++++++++++----------------------- 1 file changed, 16 insertions(+), 23 deletions(-) (limited to 'Meter.c') diff --git a/Meter.c b/Meter.c index 9a7868e..49fe8d0 100644 --- a/Meter.c +++ b/Meter.c @@ -37,7 +37,7 @@ typedef struct Meter_ Meter; 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_UpdateValues)(Meter*, char*, int); typedef void(*Meter_Draw)(Meter*, int, int, int); typedef struct MeterClass_ { @@ -46,7 +46,7 @@ typedef struct MeterClass_ { const Meter_Done done; const Meter_UpdateMode updateMode; const Meter_Draw draw; - const Meter_SetValues setValues; + const Meter_UpdateValues updateValues; const int defaultMode; const double total; const int* attributes; @@ -66,7 +66,8 @@ 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_setValues(this_, c_, i_) As_Meter(this_)->setValues((Meter*)(this_), c_, i_) +#define Meter_updateValues(this_, buf_, sz_) \ + As_Meter(this_)->updateValues((Meter*)(this_), buf_, sz_) #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_) @@ -132,12 +133,8 @@ Meter* Meter_new(struct ProcessList_* pl, int param, MeterClass* type) { this->h = 1; this->param = param; this->pl = pl; - char maxItems = type->maxItems; - if (maxItems == 0) { - maxItems = 1; - } - type->curItems = maxItems; - this->values = xCalloc(maxItems, sizeof(double)); + type->curItems = type->maxItems; + this->values = xCalloc(type->maxItems, sizeof(double)); this->total = type->total; this->caption = xStrdup(type->caption); if (Meter_initFn(this)) @@ -184,8 +181,7 @@ void Meter_delete(Object* cast) { if (Meter_doneFn(this)) { Meter_done(this); } - if (this->drawData) - free(this->drawData); + free(this->drawData); free(this->caption); free(this->values); free(this); @@ -216,8 +212,7 @@ void Meter_setMode(Meter* this, int modeIndex) { Meter_updateMode(this, modeIndex); } else { assert(modeIndex >= 1); - if (this->drawData) - free(this->drawData); + free(this->drawData); this->drawData = NULL; MeterMode* mode = Meter_modes[modeIndex]; @@ -249,7 +244,7 @@ ListItem* Meter_toListItem(Meter* this, bool moving) { static void TextMeterMode_draw(Meter* this, int x, int y, int w) { char buffer[METER_BUFFER_LEN]; - Meter_setValues(this, buffer, METER_BUFFER_LEN - 1); + Meter_updateValues(this, buffer, METER_BUFFER_LEN - 1); (void) w; attrset(CRT_colors[METER_TEXT]); @@ -269,7 +264,7 @@ static char BarMeterMode_characters[] = "|#*@$%&."; static void BarMeterMode_draw(Meter* this, int x, int y, int w) { char buffer[METER_BUFFER_LEN]; - Meter_setValues(this, buffer, METER_BUFFER_LEN - 1); + Meter_updateValues(this, buffer, METER_BUFFER_LEN - 1); w -= 2; attrset(CRT_colors[METER_TEXT]); @@ -291,11 +286,8 @@ static void BarMeterMode_draw(Meter* this, int x, int y, int w) { char bar[w + 1]; int blockSizes[10]; - for (int i = 0; i < w; i++) - bar[i] = ' '; - const size_t barOffset = w - MIN((int)strlen(buffer), w); - snprintf(bar + barOffset, w - barOffset + 1, "%s", buffer); + snprintf(bar, w + 1, "%*s", w, buffer); // First draw in the bar[] buffer... int offset = 0; @@ -397,7 +389,7 @@ static void GraphMeterMode_draw(Meter* this, int x, int y, int w) { data->values[i] = data->values[i+1]; char buffer[nValues]; - Meter_setValues(this, buffer, nValues - 1); + Meter_updateValues(this, buffer, nValues - 1); double value = 0.0; int items = Meter_getItems(this); @@ -466,7 +458,7 @@ static void LEDMeterMode_draw(Meter* this, int x, int y, int w) { LEDMeterMode_digits = LEDMeterMode_digitsAscii; char buffer[METER_BUFFER_LEN]; - Meter_setValues(this, buffer, METER_BUFFER_LEN - 1); + Meter_updateValues(this, buffer, METER_BUFFER_LEN - 1); RichString_begin(out); Meter_displayBuffer(this, buffer, &out); @@ -529,7 +521,7 @@ MeterMode* Meter_modes[] = { /* Blank meter */ -static void BlankMeter_setValues(Meter* this, char* buffer, int size) { +static void BlankMeter_updateValues(Meter* this, char* buffer, int size) { (void) this; (void) buffer; (void) size; } @@ -548,8 +540,9 @@ MeterClass BlankMeter_class = { .delete = Meter_delete, .display = BlankMeter_display, }, - .setValues = BlankMeter_setValues, + .updateValues = BlankMeter_updateValues, .defaultMode = TEXT_METERMODE, + .maxItems = 0, .total = 100.0, .attributes = BlankMeter_attributes, .name = "Blank", -- cgit v1.2.3