mirror of
https://github.com/Llewellynvdm/conky.git
synced 2025-01-29 01:58:26 +00:00
Implemented Invert Y Axis Flag Feature
This commit is contained in:
parent
ad0c9d3e23
commit
965105bb9e
16
src/conky.cc
16
src/conky.cc
@ -1009,15 +1009,17 @@ static inline void draw_graph_bars(special_node *current, std::unique_ptr<Colour
|
|||||||
set_foreground_color(tmpcolour[colour_idx++]);
|
set_foreground_color(tmpcolour[colour_idx++]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/* Handle the case where y axis is to be inverted */
|
||||||
|
int offsety1 = current->inverty ? by : by + h;
|
||||||
|
int offsety2 = current->inverty ? by + current->graph[j] * (h - 1) / current->scale
|
||||||
|
: round_to_positive_int(static_cast<double>(by) + h -
|
||||||
|
current->graph[j] * (h - 1) /
|
||||||
|
current->scale);
|
||||||
/* this is mugfugly, but it works */
|
/* this is mugfugly, but it works */
|
||||||
if (display_output()) {
|
if (display_output()) {
|
||||||
display_output()->draw_line(
|
display_output()->draw_line(
|
||||||
text_offset.x() + cur_x + i + 1, text_offset.y() + by + h,
|
text_offset.x() + cur_x + i + 1, text_offset.y() + offsety1,
|
||||||
text_offset.x() + cur_x + i + 1,
|
text_offset.x() + cur_x + i + 1, text_offset.y() + offsety2);
|
||||||
text_offset.y() +
|
|
||||||
round_to_positive_int(static_cast<double>(by) + h -
|
|
||||||
current->graph[j] * (h - 1) /
|
|
||||||
current->scale));
|
|
||||||
}
|
}
|
||||||
++j;
|
++j;
|
||||||
}
|
}
|
||||||
@ -1321,7 +1323,7 @@ int draw_each_line_inner(char *s, int special_index, int last_special_applied) {
|
|||||||
}
|
}
|
||||||
colour_idx = 0;
|
colour_idx = 0;
|
||||||
if(current->invertx){
|
if(current->invertx){
|
||||||
for (i = 0; i <= w- 2; i++) {
|
for (i = 0; i <= w - 2; i++) {
|
||||||
draw_graph_bars(current, tmpcolour, text_offset,
|
draw_graph_bars(current, tmpcolour, text_offset,
|
||||||
i, j, w, colour_idx, cur_x, by, h);
|
i, j, w, colour_idx, cur_x, by, h);
|
||||||
}
|
}
|
||||||
|
@ -85,6 +85,7 @@ conky::simple_config_setting<std::string> console_graph_ticks(
|
|||||||
|
|
||||||
/* special flag for inverting axis */
|
/* special flag for inverting axis */
|
||||||
#define SF_INVERTX (1 << 0)
|
#define SF_INVERTX (1 << 0)
|
||||||
|
#define SF_INVERTY (1 << 1)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Special data typedefs
|
* Special data typedefs
|
||||||
@ -250,6 +251,7 @@ std::pair<char *, size_t> scan_command(const char *s) {
|
|||||||
* -l will set the showlog flag, enabling logarithmic graph scales
|
* -l will set the showlog flag, enabling logarithmic graph scales
|
||||||
* -t will set the tempgrad member to true, enabling temperature gradient colors
|
* -t will set the tempgrad member to true, enabling temperature gradient colors
|
||||||
* -x will set the invertx flag to true, inverting the x axis
|
* -x will set the invertx flag to true, inverting the x axis
|
||||||
|
* -y will set the invertx flag to true, inverting the y axis
|
||||||
*
|
*
|
||||||
* @param[out] obj struct in which to save width, height and other options
|
* @param[out] obj struct in which to save width, height and other options
|
||||||
* @param[in] args argument string to parse
|
* @param[in] args argument string to parse
|
||||||
@ -298,6 +300,12 @@ bool scan_graph(struct text_object *obj, const char *argstr, double defscale, ch
|
|||||||
strncmp(argstr, INVERTX, strlen(INVERTX)) == 0) {
|
strncmp(argstr, INVERTX, strlen(INVERTX)) == 0) {
|
||||||
g->invertflag |= SF_INVERTX;
|
g->invertflag |= SF_INVERTX;
|
||||||
}
|
}
|
||||||
|
/* set inverty to true if '-y' specified.
|
||||||
|
* It doesn't matter where the argument is exactly. */
|
||||||
|
if ((strstr(argstr, " " INVERTY) != nullptr) ||
|
||||||
|
strncmp(argstr, INVERTY, strlen(INVERTY)) == 0) {
|
||||||
|
g->invertflag |= SF_INVERTY;
|
||||||
|
}
|
||||||
|
|
||||||
/* all the following functions try to interpret the beginning of a
|
/* all the following functions try to interpret the beginning of a
|
||||||
* a string with different format strings. If successful, they return from
|
* a string with different format strings. If successful, they return from
|
||||||
@ -322,9 +330,7 @@ bool scan_graph(struct text_object *obj, const char *argstr, double defscale, ch
|
|||||||
* therfore we ensure last_colour_name is not TEMPGRAD or LOGGRAPH */
|
* therfore we ensure last_colour_name is not TEMPGRAD or LOGGRAPH */
|
||||||
if (sscanf(argstr, "%d,%d %s %s", &g->height, &g->width, first_colour_name,
|
if (sscanf(argstr, "%d,%d %s %s", &g->height, &g->width, first_colour_name,
|
||||||
last_colour_name) == 4 &&
|
last_colour_name) == 4 &&
|
||||||
strcmp(last_colour_name, TEMPGRAD) != 0 &&
|
strchr(last_colour_name,'-') == NULL) {
|
||||||
strcmp(last_colour_name, LOGGRAPH) != 0 &&
|
|
||||||
strcmp(last_colour_name, INVERTX) != 0) {
|
|
||||||
apply_graph_colours(g, first_colour_name, last_colour_name);
|
apply_graph_colours(g, first_colour_name, last_colour_name);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -365,9 +371,7 @@ bool scan_graph(struct text_object *obj, const char *argstr, double defscale, ch
|
|||||||
* This could match as [scale] [-l | -t],
|
* This could match as [scale] [-l | -t],
|
||||||
* therfore we ensure last_colour_name is not TEMPGRAD or LOGGRAPH */
|
* therfore we ensure last_colour_name is not TEMPGRAD or LOGGRAPH */
|
||||||
if (sscanf(argstr, "%s %s", first_colour_name, last_colour_name) == 2 &&
|
if (sscanf(argstr, "%s %s", first_colour_name, last_colour_name) == 2 &&
|
||||||
strcmp(last_colour_name, TEMPGRAD) != 0 &&
|
strchr(last_colour_name,'-') == NULL) {
|
||||||
strcmp(last_colour_name, LOGGRAPH) != 0 &&
|
|
||||||
strcmp(last_colour_name, INVERTX) != 0) {
|
|
||||||
apply_graph_colours(g, first_colour_name, last_colour_name);
|
apply_graph_colours(g, first_colour_name, last_colour_name);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -647,6 +651,9 @@ void new_graph(struct text_object *obj, char *buf, int buf_max_size,
|
|||||||
if ((g->invertflag & SF_INVERTX) != 0){
|
if ((g->invertflag & SF_INVERTX) != 0){
|
||||||
s->invertx = 1;
|
s->invertx = 1;
|
||||||
}
|
}
|
||||||
|
if ((g->invertflag & SF_INVERTY) != 0){
|
||||||
|
s->inverty = 1;
|
||||||
|
}
|
||||||
if (g->speedgraph) {
|
if (g->speedgraph) {
|
||||||
s->speedgraph = TRUE;
|
s->speedgraph = TRUE;
|
||||||
}
|
}
|
||||||
|
@ -40,6 +40,7 @@
|
|||||||
#define LOGGRAPH "-l"
|
#define LOGGRAPH "-l"
|
||||||
#define TEMPGRAD "-t"
|
#define TEMPGRAD "-t"
|
||||||
#define INVERTX "-x"
|
#define INVERTX "-x"
|
||||||
|
#define INVERTY "-y"
|
||||||
|
|
||||||
enum class text_node_t : uint32_t {
|
enum class text_node_t : uint32_t {
|
||||||
NONSPECIAL = 0,
|
NONSPECIAL = 0,
|
||||||
@ -83,6 +84,7 @@ struct special_node {
|
|||||||
char tempgrad;
|
char tempgrad;
|
||||||
char speedgraph;
|
char speedgraph;
|
||||||
char invertx;
|
char invertx;
|
||||||
|
char inverty;
|
||||||
struct special_node *next;
|
struct special_node *next;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user