]> granicus.if.org Git - vnstat/commitdiff
new vnstati options: --altdate for using alternative date and time text locations...
authorTeemu Toivola <git@humdi.net>
Thu, 25 Sep 2014 17:15:54 +0000 (20:15 +0300)
committerTeemu Toivola <git@humdi.net>
Thu, 25 Sep 2014 17:15:54 +0000 (20:15 +0300)
CHANGES
man/vnstati.1
src/image.c
src/image.h
src/vnstati.c

diff --git a/CHANGES b/CHANGES
index 1aec8c325e3dac5a2f03cea4978baeb70ebb3a69..8fb25d259a556b7554291e2377443023f50d79e3 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -2,7 +2,10 @@
 
  - Fix: getgroup() test in Debian GNU/kFreeBSD (patch by Felix Geyer)
  - Dynamic unit selection in hourly output instead of being fixed to KiB
- - Add -nl / --nolegend option to image output for hiding the rx/tx legend
+ - New options in image output (vnstati)
+     * -nl / --nolegend for hiding the rx/tx legend
+     * --altdate for using alternative date and time text location
+     * --headertext for using custom text string in image header section
  - Add legend to hourly output image
 
 
index 10586a2e4d9f28eff5fe72ab30a73063533cd876..54295b09fed315d95814b4d02b9eed69d5b42f13 100644 (file)
@@ -9,6 +9,8 @@ vnstati \- png image output support for vnStat
 [
 .B \-cdhimostv?
 ] [
+.B \-\-altdate
+] [
 .B \-\-cache
 .I time
 ] [
@@ -20,6 +22,9 @@ vnstati \- png image output support for vnStat
 .B \-\-dbdir
 .I directory
 ] [
+.B \-\-headertext
+.I text
+] [
 .B \-\-help
 ] [
 .B \-\-hours
@@ -86,6 +91,14 @@ can be outputted either to a file or to standard output.
 
 .SH OPTIONS
 
+.TP
+.B "--altdate"
+Use alternative date and time text location. The date and time text will be moved
+from the upper right header section to the lower left corner. This option
+will have no effect if
+.B "-nh, --noheader"
+has been selected.
+
 .TP
 .BI "-c, --cache " time
 Update output file only if at least
@@ -111,6 +124,19 @@ Use
 as database directory instead of using the directory specified in the configuration
 file or the hardcoded default if no configuration file is available.
 
+.TP
+.BI "--headertext " text
+Show
+.I text
+in image header section instead of automatically generated interface identification.
+.I text
+is limited to 64 characters and may not get completely shown if longer than the width of
+the image. Use with
+.B "--altdate"
+if maximal space is needed. This option will have no effect if
+.B "-nh, --noheader"
+has been selected.
+
 .TP
 .B "-h, --hours"
 Output traffic statistics on a hourly basis for the last 24 hours.
index 216f21eedc4e50c7f5a6460524d345a4e2648722..2d51c0893798581c1cbdc4da086e76c5707c32c9 100644 (file)
@@ -8,6 +8,8 @@ void initimagecontent(IMAGECONTENT *ic)
        ic->showheader = 1;
        ic->showedge = 1;
        ic->showlegend = 1;
+       ic->altdate = 0;
+       ic->headertext[0] = '\0';
 }
 
 void drawimage(IMAGECONTENT *ic)
@@ -150,31 +152,21 @@ void layoutinit(IMAGECONTENT *ic, char *title, int width, int height)
                gdImageRectangle(ic->im, 0, 0, width-1, height-1, ic->cedge);
        }
 
-       /* titlebox, title, date */
+       /* titlebox with title */
        if (ic->showheader) {
-               if (ic->showedge) {
-                       gdImageFilledRectangle(ic->im, 3, 3, width-4, 24, ic->cheader);
-                       gdImageString(ic->im, gdFontGetGiant(), 12, 6, (unsigned char*)title, ic->cheadertitle);
-                       gdImageString(ic->im, gdFontGetTiny(), width-(strlen(datestring)*gdFontGetTiny()->w+12), 10, (unsigned char*)datestring, ic->cheaderdate);
-               } else {
-                       gdImageFilledRectangle(ic->im, 2, 2, width-3, 24, ic->cheader);
-                       gdImageString(ic->im, gdFontGetGiant(), 12, 5, (unsigned char*)title, ic->cheadertitle);
-                       gdImageString(ic->im, gdFontGetTiny(), width-(strlen(datestring)*gdFontGetTiny()->w+12), 9, (unsigned char*)datestring, ic->cheaderdate);
-               }
-       } else {
-               if (ic->showedge) {
-                       gdImageString(ic->im, gdFontGetTiny(), 6, height-13, (unsigned char*)datestring, ic->cvnstat);
-               } else {
-                       gdImageString(ic->im, gdFontGetTiny(), 5, height-12, (unsigned char*)datestring, ic->cvnstat);
-               }
+               gdImageFilledRectangle(ic->im, 2+ic->showedge, 2+ic->showedge, width-3-ic->showedge, 24, ic->cheader);
+               gdImageString(ic->im, gdFontGetGiant(), 12, 5+ic->showedge, (unsigned char*)title, ic->cheadertitle);
        }
 
-       /* generator */
-       if (ic->showedge) {
-               gdImageString(ic->im, gdFontGetTiny(), width-115, height-13, (unsigned char*)"vnStat / Teemu Toivola", ic->cvnstat);
+       /* date */
+       if (!ic->showheader || ic->altdate) {
+               gdImageString(ic->im, gdFontGetTiny(), 5+ic->showedge, height-12-ic->showedge, (unsigned char*)datestring, ic->cvnstat);
        } else {
-               gdImageString(ic->im, gdFontGetTiny(), width-114, height-12, (unsigned char*)"vnStat / Teemu Toivola", ic->cvnstat);
+               gdImageString(ic->im, gdFontGetTiny(), width-(strlen(datestring)*gdFontGetTiny()->w+12), 9+ic->showedge, (unsigned char*)datestring, ic->cheaderdate);
        }
+
+       /* generator */
+       gdImageString(ic->im, gdFontGetTiny(), width-114-ic->showedge, height-12-ic->showedge, (unsigned char*)"vnStat / Teemu Toivola", ic->cvnstat);
 }
 
 void drawlegend(IMAGECONTENT *ic, int x, int y)
@@ -422,10 +414,14 @@ void drawsummary(IMAGECONTENT *ic, int type, int rate)
 
        colorinit(ic);
 
-       if (strcmp(data.nick, data.interface)==0) {
-               snprintf(buffer, 512, "%s", data.interface);
+       if (strlen(ic->headertext)) {
+               strncpy_nt(buffer, ic->headertext, 65);
        } else {
-               snprintf(buffer, 512, "%s (%s)", data.nick, data.interface);
+               if (strcmp(data.nick, data.interface)==0) {
+                       snprintf(buffer, 512, "%s", data.interface);
+               } else {
+                       snprintf(buffer, 512, "%s (%s)", data.nick, data.interface);
+               }
        }
 
        layoutinit(ic, buffer, width, height);
index e0bf503c6928ca2fb8dbf5a628cec0753b229dbb..14283c641092054e16f7935f22af8139ad111700 100644 (file)
@@ -19,7 +19,8 @@
 typedef struct {
        gdImagePtr im;
        int cbackground, cedge, cheader, cheadertitle, cheaderdate, ctext, cline, clinel, cvnstat;
-       int crx, crxd, ctx, ctxd, cbgoffset, showheader, showedge, showlegend;
+       int crx, crxd, ctx, ctxd, cbgoffset, showheader, showedge, showlegend, altdate;
+       char headertext[65];
        time_t current;
 } IMAGECONTENT;
 
index fdefde4b1fd37e3eb89b843c5e75fabf7feaeef0..205fcff8eff9906f126bd6e403df76b39be96e48 100644 (file)
@@ -166,6 +166,19 @@ int main(int argc, char *argv[])
                        /* config has already been parsed earlier so nothing to do here */
                        currentarg++;
                        continue;
+               } else if ((strcmp(argv[currentarg],"--headertext"))==0) {
+                       if (currentarg+1<argc) {
+                               strncpy_nt(ic.headertext, argv[currentarg+1], 65);
+                               if (debug)
+                                       printf("Header text: \"%s\"\n", ic.headertext);
+                               currentarg++;
+                               continue;
+                       } else {
+                               printf("Error: Text string parameter for --headertext missing.\n");
+                               return 1;
+                       }
+               } else if (strcmp(argv[currentarg],"--altdate")==0) {
+                       ic.altdate = 1;
                } else if ((strcmp(argv[currentarg],"-D")==0) || (strcmp(argv[currentarg],"--debug"))==0) {
                        debug = 1;
                } else if ((strcmp(argv[currentarg],"-d")==0) || (strcmp(argv[currentarg],"--days"))==0) {
@@ -276,6 +289,8 @@ void showihelp(IPARAMS *p)
        printf("         --style               select output style (0-3)\n");
        printf("         --locale              set locale\n");
        printf("         --config              select config file\n");
+       printf("         --altdate             use alternative date location\n");
+       printf("         --headertext          specify header text string\n");
        printf("         --transparent         toggle background transparency\n\n");
        printf("See also \"man vnstati\".\n");
 }