1 2typedef GType (* GimpGetTypeFunc) (void); 3 4static const GimpGetTypeFunc get_type_funcs[] = 5{ 6 gegl_distance_metric_get_type, 7 gimp_add_mask_type_get_type, 8 gimp_blend_mode_get_type, 9 gimp_brush_application_mode_get_type, 10 gimp_brush_generated_shape_get_type, 11 gimp_bucket_fill_mode_get_type, 12 gimp_cap_style_get_type, 13 gimp_channel_ops_get_type, 14 gimp_channel_type_get_type, 15 gimp_clone_type_get_type, 16 gimp_color_management_mode_get_type, 17 gimp_color_rendering_intent_get_type, 18 gimp_color_tag_get_type, 19 gimp_component_type_get_type, 20 gimp_convert_dither_type_get_type, 21 gimp_convert_palette_type_get_type, 22 gimp_convolve_type_get_type, 23 gimp_desaturate_mode_get_type, 24 gimp_dodge_burn_type_get_type, 25 gimp_fill_type_get_type, 26 gimp_foreground_extract_mode_get_type, 27 gimp_gradient_blend_color_space_get_type, 28 gimp_gradient_segment_color_get_type, 29 gimp_gradient_segment_type_get_type, 30 gimp_gradient_type_get_type, 31 gimp_grid_style_get_type, 32 gimp_histogram_channel_get_type, 33 gimp_hue_range_get_type, 34 gimp_icon_type_get_type, 35 gimp_image_base_type_get_type, 36 gimp_image_type_get_type, 37 gimp_ink_blob_type_get_type, 38 gimp_interpolation_type_get_type, 39 gimp_join_style_get_type, 40 gimp_layer_color_space_get_type, 41 gimp_layer_composite_mode_get_type, 42 gimp_layer_mode_get_type, 43 gimp_mask_apply_mode_get_type, 44 gimp_merge_type_get_type, 45 gimp_message_handler_type_get_type, 46 gimp_offset_type_get_type, 47 gimp_orientation_type_get_type, 48 gimp_pdb_arg_type_get_type, 49 gimp_pdb_error_handler_get_type, 50 gimp_pdb_proc_type_get_type, 51 gimp_pdb_status_type_get_type, 52 gimp_paint_application_mode_get_type, 53 gimp_precision_get_type, 54 gimp_progress_command_get_type, 55 gimp_repeat_mode_get_type, 56 gimp_rotation_type_get_type, 57 gimp_run_mode_get_type, 58 gimp_select_criterion_get_type, 59 gimp_size_type_get_type, 60 gimp_stack_trace_mode_get_type, 61 gimp_stroke_method_get_type, 62 gimp_text_direction_get_type, 63 gimp_text_hint_style_get_type, 64 gimp_text_justification_get_type, 65 gimp_transfer_mode_get_type, 66 gimp_transform_direction_get_type, 67 gimp_transform_resize_get_type, 68 gimp_user_directory_get_type, 69 gimp_vectors_stroke_type_get_type 70}; 71 72static const gchar * const type_names[] = 73{ 74 "GeglDistanceMetric", 75 "GimpAddMaskType", 76 "GimpBlendMode", 77 "GimpBrushApplicationMode", 78 "GimpBrushGeneratedShape", 79 "GimpBucketFillMode", 80 "GimpCapStyle", 81 "GimpChannelOps", 82 "GimpChannelType", 83 "GimpCloneType", 84 "GimpColorManagementMode", 85 "GimpColorRenderingIntent", 86 "GimpColorTag", 87 "GimpComponentType", 88 "GimpConvertDitherType", 89 "GimpConvertPaletteType", 90 "GimpConvolveType", 91 "GimpDesaturateMode", 92 "GimpDodgeBurnType", 93 "GimpFillType", 94 "GimpForegroundExtractMode", 95 "GimpGradientBlendColorSpace", 96 "GimpGradientSegmentColor", 97 "GimpGradientSegmentType", 98 "GimpGradientType", 99 "GimpGridStyle", 100 "GimpHistogramChannel", 101 "GimpHueRange", 102 "GimpIconType", 103 "GimpImageBaseType", 104 "GimpImageType", 105 "GimpInkBlobType", 106 "GimpInterpolationType", 107 "GimpJoinStyle", 108 "GimpLayerColorSpace", 109 "GimpLayerCompositeMode", 110 "GimpLayerMode", 111 "GimpMaskApplyMode", 112 "GimpMergeType", 113 "GimpMessageHandlerType", 114 "GimpOffsetType", 115 "GimpOrientationType", 116 "GimpPDBArgType", 117 "GimpPDBErrorHandler", 118 "GimpPDBProcType", 119 "GimpPDBStatusType", 120 "GimpPaintApplicationMode", 121 "GimpPrecision", 122 "GimpProgressCommand", 123 "GimpRepeatMode", 124 "GimpRotationType", 125 "GimpRunMode", 126 "GimpSelectCriterion", 127 "GimpSizeType", 128 "GimpStackTraceMode", 129 "GimpStrokeMethod", 130 "GimpTextDirection", 131 "GimpTextHintStyle", 132 "GimpTextJustification", 133 "GimpTransferMode", 134 "GimpTransformDirection", 135 "GimpTransformResize", 136 "GimpUserDirectory", 137 "GimpVectorsStrokeType" 138}; 139 140static gboolean enums_initialized = FALSE; 141 142GType gimp_convert_dither_type_compat_get_type (void); 143GType gimp_layer_mode_effects_get_type (void); 144 145/** 146 * gimp_enums_init: 147 * 148 * This function makes sure all the enum types are registered 149 * with the #GType system. This is intended for use by language 150 * bindings that need the symbols early, before gimp_main is run. 151 * It's not necessary for plug-ins to call this directly, because 152 * the normal plug-in initialization code will handle it implicitly. 153 * 154 * Since: 2.4 155 **/ 156void 157gimp_enums_init (void) 158{ 159 const GimpGetTypeFunc *funcs = get_type_funcs; 160 GQuark quark; 161 gint i; 162 163 if (enums_initialized) 164 return; 165 166 for (i = 0; i < G_N_ELEMENTS (get_type_funcs); i++, funcs++) 167 { 168 GType type = (*funcs) (); 169 170 g_type_class_ref (type); 171 } 172 173 /* keep compat enum code in sync with app/app.c (app_libs_init) */ 174 quark = g_quark_from_static_string ("gimp-compat-enum"); 175 176 g_type_set_qdata (GIMP_TYPE_CONVERT_DITHER_TYPE, quark, 177 (gpointer) gimp_convert_dither_type_compat_get_type ()); 178 g_type_set_qdata (GIMP_TYPE_LAYER_MODE, quark, 179 (gpointer) gimp_layer_mode_effects_get_type ()); 180 181 gimp_base_compat_enums_init (); 182 183 enums_initialized = TRUE; 184} 185 186/** 187 * gimp_enums_get_type_names: 188 * @n_type_names: return location for the number of names 189 * 190 * This function gives access to the list of enums registered by libgimp. 191 * The returned array is static and must not be modified. 192 * 193 * Return value: an array with type names 194 * 195 * Since: 2.2 196 **/ 197const gchar ** 198gimp_enums_get_type_names (gint *n_type_names) 199{ 200 g_return_val_if_fail (n_type_names != NULL, NULL); 201 202 *n_type_names = G_N_ELEMENTS (type_names); 203 204 return (const gchar **) type_names; 205} 206