VALUE subIconDrawRect(int argc, VALUE *argv, VALUE self) { VALUE data[7] = { Qnil }; rb_scan_args(argc, argv, "43", &data[0], &data[1], &data[2], &data[3], &data[4], &data[5], &data[6]); /* Check object types */ if(FIXNUM_P(data[0]) && FIXNUM_P(data[1]) && FIXNUM_P(data[2]) && FIXNUM_P(data[3])) { SubtlextIcon *i = NULL; Data_Get_Struct(self, SubtlextIcon, i); if(i) { XGCValues gvals; /* Create on demand */ if(0 == i->gc) i->gc = XCreateGC(display, i->pixmap, 0, NULL); /* Update GC */ gvals.foreground = 1; gvals.background = 0; if(i->flags & ICON_PIXMAP) { if(!NIL_P(data[5])) gvals.foreground = subColorPixel(data[5], Qnil, Qnil, NULL); if(!NIL_P(data[6])) gvals.background = subColorPixel(data[6], Qnil, Qnil, NULL); } XChangeGC(display, i->gc, GCForeground|GCBackground, &gvals); /* Draw rect */ if(Qtrue == data[4]) { XFillRectangle(display, i->pixmap, i->gc, FIX2INT(data[0]), FIX2INT(data[1]), FIX2INT(data[2]), FIX2INT(data[3])); } else XDrawRectangle(display, i->pixmap, i->gc, FIX2INT(data[0]), FIX2INT(data[1]), FIX2INT(data[2]), FIX2INT(data[3])); XFlush(display); } } else rb_raise(rb_eArgError, "Unexpected value-types"); return Qnil; } /* }}} */
VALUE subIconClear(int argc, VALUE *argv, VALUE self) { SubtlextIcon *i = NULL; Data_Get_Struct(self, SubtlextIcon, i); if(i) { XGCValues gvals; if(0 == i->gc) ///< Create on demand i->gc = XCreateGC(display, i->pixmap, 0, NULL); /* Update GC */ gvals.foreground = 0; gvals.background = 1; if(i->flags & ICON_PIXMAP) { VALUE colors[2] = { Qnil }; rb_scan_args(argc, argv, "02", &colors[0], &colors[1]); if(!NIL_P(colors[0])) gvals.foreground = subColorPixel(colors[0], Qnil, Qnil, NULL); if(!NIL_P(colors[1])) gvals.background = subColorPixel(colors[1], Qnil, Qnil, NULL); } XChangeGC(display, i->gc, GCForeground|GCBackground, &gvals); XFillRectangle(display, i->pixmap, i->gc, 0, 0, i->width, i->height); XFlush(display); } return Qnil; } /* }}} */
VALUE subColorInit(int argc, VALUE *argv, VALUE self) { VALUE data[3] = { Qnil }; XColor xcolor = { 0 }; rb_scan_args(argc, argv, "12", &data[0], &data[1], &data[2]); subSubtlextConnect(NULL); ///< Implicit open connection /* Get color values */ subColorPixel(data[0], data[1], data[2], &xcolor); /* Set values */ rb_iv_set(self, "@red", INT2FIX(xcolor.red)); rb_iv_set(self, "@green", INT2FIX(xcolor.green)); rb_iv_set(self, "@blue", INT2FIX(xcolor.blue)); rb_iv_set(self, "@pixel", LONG2NUM(xcolor.pixel)); return self; } /* }}} */