static PyObject * pygimp_rgb_parse_css(PyObject *self, PyObject *args, PyObject *kwargs) { char *css; int len; GimpRGB rgb; gboolean success, with_alpha = FALSE; static char *kwlist[] = { "css", "with_alpha", NULL }; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s#|i:rgb_parse_css", kwlist, &css, &len, &with_alpha)) return NULL; if (with_alpha) success = gimp_rgba_parse_css(&rgb, css, len); else { rgb.a = 1.0; success = gimp_rgb_parse_css(&rgb, css, len); } if (!success) { PyErr_SetString(PyExc_ValueError, "unable to parse CSS color"); return NULL; } return pygimp_rgb_new(&rgb); }
int main (void) { gint failures = 0; gint i; g_print ("\nTesting the GIMP color parser ...\n"); for (i = 0; i < G_N_ELEMENTS (samples); i++) { GimpRGB rgb = { 0.0, 0.0, 0.0, 0.0 }; gboolean success; if (samples[i].alpha) success = gimp_rgba_parse_css (&rgb, samples[i].str, -1); else success = gimp_rgb_parse_css (&rgb, samples[i].str, -1); failures += check_failure (samples + i, success, &rgb); } if (failures) { g_print ("%d out of %d samples failed!\n\n", failures, (int)G_N_ELEMENTS (samples)); return EXIT_FAILURE; } else { g_print ("All %d samples passed.\n\n", (int)G_N_ELEMENTS (samples)); return EXIT_SUCCESS; } }
static VALUE rb_gimp_rgba_parse_css (VALUE self, VALUE css) { GimpRGB color; gboolean success; success = gimp_rgba_parse_css(&color, (gchar *)StringValuePtr(css), (gint)-1); if(!success) return Qnil; return GimpRGB2rb(&color); }