]> Dogcows Code - chaz/tint2/blobdiff - src/util/common.c
more tint2conf cleanup
[chaz/tint2] / src / util / common.c
index 55a853b7c127f3475cc7d4add583c7ea81247349..c0ca6c3ece563cad5261559ff630433163d10d79 100644 (file)
 
 
 
+void copy_file(const char *pathSrc, const char *pathDest)
+{
+       FILE *fileSrc, *fileDest;
+       char line[100];
+       int  nb;
+
+       fileSrc = fopen(pathSrc, "rb");
+       if (fileSrc == NULL) return;
+
+       fileDest = fopen(pathDest, "wb");
+       if (fileDest == NULL) return;
+
+       while ((nb = fread(line, 1, 100, fileSrc)) > 0) fwrite(line, 1, nb, fileDest);
+
+       fclose (fileDest);
+       fclose (fileSrc);
+}
+
+
+int parse_line (const char *line, char **key, char **value)
+{
+       char *a, *b;
+
+       /* Skip useless lines */
+       if ((line[0] == '#') || (line[0] == '\n')) return 0;
+       if (!(a = strchr (line, '='))) return 0;
+
+       /* overwrite '=' with '\0' */
+       a[0] = '\0';
+       *key = strdup (line);
+       a++;
+
+       /* overwrite '\n' with '\0' if '\n' present */
+       if ((b = strchr (a, '\n'))) b[0] = '\0';
+
+       *value = strdup (a);
+
+       g_strstrip(*key);
+       g_strstrip(*value);
+       return 1;
+}
+
+
+int hex_char_to_int (char c)
+{
+       int r;
+
+       if (c >= '0' && c <= '9')  r = c - '0';
+       else if (c >= 'a' && c <= 'f')  r = c - 'a' + 10;
+       else if (c >= 'A' && c <= 'F')  r = c - 'A' + 10;
+       else  r = 0;
+
+       return r;
+}
+
+
+int hex_to_rgb (char *hex, int *r, int *g, int *b)
+{
+       int len;
+
+       if (hex == NULL || hex[0] != '#') return (0);
+
+       len = strlen (hex);
+       if (len == 3 + 1) {
+               *r = hex_char_to_int (hex[1]);
+               *g = hex_char_to_int (hex[2]);
+               *b = hex_char_to_int (hex[3]);
+       }
+       else if (len == 6 + 1) {
+               *r = hex_char_to_int (hex[1]) * 16 + hex_char_to_int (hex[2]);
+               *g = hex_char_to_int (hex[3]) * 16 + hex_char_to_int (hex[4]);
+               *b = hex_char_to_int (hex[5]) * 16 + hex_char_to_int (hex[6]);
+       }
+       else if (len == 12 + 1) {
+               *r = hex_char_to_int (hex[1]) * 16 + hex_char_to_int (hex[2]);
+               *g = hex_char_to_int (hex[5]) * 16 + hex_char_to_int (hex[6]);
+               *b = hex_char_to_int (hex[9]) * 16 + hex_char_to_int (hex[10]);
+       }
+       else return 0;
+
+       return 1;
+}
+
+
+void get_color (char *hex, double *rgb)
+{
+       int r, g, b;
+       hex_to_rgb (hex, &r, &g, &b);
+
+       rgb[0] = (r / 255.0);
+       rgb[1] = (g / 255.0);
+       rgb[2] = (b / 255.0);
+}
+
+
 void adjust_asb(DATA32 *data, int w, int h, int alpha, float satur, float bright)
 {
        unsigned int x, y;
This page took 0.020751 seconds and 4 git commands to generate.