static VALUE rb_gimp_rgb_clamp (VALUE self) { GimpRGB result = rb2GimpRGB(self); gimp_rgb_clamp(&result); return GimpRGB2rb(&result); }
static VALUE rb_gimp_rgb_gamma (VALUE self, VALUE gamma) { GimpRGB result = rb2GimpRGB(self); gimp_rgb_gamma(&result, (gdouble)NUM2DBL(gamma)); return GimpRGB2rb(&result); }
static VALUE rb_gimp_rgba_multiply (VALUE self, VALUE factor) { GimpRGB result = rb2GimpRGB(self); gimp_rgba_multiply(&result, (gdouble)NUM2DBL(factor)); return GimpRGB2rb(&result); }
static VALUE rb_gimp_rgba_subtract (VALUE self, VALUE other) { GimpRGB result = rb2GimpRGB(self); gimp_rgba_subtract(&result, rb2GimpRGBPtr(other)); return GimpRGB2rb(&result); }
static VALUE rb_gimp_rgb_composite (VALUE self, VALUE other, VALUE mode) { GimpRGB color = rb2GimpRGB(self); gimp_rgb_composite(&color, rb2GimpRGBPtr(other), (GimpRGBCompositeMode)NUM2INT(mode)); return GimpRGB2rb(&color); }
GimpParam rb2GimpParam (VALUE rbparam) { if (!rb_obj_is_kind_of(rbparam, sGimpParam)) rb_raise(rb_eTypeError, "Parameter is not a Gimp::Param"); int type = NUM2INT(rb_struct_aref(rbparam, ID2SYM(id_type))); VALUE rbdata = rb_struct_aref(rbparam, ID2SYM(id_data)); GimpParam result; result.type = (GimpPDBArgType)type; switch (type) { case GIMP_PDB_INT32: result.data.d_int32 = (gint32)NUM2INT(rbdata); break; case GIMP_PDB_INT16: result.data.d_int16 = (gint16)NUM2INT(rbdata); break; case GIMP_PDB_INT8: result.data.d_int8 = (gint8)NUM2INT(rbdata); break; case GIMP_PDB_FLOAT: result.data.d_float = (gdouble)NUM2DBL(rbdata); break; case GIMP_PDB_STRING: result.data.d_string = g_strdup(StringValuePtr(rbdata)); break; case GIMP_PDB_INT32ARRAY: result.data.d_int32array = rb2gimp_array(type, rbdata); break; case GIMP_PDB_INT16ARRAY: result.data.d_int16array = rb2gimp_array(type, rbdata); break; case GIMP_PDB_INT8ARRAY: result.data.d_int8array = str2gint8(rbdata); break; case GIMP_PDB_FLOATARRAY: result.data.d_floatarray = rb2gimp_array(type, rbdata); break; case GIMP_PDB_STRINGARRAY: result.data.d_stringarray = rb2gimp_array(type, rbdata); break; case GIMP_PDB_COLOR: result.data.d_color = rb2GimpRGB(rbdata); break; case GIMP_PDB_DISPLAY: result.data.d_display = (gint32)NUM2INT(rbdata); break; case GIMP_PDB_IMAGE: result.data.d_image = (gint32)NUM2INT(rbdata); break; case GIMP_PDB_LAYER: result.data.d_layer = (gint32)NUM2INT(rbdata); break; /* case GIMP_PDB_LAYER_MASK: result.data.d_layer_mask = (gint32)NUM2INT(rbdata); break;*/ case GIMP_PDB_CHANNEL: result.data.d_channel = (gint32)NUM2INT(rbdata); break; case GIMP_PDB_DRAWABLE: result.data.d_drawable = (gint32)NUM2INT(rbdata); break; case GIMP_PDB_SELECTION: result.data.d_selection = (gint32)NUM2INT(rbdata); break; case GIMP_PDB_BOUNDARY: result.data.d_boundary = (gint32)NUM2INT(rbdata); break; case GIMP_PDB_VECTORS: result.data.d_vectors = (gint32)NUM2INT(rbdata); break; /* case GIMP_PDB_UNIT: result.data.d_unit = (gint32)NUM2INT(rbdata); break;*/ case GIMP_PDB_PARASITE: result.data.d_parasite = rb2GimpParasite(rbdata); break; /* case GIMP_PDB_TATTOO: result.data.d_tattoo = (gint32)NUM2INT(rbdata); break;*/ case GIMP_PDB_STATUS: result.data.d_status = (GimpPDBStatusType)NUM2INT(rbdata); break; } return result; }