📄 gseispalette.c
字号:
g_free (private->red_lookup_table); if (private->color_scale) g_object_unref (private->color_scale); if (private->name) g_free (private->name);#ifdef DEBUG g_print ("<GSeisPalette is finalized>\n");#endif if (G_OBJECT_CLASS (g_seis_palette_parent_class)->finalize) G_OBJECT_CLASS (g_seis_palette_parent_class)->finalize (object);}enum { PROP_0, PROP_MIN_COLOR, PROP_MAX_COLOR, PROP_COLORS_ARRAY, PROP_NAME};static void g_seis_palette_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { GSeisPalette *self = G_SEIS_PALETTE (object); GSeisPalettePrivate *private = G_SEIS_PALETTE_GET_PRIVATE (self); GSeisColor *min_color, *max_color; switch (prop_id) { case PROP_MIN_COLOR: min_color = g_value_get_boxed (value); if (min_color) { private->min_color_is_set = TRUE; private->min_color.red = min_color->red; private->min_color.green = min_color->green; private->min_color.blue = min_color->blue; if (private->max_color_is_set) g_seis_palette_init_by_min_max (self, &private->min_color, &private->max_color); g_object_notify (object, "min_color"); } break; case PROP_MAX_COLOR: max_color = g_value_get_boxed (value); if (max_color) { private->max_color_is_set = TRUE; private->max_color.red = max_color->red; private->max_color.green = max_color->green; private->max_color.blue = max_color->blue; if (private->min_color_is_set) g_seis_palette_init_by_min_max (self, &private->min_color, &private->max_color); g_object_notify (object, "max_color"); } break; case PROP_COLORS_ARRAY: if (FALSE == private->min_color_is_set || FALSE == private->max_color_is_set) { g_seis_palette_init_by_array (self, (GArray*)g_value_get_pointer (value)); g_object_notify (object, "colors_array"); } break; case PROP_NAME: if (private->name) g_free (private->name); private->name = g_value_dup_string (value); if (NULL == private->name) private->name = g_strdup ("Default"); g_object_notify (object, "name"); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; }}static void g_seis_palette_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { GSeisPalette *self = G_SEIS_PALETTE (object); GSeisPalettePrivate *private = G_SEIS_PALETTE_GET_PRIVATE (self); switch (prop_id) { case PROP_COLORS_ARRAY: g_value_set_pointer (value, NULL); break; case PROP_MIN_COLOR: g_value_set_boxed (value, NULL); break; case PROP_MAX_COLOR: g_value_set_boxed (value, NULL); break; case PROP_NAME: g_value_set_string (value, private->name); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; }}static void g_seis_palette_class_init (GSeisPaletteClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = (GObjectFinalizeFunc) g_seis_palette_finalize; gobject_class->set_property = g_seis_palette_set_property; gobject_class->get_property = g_seis_palette_get_property; g_type_class_add_private (klass, sizeof (GSeisPalettePrivate)); g_object_class_install_property (gobject_class, PROP_MIN_COLOR, g_param_spec_boxed ("min_color", "MinimumColor", "Color of the palette bottom", G_TYPE_SEIS_COLOR, G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY)); g_object_class_install_property (gobject_class, PROP_MAX_COLOR, g_param_spec_boxed ("max_color", "MaximumColor", "Color of the palette top", G_TYPE_SEIS_COLOR, G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY)); g_object_class_install_property (gobject_class, PROP_COLORS_ARRAY, g_param_spec_pointer ("colors_array", "ColorArray", "Array of colors to construct palette from", G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY)); g_object_class_install_property (gobject_class, PROP_NAME, g_param_spec_string ("name", "Name", "Palette name", "Default", G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));#ifdef DEBUG g_print ("<GSeisPalette class is inited>\n");#endif}static GPtrArray* predefined_palettes;GPtrArray *g_seis_view_get_predefined_palettes (void) { GSeisPalette *palette; GSeisPaletteDef palette_def; GArray *palette_array_def; if (predefined_palettes) return predefined_palettes; predefined_palettes = g_ptr_array_sized_new (20); palette_array_def = g_array_sized_new (FALSE, FALSE, sizeof (GSeisPaletteDef), 20);/* * * Grayscale * */ palette_def.interpolate = TRUE; palette_def.scale_position = 0.f; palette_def.color.red = 0; palette_def.color.green = 0; palette_def.color.blue = 0; g_array_append_val (palette_array_def, palette_def); palette_def.scale_position = 1.0f; palette_def.color.red = 65535; palette_def.color.green = 65535; palette_def.color.blue = 65535; g_array_append_val (palette_array_def, palette_def); palette = g_seis_palette_new_by_array (palette_array_def, "Grayscale"); g_ptr_array_add (predefined_palettes, (gpointer)palette); g_array_remove_range (palette_array_def, 0, palette_array_def->len);/* * * Black-White-Blue * */ palette_def.interpolate = TRUE; palette_def.scale_position = 0.f; palette_def.color.red = 0; palette_def.color.green = 0; palette_def.color.blue = 0; g_array_append_val (palette_array_def, palette_def); palette_def.scale_position = 0.502f; palette_def.color.red = 65535; palette_def.color.green = 65535; palette_def.color.blue = 65535; g_array_append_val (palette_array_def, palette_def); palette_def.scale_position = 1.0f; palette_def.color.red = 0; palette_def.color.green = 0; palette_def.color.blue = 65535; g_array_append_val (palette_array_def, palette_def); palette = g_seis_palette_new_by_array (palette_array_def, "BlackWhiteBlue"); g_ptr_array_add (predefined_palettes, (gpointer)palette); g_array_remove_range (palette_array_def, 0, palette_array_def->len);/* * * Black-White-Green * */ palette_def.interpolate = TRUE; palette_def.scale_position = 0.f; palette_def.color.red = 0; palette_def.color.green = 0; palette_def.color.blue = 0; g_array_append_val (palette_array_def, palette_def); palette_def.scale_position = 0.502f; palette_def.color.red = 65535; palette_def.color.green = 65535; palette_def.color.blue = 65535; g_array_append_val (palette_array_def, palette_def); palette_def.scale_position = 1.0f; palette_def.color.red = 0; palette_def.color.green = 65535; palette_def.color.blue = 0; g_array_append_val (palette_array_def, palette_def); palette = g_seis_palette_new_by_array (palette_array_def, "BlackWhiteGreen"); g_ptr_array_add (predefined_palettes, (gpointer)palette); g_array_remove_range (palette_array_def, 0, palette_array_def->len);/* * * Black-White-Purple * */ palette_def.interpolate = TRUE; palette_def.scale_position = 0.f; palette_def.color.red = 0; palette_def.color.green = 0; palette_def.color.blue = 0; g_array_append_val (palette_array_def, palette_def); palette_def.scale_position = 0.502f; palette_def.color.red = 65535; palette_def.color.green = 65535; palette_def.color.blue = 65535; g_array_append_val (palette_array_def, palette_def); palette_def.scale_position = 1.0f; palette_def.color.red = 44060; palette_def.color.green = 115; palette_def.color.blue = 65535; g_array_append_val (palette_array_def, palette_def); palette = g_seis_palette_new_by_array (palette_array_def, "BlackWhitePurple"); g_ptr_array_add (predefined_palettes, (gpointer)palette); g_array_remove_range (palette_array_def, 0, palette_array_def->len);/* * * Black-White-Red * */ palette_def.interpolate = TRUE; palette_def.scale_position = 0.f; palette_def.color.red = 0; palette_def.color.green = 0; palette_def.color.blue = 0; g_array_append_val (palette_array_def, palette_def); palette_def.scale_position = 0.502f; palette_def.color.red = 65535; palette_def.color.green = 65535; palette_def.color.blue = 65535; g_array_append_val (palette_array_def, palette_def); palette_def.scale_position = 1.0f; palette_def.color.red = 65535; palette_def.color.green = 0; palette_def.color.blue = 0; g_array_append_val (palette_array_def, palette_def); palette = g_seis_palette_new_by_array (palette_array_def, "BlackWhiteRed"); g_ptr_array_add (predefined_palettes, (gpointer)palette); g_array_remove_range (palette_array_def, 0, palette_array_def->len);/* * * Blue-White-Black * */ palette_def.interpolate = TRUE; palette_def.scale_position = 0.f; palette_def.color.red = 0; palette_def.color.green = 0; palette_def.color.blue = 65535; g_array_append_val (palette_array_def, palette_def); palette_def.scale_position = 0.502f; palette_def.color.red = 65535; palette_def.color.green = 65535; palette_def.color.blue = 65535; g_array_append_val (palette_array_def, palette_def); palette_def.scale_position = 1.0f; palette_def.color.red = 0; palette_def.color.green = 0; palette_def.color.blue = 0; g_array_append_val (palette_array_def, palette_def); palette = g_seis_palette_new_by_array (palette_array_def, "BlueWhiteBlack"); g_ptr_array_add (predefined_palettes, (gpointer)palette); g_array_remove_range (palette_array_def, 0, palette_array_def->len);/* * * Blue-White-Green * */ palette_def.interpolate = TRUE; palette_def.scale_position = 0.f; palette_def.color.red = 0; palette_def.color.green = 0; palette_def.color.blue = 65535; g_array_append_val (palette_array_def, palette_def); palette_def.scale_position = 0.502f; palette_def.color.red = 65535; palette_def.color.green = 65535; palette_def.color.blue = 65535; g_array_append_val (palette_array_def, palette_def); palette_def.scale_position = 1.0f; palette_def.color.red = 0; palette_def.color.green = 65535; palette_def.color.blue = 0; g_array_append_val (palette_array_def, palette_def); palette = g_seis_palette_new_by_array (palette_array_def, "BlueWhiteGreen"); g_ptr_array_add (predefined_palettes, (gpointer)palette); g_array_remove_range (palette_array_def, 0, palette_array_def->len);/* * * Blue-White-Red * */ palette_def.interpolate = TRUE; palette_def.scale_position = 0.f; palette_def.color.red = 0; palette_def.color.green = 0; palette_def.color.blue = 65535; g_array_append_val (palette_array_def, palette_def); palette_def.scale_position = 0.502f; palette_def.color.red = 65535; palette_def.color.green = 65535; palette_def.color.blue = 65535; g_array_append_val (palette_array_def, palette_def);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -