/*
* ----------------------------------------------------------------------------
* "THE BEER-WARE LICENSE" (Revision 42):
* <fredde at shapeshifter dot se> wrote this file. As long as you retain this
* notice you can do whatever you want with this stuff. If we meet some day,
* and you think this stuff is worth it, you can buy me a beer in return.
* Fredrik Lindberg
* ----------------------------------------------------------------------------
*/
#include <stdio.h>
#include <string.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include "xwlans.h"
int
init_win(struct xw_t *xw)
{
XGCValues gvc;
if ((xw->disp = XOpenDisplay(xw->display)) == 0)
{
fprintf(stderr, "Could not open display %s\n", xw->display);
return 1;
}
xw->screen = DefaultScreen(xw->disp);
xw->win = RootWindow(xw->disp, xw->screen);
gvc.graphics_exposures = True;
xw->winGC = XCreateGC(xw->disp, xw->win, GCBackground, &gvc);
XMapWindow(xw->disp, xw->win);
XSelectInput(xw->disp, xw->win, ExposureMask|FocusChangeMask);
return 0;
}
void
close_win(struct xw_t *xw)
{
XSync(xw->disp, False);
clear_win(xw);
XSync(xw->disp, False);
XCloseDisplay(xw->disp);
}
XColor
get_color(struct xw_t *xw, char *color)
{
XColor c;
XWindowAttributes atrb;
XGetWindowAttributes(xw->disp, xw->win, &atrb);
XParseColor(xw->disp, atrb.colormap, color, &c);
XAllocColor(xw->disp, atrb.colormap, &c);
return c;
}
void
redraw(struct xw_t *xw, int value, int max)
{
int bar_len = value * ((xw->width * 0.70) / xw->bmax);
int mbar = (int)(xw->width * 0.70);
int bheight = (int)(xw->height - 7);
char buffer[16];
sprintf(buffer, "%d/%d dBm", value, max);
if (xw->opt_shadow == 1)
{
XSetForeground(xw->disp, xw->winGC, xw->c_shadow.pixel);
XFillRectangle(xw->disp, xw->win, xw->winGC, xw->x + SHW_OFFSET, xw->y + SHW_OFFSET, bar_len, bheight);
XDrawLine(xw->disp, xw->win, xw->winGC, xw->x + SHW_OFFSET, xw->y + bheight + 2 + SHW_OFFSET,
xw->x + SHW_OFFSET, xw->y + bheight + 5 + SHW_OFFSET);
XDrawLine(xw->disp, xw->win, xw->winGC, xw->x + (mbar/2) + SHW_OFFSET, xw->y + bheight + 2 + SHW_OFFSET,
xw->x + (mbar/2) + SHW_OFFSET, xw->y + bheight + 5 + SHW_OFFSET);
XDrawLine(xw->disp, xw->win, xw->winGC, xw->x + (mbar) + SHW_OFFSET, xw->y + bheight + 2 + SHW_OFFSET,
xw->x + (mbar) + SHW_OFFSET, xw->y + bheight + 5 + SHW_OFFSET);
XSetForeground(xw->disp, xw->winGC, xw->c_shadow.pixel);
XDrawString(xw->disp, xw->win, xw->winGC, xw->x + (xw->width * 0.70) + 3 + SHW_OFFSET,
xw->y + bheight + SHW_OFFSET, buffer, strlen(buffer));
}
XSetForeground(xw->disp, xw->winGC, xw->c_bar.pixel);
XFillRectangle(xw->disp, xw->win, xw->winGC, xw->x, xw->y, bar_len, bheight);
XDrawLine(xw->disp, xw->win, xw->winGC, xw->x, xw->y + bheight + 2, xw->x, xw->y + bheight + 5);
XDrawLine(xw->disp, xw->win, xw->winGC, xw->x + (mbar/2), xw->y + bheight + 2, xw->x + (mbar/2), xw->y + bheight + 5);
XDrawLine(xw->disp, xw->win, xw->winGC, xw->x + (mbar), xw->y + bheight + 2, xw->x + (mbar), xw->y + bheight + 5);
XSetForeground(xw->disp, xw->winGC, xw->c_text.pixel);
XDrawString(xw->disp, xw->win, xw->winGC, xw->x + (xw->width * 0.70) + 3, xw->y + bheight, buffer, strlen(buffer));
}
void
clear_win(struct xw_t *xw)
{
XClearArea(xw->disp, xw->win, xw->x, xw->y, xw->width, xw->height, False);
}
syntax highlighted by Code2HTML, v. 0.9.1