aboutsummaryrefslogtreecommitdiffstats
path: root/timer.c (follow)
AgeCommit message (Expand)AuthorFilesLines
2009-11-15event plugin and dbus interface by Ed Martinmichael1-0/+38
2009-09-23warn() => info()michael1-1/+1
2009-04-15more timer fixesmichux1-8/+8
2009-04-15make the code more sexy...michux1-1/+2
2009-04-15fix timestamp loop issuemichux1-0/+8
2007-09-09email address changedmichael1-1/+1
2007-01-14removed all tagsmichael1-55/+0
2007-01-14svn properties fixedmichael1-1/+2
2005-05-082004-03-03[lcd4linux @ 2004-03-03 04:44:16 by reinelt]reinelt1-4/+12
2004-03-03[lcd4linux @ 2004-03-03 03:47:04 by reinelt]reinelt1-1/+15
2004-01-30[lcd4linux @ 2004-01-30 20:57:55 by reinelt]reinelt1-1/+9
2004-01-29[lcd4linux @ 2004-01-29 04:40:02 by reinelt]reinelt1-1/+6
2004-01-18[lcd4linux @ 2004-01-18 09:01:45 by reinelt]reinelt1-6/+4
2004-01-13[lcd4linux @ 2004-01-13 08:18:07 by reinelt]reinelt1-0/+178
-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
/* $Id: widget_bar.h,v 1.8 2005/05/08 04:32:45 reinelt Exp $
 *
 * bar widget handling
 *
 * Copyright (C) 2003, 2004 Michael Reinelt <reinelt@eunet.at>
 * Copyright (C) 2004 The LCD4Linux Team <lcd4linux-devel@users.sourceforge.net>
 *
 * This file is part of LCD4Linux.
 *
 * LCD4Linux is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2, or (at your option)
 * any later version.
 *
 * LCD4Linux is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 *
 *
 * $Log: widget_bar.h,v $
 * Revision 1.8  2005/05/08 04:32:45  reinelt
 * CodingStyle added and applied
 *
 * Revision 1.7  2005/05/06 06:37:34  reinelt
 * hollow bar patch from geronet
 *
 * Revision 1.6  2005/01/18 06:30:24  reinelt
 * added (C) to all copyright statements
 *
 * Revision 1.5  2004/06/26 12:05:00  reinelt
 *
 * uh-oh... the last CVS log message messed up things a lot...
 *
 * Revision 1.4  2004/06/26 09:27:21  reinelt
 *
 * added '-W' to CFLAGS
 * changed all C++ comments to C ones
 * cleaned up a lot of signed/unsigned mistakes
 *
 * Revision 1.3  2004/03/06 20:31:16  reinelt
 * Complete rewrite of the evaluator to get rid of the code
 * from mark Morley (because of license issues).
 * The new Evaluator does a pre-compile of expressions, and
 * stores them in trees. Therefore it should be reasonable faster...
 *
 * Revision 1.2  2004/01/20 04:51:39  reinelt
 * moved generic stuff from drv_MatrixOrbital to drv_generic
 * implemented new-stylish bars which are nearly finished
 *
 * Revision 1.1  2004/01/18 21:25:16  reinelt
 * Framework for bar widget opened
 *
 */


#ifndef _WIDGET_BAR_H_
#define _WIDGET_BAR_H_

typedef enum { DIR_EAST = 1, DIR_WEST = 2, DIR_NORTH = 4, DIR_SOUTH = 8 } DIRECTION;
typedef enum { STYLE_HOLLOW = 1, STYLE_FIRST = 2, STYLE_LAST = 4 } STYLE;

typedef struct WIDGET_BAR {
    char *expression1;		/* expression that delivers the value */
    char *expression2;		/* expression that delivers the value */
    char *expr_min;		/* expression that delivers the minimum value */
    char *expr_max;		/* expression that delivers the maximum value */
    void *tree1;		/* pre-compiled expression that delivers the value */
    void *tree2;		/* pre-compiled expression that delivers the value */
    void *tree_min;		/* pre-compiled expression that delivers the minimum value */
    void *tree_max;		/* pre-compiled expression that delivers the maximum value */
    DIRECTION direction;	/* bar direction */
    STYLE style;		/* bar style (hollow) */
    int length;			/* bar length */
    int update;			/* update interval (msec) */
    double val1;		/* bar value, 0.0 ... 1.0 */
    double val2;		/* bar value, 0.0 ... 1.0 */
    double min;			/* minimum value */
    double max;			/* maximum value */
} WIDGET_BAR;


extern WIDGET_CLASS Widget_Bar;

#endif
n> // define the include files you need #include "config.h" #include <stdlib.h> #include <string.h> #include <ctype.h> // these should always be included #include "debug.h" #include "plugin.h" #ifdef WITH_DMALLOC #include <dmalloc.h> #endif // sample function 'mul2' // takes one argument, a number // multiplies the number by 2.0 // Note: all local functions should be declared 'static' static void my_mul2 (RESULT *result, RESULT *arg1) { double param; double value; // Get Parameter // R2N stands for 'Result to Number' param=R2N(arg1); // calculate value value=param*2.0; // store result // when called with R_NUMBER, it assumes the // next parameter to be a pointer to double SetResult(&result, R_NUMBER, &value); } // sample function 'mul3' // takes one argument, a number // multiplies the number by 3.0 // same as 'mul2', but shorter static void my_mul3 (RESULT *result, RESULT *arg1) { // do it all in one line double value=R2N(arg1)*3.0; // store result SetResult(&result, R_NUMBER, &value); } // sample function 'diff' // takes two arguments, both numbers // returns |a-b| static void my_diff (RESULT *result, RESULT *arg1, RESULT *arg2) { // do it all in one line double value=R2N(arg1)-R2N(arg2); // some more calculations... if (value<0) value=-value; // store result SetResult(&result, R_NUMBER, &value); } // sample function 'answer' // takes no argument! // returns the answer to all questions static void my_answer (RESULT *result) { // we have to declare a variable because // SetResult needs a pointer double value=42; // store result SetResult(&result, R_NUMBER, &value); } // sample function 'length' // takes one argument, a string // returns the string length static void my_length (RESULT *result, RESULT *arg1) { // Note #1: value *must* be double! // Note #2: R2S stands for 'Result to String' double value=strlen(R2S(arg1)); // store result SetResult(&result, R_NUMBER, &value); } // sample function 'upcase' // takes one argument, a string // returns the string in upper case letters static void my_upcase (RESULT *result, RESULT *arg1) { char *value, *p; // create a local copy of the argument // Do *NOT* try to modify the original string! value=strdup(R2S(arg1)); // process the string for (p=value; *p!='\0'; p++) *p=toupper(*p); // store result // when called with R_STRING, it assumes the // next parameter to be a pointer to a string // 'value' is already a char*, so use 'value', not '&value' SetResult(&result, R_STRING, value); // free local copy again // Note that SetResult() makes its own string copy free (value); } // sample function 'cat' // takes variable number of arguments, all strings // returns all prameters concatenated static void my_concat (RESULT *result, int argc, RESULT *argv[]) { int i, len; char *value, *part; // start with a empty string value=strdup(""); // process all arguments for (i=0; i<argc; i++) { part=R2S(argv[i]); len=strlen(value)+strlen(part); value=realloc(value, len+1); strcat(value, part); } // store result SetResult(&result, R_STRING, value); // free local string free (value); } // plugin initialization // MUST NOT be declared 'static'! int plugin_init_sample (void) { // register all our cool functions // the second parameter is the number of arguments // -1 stands for variable argument list AddFunction ("mul2", 1, my_mul2); AddFunction ("mul3", 1, my_mul3); AddFunction ("answer", 0, my_answer); AddFunction ("diff", 2, my_diff); AddFunction ("length", 1, my_length); AddFunction ("upcase", 1, my_upcase); AddFunction ("concat", -1, my_concat); return 0; }