diff -Nru gwyddion-2.62/app/data-browser-aux.c gwyddion-2.63/app/data-browser-aux.c --- gwyddion-2.62/app/data-browser-aux.c 2022-08-08 15:38:38.000000000 +0000 +++ gwyddion-2.63/app/data-browser-aux.c 2023-03-08 15:56:07.000000000 +0000 @@ -1,5 +1,5 @@ /* - * $Id: data-browser-aux.c 24863 2022-08-08 15:38:38Z yeti-dn $ + * $Id: data-browser-aux.c 25263 2023-03-08 15:56:06Z yeti-dn $ * Copyright (C) 2006-2021 David Necas (Yeti), Petr Klapetek. * E-mail: yeti@gwyddion.net, klapetek@gwyddion.net. * @@ -43,28 +43,6 @@ CACHED_IDS = 24, }; -/* TODO: These probably should be public along with the corresponding sync functions. */ -typedef enum { - GWY_BRICK_ITEM_PREVIEW, - GWY_BRICK_ITEM_GRADIENT, - GWY_BRICK_ITEM_META, - GWY_BRICK_ITEM_TITLE, -} GwyBrickItem; - -typedef enum { - GWY_SURFACE_ITEM_PREVIEW, - GWY_SURFACE_ITEM_GRADIENT, - GWY_SURFACE_ITEM_META, - GWY_SURFACE_ITEM_TITLE, -} GwySurfaceItem; - -typedef enum { - GWY_LAWN_ITEM_PREVIEW, - GWY_LAWN_ITEM_GRADIENT, - GWY_LAWN_ITEM_META, - GWY_LAWN_ITEM_TITLE, -} GwyLawnItem; - typedef GQuark (*GetKeyFunc)(gint id); typedef struct { @@ -1787,6 +1765,8 @@ * @...: 0-terminated list of #GwyDataItem values defining the items to copy. * * Synchronizes auxiliary image data items between data containers. + * + * All items except %GWY_DATA_ITEM_PREVIEW are valid for image data. **/ void gwy_app_sync_data_items(GwyContainer *source, @@ -1824,6 +1804,8 @@ * * Synchronizes auxiliary image data items between data containers. * + * All items except %GWY_DATA_ITEM_PREVIEW are valid for image data. + * * Since: 2.48 **/ void diff -Nru gwyddion-2.62/app/data-browser.c gwyddion-2.63/app/data-browser.c --- gwyddion-2.62/app/data-browser.c 2022-08-08 15:36:51.000000000 +0000 +++ gwyddion-2.63/app/data-browser.c 2023-03-08 15:56:07.000000000 +0000 @@ -1,5 +1,5 @@ /* - * $Id: data-browser.c 24709 2022-03-21 17:31:45Z yeti-dn $ + * $Id: data-browser.c 25263 2023-03-08 15:56:06Z yeti-dn $ * Copyright (C) 2006-2021 David Necas (Yeti), Petr Klapetek, Chris Anderson * E-mail: yeti@gwyddion.net, klapetek@gwyddion.net, sidewinderasu@gmail.com. * @@ -8924,9 +8924,12 @@ * @GWY_DATA_ITEM_SELECTIONS: Data selections. * @GWY_DATA_ITEM_META: Metadata. * @GWY_DATA_ITEM_CALDATA: Calibration and uncertainty data. (Since 2.23) - * @GWY_DATA_ITEM_PREVIEW: Volume data preview. (Since 2.51) + * @GWY_DATA_ITEM_PREVIEW: Volume, XYZ or curve map data preview. (Since 2.51) * * Type of auxiliary channel data. + * + * Not all auxiliary data types are valid for all primary data types. See individual functions such as + * gwy_app_sync_data_items() or gwy_app_sync_volume_items() for specification which items can be used with them. **/ /* vim: set cin columns=120 tw=118 et ts=4 sw=4 cino=>1s,e0,n0,f0,{0,}0,^0,\:1s,=0,g1s,h0,t0,+1s,c3,(0,u0 : */ diff -Nru gwyddion-2.62/app/dialog.c gwyddion-2.63/app/dialog.c --- gwyddion-2.62/app/dialog.c 2022-08-31 11:48:50.000000000 +0000 +++ gwyddion-2.63/app/dialog.c 2023-06-09 14:28:36.000000000 +0000 @@ -1,5 +1,5 @@ /* - * $Id: dialog.c 24974 2022-08-31 11:48:49Z yeti-dn $ + * $Id: dialog.c 25412 2023-06-06 09:35:49Z yeti-dn $ * Copyright (C) 2021 David Necas (Yeti). * E-mail: yeti@gwyddion.net. * @@ -175,7 +175,7 @@ * %GTK_RESPONSE_OK or %GTK_RESPONSE_ACCEPT creates an OK button which finishes the dialog with result * %GWY_DIALOG_PROCEED (or %GWY_DIALOG_HAVE_RESULT if result has been calculated). * - * %GTK_RESPONSE_CANCEL or %GTK_RESPONSE_REJECT creates a Cancelbutton which finishes the dialog with result + * %GTK_RESPONSE_CANCEL or %GTK_RESPONSE_REJECT creates a Cancel button which finishes the dialog with result * %GWY_DIALOG_CANCEL. * * Since: 2.59 diff -Nru gwyddion-2.62/app/gwyapptypes.c gwyddion-2.63/app/gwyapptypes.c --- gwyddion-2.62/app/gwyapptypes.c 2022-10-19 15:29:57.000000000 +0000 +++ gwyddion-2.63/app/gwyapptypes.c 2023-02-23 15:12:06.000000000 +0000 @@ -306,6 +306,22 @@ } return etype; } +GType +gwy_hold_selection_flags_get_type(void) +{ + static GType etype = 0; + + if (etype == 0) { + static const GFlagsValue values[] = { + { GWY_HOLD_SELECTION_HOLD, "GWY_HOLD_SELECTION_HOLD", "hold" }, + { GWY_HOLD_SELECTION_OVERWRITE, "GWY_HOLD_SELECTION_OVERWRITE", "overwrite" }, + { GWY_HOLD_SELECTION_CLEAR, "GWY_HOLD_SELECTION_CLEAR", "clear" }, + { 0, NULL, NULL } + }; + etype = g_flags_register_static("GwyHoldSelectionFlags", values); + } + return etype; +} #include "./gwyresultsexport.h" GType gwy_results_export_style_get_type(void) diff -Nru gwyddion-2.62/app/gwyapptypes.h gwyddion-2.63/app/gwyapptypes.h --- gwyddion-2.62/app/gwyapptypes.h 2021-05-16 20:25:41.000000000 +0000 +++ gwyddion-2.63/app/gwyapptypes.h 2022-12-14 16:21:02.000000000 +0000 @@ -37,6 +37,8 @@ #define GWY_TYPE_PREVIEW_SURFACE_FLAGS (gwy_preview_surface_flags_get_type()) GType gwy_plain_tool_changed_get_type(void) G_GNUC_CONST; #define GWY_TYPE_PLAIN_TOOL_CHANGED (gwy_plain_tool_changed_get_type()) +GType gwy_hold_selection_flags_get_type(void) G_GNUC_CONST; +#define GWY_TYPE_HOLD_SELECTION_FLAGS (gwy_hold_selection_flags_get_type()) GType gwy_results_export_style_get_type(void) G_GNUC_CONST; #define GWY_TYPE_RESULTS_EXPORT_STYLE (gwy_results_export_style_get_type()) GType gwy_tool_response_type_get_type(void) G_GNUC_CONST; diff -Nru gwyddion-2.62/app/gwymoduleutils.c gwyddion-2.63/app/gwymoduleutils.c --- gwyddion-2.62/app/gwymoduleutils.c 2022-09-22 12:25:33.000000000 +0000 +++ gwyddion-2.63/app/gwymoduleutils.c 2023-02-21 17:35:53.000000000 +0000 @@ -1,6 +1,6 @@ /* - * $Id: gwymoduleutils.c 25037 2022-09-22 12:25:33Z yeti-dn $ - * Copyright (C) 2007-2022 David Necas (Yeti), Petr Klapetek. + * $Id: gwymoduleutils.c 25224 2023-02-21 17:35:52Z yeti-dn $ + * Copyright (C) 2007-2023 David Necas (Yeti), Petr Klapetek. * E-mail: yeti@gwyddion.net, klapetek@gwyddion.net. * * This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public @@ -41,6 +41,23 @@ gssize len; } GwySaveAuxiliaryData; +typedef struct { + GwySelection *selection; + GwyParamTable *table; + gdouble min; + gdouble max; + gulong selection_id; + gulong param_id; + gint id_from; + gint id_to; + gboolean in_update; +} GraphRangeData; + +static void graph_range_selection_destroyed(gpointer user_data, + GObject *selection); +static void graph_range_table_destroyed (gpointer user_data, + GObject *selection); + static gchar* gwy_save_auxiliary_data_create(gpointer user_data, gssize *data_len) @@ -1245,6 +1262,158 @@ return expander; } +static void +graph_range_param_changed(GraphRangeData *grdata, gint id) +{ + GwyParams *params; + gdouble range[2]; + + if (grdata->in_update || (id != grdata->id_from && id != grdata->id_to)) + return; + + params = gwy_param_table_params(grdata->table); + range[0] = gwy_params_get_double(params, grdata->id_from); + range[1] = gwy_params_get_double(params, grdata->id_to); + if (range[0] <= grdata->min && range[1] >= grdata->max) + gwy_selection_clear(grdata->selection); + else + gwy_selection_set_object(grdata->selection, 0, range); +} + +static void +graph_range_selection_changed(GwySelection* selection, gint i, GraphRangeData *grdata) +{ + gdouble range[2]; + gdouble xfrom, xto; + gboolean have_range = TRUE; + + g_return_if_fail(i <= 0); + + if (gwy_selection_get_data(selection, NULL) <= 0) + have_range = FALSE; + else { + gwy_selection_get_object(selection, 0, range); + if (range[0] == range[1]) + have_range = FALSE; + } + if (have_range) { + xfrom = MIN(range[0], range[1]); + xto = MAX(range[0], range[1]); + } + else { + xfrom = grdata->min; + xto = grdata->max; + } + + _gwy_param_table_in_update(grdata->table, TRUE); + gwy_param_table_set_double(grdata->table, grdata->id_from, xfrom); + gwy_param_table_set_double(grdata->table, grdata->id_to, xto); + _gwy_param_table_in_update(grdata->table, FALSE); + + grdata->in_update = TRUE; + gwy_param_table_param_changed(grdata->table, grdata->id_from); + gwy_param_table_param_changed(grdata->table, grdata->id_to); + grdata->in_update = FALSE; +} + +/** + * gwy_create_graph_xrange_with_params: + * @partable: Set of parameter value controls. + * @id_from: Parameter identifier for the beginning. + * @id_to: Parameter identifier for the end. + * @graph: Graph widget where the @x-range will be selected. + * @gmodel: Graph model used for determining the @x range. May be %NULL to use @graph's model, although this is not + * usually useful. + * + * Sets up a parameter table range row for horizontal graph selection. + * + * A row with the two parameters is added to the table. The graph is set up for %GWY_GRAPH_STATUS_XSEL. + * Synchronisation between the parameters and selection is set up. + * + * The caller still needs to run gwy_dialog_invalidate() or use a similar mechanism when the parameter changes. + * Usually, any change to the selection will result in two updates, one for each parameter. + * + * Since: 2.63 + **/ +void +gwy_create_graph_xrange_with_params(GwyParamTable *partable, + gint id_from, + gint id_to, + GwyGraph *graph, + GwyGraphModel *gmodel) +{ + GraphRangeData *grdata; + GwyParams *params; + GwySIValueFormat *vf; + GwySelection *selection; + GwySIUnit *unit; + gdouble min, max, range; + + g_return_if_fail(GWY_IS_PARAM_TABLE(partable)); + g_return_if_fail(GWY_IS_GRAPH(graph)); + + params = gwy_param_table_params(partable); + gmodel = (gmodel ? gmodel : gwy_graph_get_model(graph)); + g_return_if_fail(GWY_IS_GRAPH_MODEL(gmodel)); + + gwy_graph_model_get_x_range(gmodel, &min, &max); + gwy_params_set_double(params, id_from, min); + gwy_params_set_double(params, id_to, max); + + g_object_get(gmodel, "si-unit-x", &unit, NULL); + range = MAX(fabs(min), fabs(max)); + vf = gwy_si_unit_get_format_with_digits(unit, GWY_SI_UNIT_FORMAT_VFMARKUP, range, 3, NULL); + + gwy_graph_set_status(GWY_GRAPH(graph), GWY_GRAPH_STATUS_XSEL); + selection = gwy_graph_area_get_selection(GWY_GRAPH_AREA(gwy_graph_get_area(GWY_GRAPH(graph))), + GWY_GRAPH_STATUS_XSEL); + gwy_selection_set_max_objects(selection, 1); + + gwy_param_table_append_range(partable, id_from, id_to); + gwy_param_table_entry_set_value_format(partable, id_from, vf); + + g_object_unref(unit); + gwy_si_unit_value_format_free(vf); + + grdata = g_new0(GraphRangeData, 1); + grdata->min = min; + grdata->max = max; + grdata->selection = selection; + grdata->table = partable; + grdata->id_from = id_from; + grdata->id_to = id_to; + g_object_weak_ref(G_OBJECT(selection), graph_range_selection_destroyed, grdata); + g_object_weak_ref(G_OBJECT(partable), graph_range_table_destroyed, grdata); + + grdata->param_id = g_signal_connect_swapped(partable, "param-changed", + G_CALLBACK(graph_range_param_changed), grdata); + grdata->selection_id = g_signal_connect(selection, "changed", G_CALLBACK(graph_range_selection_changed), grdata); +} + +static void +graph_range_selection_destroyed(gpointer user_data, G_GNUC_UNUSED GObject *selection) +{ + GraphRangeData *grdata = (GraphRangeData*)user_data; + + /* Selection has been destroyed; cross-destroy anything table-related. */ + g_signal_handler_disconnect(grdata->table, grdata->param_id); + g_object_weak_unref(G_OBJECT(grdata->table), graph_range_table_destroyed, grdata); + gwy_clear(grdata, 1); + g_free(grdata); +} + +static void +graph_range_table_destroyed(gpointer user_data, G_GNUC_UNUSED GObject *partable) +{ + GraphRangeData *grdata = (GraphRangeData*)user_data; + + /* Param table has been destroyed; cross-destroy anything selection-related. */ + g_signal_handler_disconnect(grdata->selection, grdata->selection_id); + g_object_weak_unref(G_OBJECT(grdata->selection), graph_range_selection_destroyed, grdata); + gwy_clear(grdata, 1); + g_free(grdata); +} + static gboolean item_is_visible(GtkTreeModel *model, GtkTreeIter *iter, gpointer default_item) { diff -Nru gwyddion-2.62/app/gwymoduleutils-file.c gwyddion-2.63/app/gwymoduleutils-file.c --- gwyddion-2.62/app/gwymoduleutils-file.c 2021-08-13 14:48:02.000000000 +0000 +++ gwyddion-2.63/app/gwymoduleutils-file.c 2023-02-23 15:20:14.000000000 +0000 @@ -1,22 +1,18 @@ /* * $Id: gwymoduleutils-file.c 23978 2021-08-13 14:48:02Z yeti-dn $ - * Copyright (C) 2007-2016 David Necas (Yeti), Petr Klapetek. + * Copyright (C) 2007-2023 David Necas (Yeti), Petr Klapetek. * E-mail: yeti@gwyddion.net, klapetek@gwyddion.net. * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. + * This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any + * later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with this program; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include "config.h" @@ -60,12 +56,11 @@ * * Sets `realsquare' for a channel highly non-square pixels. * - * The threshold for highly non-square is somewhat arbitrary. - * Fortunately, most files encoutered in practice have the measure ratio either - * very close to 1, larger or equal than 2. + * The threshold for highly non-square is somewhat arbitrary. Fortunately, most files encoutered in practice have the + * measure ratio either very close to 1, larger or equal than 2. * - * Returns: %TRUE if the channel was found to have highly non-square pixels - * and `realsquare' was set (otherwise it was unset). + * Returns: %TRUE if the channel was found to have highly non-square pixels and `realsquare' was set (otherwise it was + * unset). * * Since: 2.3 **/ @@ -141,9 +136,8 @@ * * Adds a channel title based on data field units. * - * The guess is very simple, but probably better than `Unknown channel' in - * most cases. If there already is a title it is left intact, making use of - * this function as a fall-back easier. + * The guess is very simple, but probably better than `Unknown channel' in most cases. If there already is a title it + * is left intact, making use of this function as a fall-back easier. * * Returns: %TRUE if the title was set (either by this function or before). * @@ -181,9 +175,8 @@ * * Adds a XYZ data title based on surface value units. * - * The guess is very simple, but probably better than `Unknown channel' in - * most cases. If there already is a title it is left intact, making use of - * this function as a fall-back easier. + * The guess is very simple, but probably better than `Unknown channel' in most cases. If there already is a title it + * is left intact, making use of this function as a fall-back easier. * * Returns: %TRUE if the title was set (either by this function or before). * @@ -216,21 +209,18 @@ /** * gwy_app_channel_remove_bad_data: - * @dfield: A data field. The values of bad data points are ignored and might - * be even left uninitialized. - * @mfield: A mask field containing 1.0 in place of good data points, 0.0 in - * place of bad points. It will be inverted to become the mask of - * bad points. + * @dfield: A data field. The values of bad data points are ignored and might be even left uninitialized. + * @mfield: A mask field containing 1.0 in place of good data points, 0.0 in place of bad points. It will be inverted + * to become the mask of bad points. * * Replaces bad data points with some neutral values. * - * Since Gwyddion has no concept of bad data points, they are usually marked - * with a mask and replaced with some neutral values upon import, leaving the - * user to decide how to proceed further. This helper function performs such + * Since Gwyddion has no concept of bad data points, they are usually marked with a mask and replaced with some + * neutral values upon import, leaving the user to decide how to proceed further. This helper function performs such * replacement. * - * Returns: The number of bad data points replaced. If zero is returned, all - * points are good and there is no need for masking. + * Returns: The number of bad data points replaced. If zero is returned, all points are good and there is no need for + * masking. * * Since: 2.14 **/ @@ -269,19 +259,15 @@ * @dfield: A data field possibly containing NaNs and infinities. * @removebad: Automatically remove the invalid values. * - * Creates a mask corresponding to not-a-number and infinite values in a data - * field. + * Creates a mask corresponding to not-a-number and infinite values in a data field. + * + * NaNs and infinities are not normally allowed in Gwyddion so this function should be used upon import if the source + * file format can represent such values. * - * NaNs and infinities are not normally allowed in Gwyddion so this function - * should be used upon import if the source file format can represent such - * values. - * - * The invalid values can be automatically removed using the same method as - * gwy_app_channel_remove_bad_data(). - * - * Returns: A newly created data field with 1.0 in pixels corresponding to a - * NaN or infinity in @dfield. If no such pixels are present, %NULL - * is returned. + * The invalid values can be automatically removed using the same method as gwy_app_channel_remove_bad_data(). + * + * Returns: A newly created data field with 1.0 in pixels corresponding to a NaN or infinity in @dfield. If no such + * pixels are present, %NULL is returned. * * Since: 2.38 **/ @@ -298,8 +284,7 @@ if (G_UNLIKELY(!mask)) { mask = gwy_data_field_new_alike(dfield, TRUE); m = gwy_data_field_get_data(mask); - gwy_si_unit_set_from_string(gwy_data_field_get_si_unit_z(mask), - NULL); + gwy_si_unit_set_from_string(gwy_data_field_get_si_unit_z(mask), NULL); } m[k] = 1.0; } @@ -362,8 +347,7 @@ static void check_fatal_error(GwyTextHeaderContext *context) { - if (!context->parser->error - || !context->parser->error(context, context->error, context->user_data)) + if (!context->parser->error || !context->parser->error(context, context->error, context->user_data)) g_clear_error(&context->error); } @@ -389,10 +373,8 @@ /** * gwy_text_header_parse: - * @header: Text header to parse. It must be %NULL-terminated and writable. - * Its contents will be modified to directly embed the hash keys - * and/or values. It must not be freed while the returned hash - * table is in use. + * @header: Text header to parse. It must be %NULL-terminated and writable. Its contents will be modified to directly + * embed the hash keys and/or values. It must not be freed while the returned hash table is in use. * @parser: Parser specification. * @user_data: User data passed to parser callbacks. * @error: Error to set on fatal errors. @@ -403,8 +385,7 @@ * * Lines consisting only of whitespace are ignored. * - * Returns: A newly created hash table with values indexed by they keys found - * in the header. + * Returns: A newly created hash table with values indexed by they keys found in the header. * * Since: 2.18 **/ @@ -416,11 +397,9 @@ { GwyTextHeaderContext context; gchar *line, *header_start; - const gchar *section_prefix = NULL, *section_suffix = NULL, - *endsect_prefix = NULL, *endsect_suffix = NULL, + const gchar *section_prefix = NULL, *section_suffix = NULL, *endsect_prefix = NULL, *endsect_suffix = NULL, **comments = NULL; - guint section_prefix_len = 0, section_suffix_len = 0, - endsect_prefix_len = 0, endsect_suffix_len = 0, + guint section_prefix_len = 0, section_suffix_len = 0, endsect_prefix_len = 0, endsect_suffix_len = 0, comment_prefix_len = 0, line_prefix_len = 0; gchar equal_sign_char = 0; guint j, ncomments = 0; @@ -428,11 +407,8 @@ g_return_val_if_fail(header, NULL); g_return_val_if_fail(parser, NULL); - g_return_val_if_fail(parser->section_template - || !parser->endsection_template, - NULL); - g_return_val_if_fail(!parser->section_template == !parser->section_accessor, - NULL); + g_return_val_if_fail(parser->section_template || !parser->endsection_template, NULL); + g_return_val_if_fail(!parser->section_template == !parser->section_accessor, NULL); g_return_val_if_fail(parser->item || !parser->destroy_key, NULL); g_return_val_if_fail(parser->item || !parser->destroy_value, NULL); @@ -467,9 +443,7 @@ if (strchr(parser->comment_prefix, '\n')) { const gchar *p; - for (j = 0, p = parser->comment_prefix-1; - p; - p = strchr(p+1, '\n'), j++) + for (j = 0, p = parser->comment_prefix-1; p; p = strchr(p+1, '\n'), j++) ; ncomments = j; comments = g_new(const gchar*, j+1); @@ -495,12 +469,8 @@ context.parser = parser; context.user_data = user_data; context.hash = g_hash_table_new_full(g_str_hash, g_str_equal, - parser->destroy_key - ? parser->destroy_key - : (free_keys ? g_free : NULL), - parser->destroy_value - ? parser->destroy_value : NULL); - + parser->destroy_key ? parser->destroy_key : (free_keys ? g_free : NULL), + parser->destroy_value ? parser->destroy_value : NULL); for (line = gwy_str_next_line(&header); line && !context.error; line = gwy_str_next_line(&header), context.lineno++) { @@ -516,8 +486,7 @@ && gwy_strequal(line, parser->terminator)) break; - /* Section ends -- before section starts beause they might look - * similar. */ + /* Section ends -- before section starts beause they might look similar. */ if (endsect_prefix && len > endsect_prefix_len + endsect_suffix_len && strncmp(line, endsect_prefix, endsect_prefix_len) == 0 @@ -526,14 +495,11 @@ len -= endsect_suffix_len; line[len] = '\0'; - endsection = strip(line + endsect_prefix_len, - len - endsect_prefix_len); + endsection = strip(line + endsect_prefix_len, len - endsect_prefix_len); if (!context.section) { make_noise(&context, GWY_TEXT_HEADER_ERROR_SECTION_END, - _("Section %s ended at line %u but it has " - "never started."), - endsection, context.lineno); + _("Section %s ended at line %u but it has never started."), endsection, context.lineno); continue; } @@ -544,19 +510,14 @@ continue; } - if (parser->endsection - && !parser->endsection(&context, context.section, user_data, - &context.error)) + if (parser->endsection && !parser->endsection(&context, context.section, user_data, &context.error)) check_fatal_error(&context); context.section = NULL; continue; } - else if (parser->endsection_template - && gwy_strequal(line, parser->endsection_template)) { - if (parser->endsection - && !parser->endsection(&context, context.section, user_data, - &context.error)) + else if (parser->endsection_template && gwy_strequal(line, parser->endsection_template)) { + if (parser->endsection && !parser->endsection(&context, context.section, user_data, &context.error)) check_fatal_error(&context); context.section = NULL; continue; @@ -571,8 +532,7 @@ len -= section_suffix_len; line[len] = '\0'; - newsection = strip(line + section_prefix_len, - len - section_prefix_len); + newsection = strip(line + section_prefix_len, len - section_prefix_len); if (parser->endsection_template && context.section) { make_noise(&context, GWY_TEXT_HEADER_ERROR_SECTION_START, @@ -582,31 +542,25 @@ if (!*newsection) { make_noise(&context, GWY_TEXT_HEADER_ERROR_SECTION_NAME, - _("Empty section name at header line %u."), - context.lineno); + _("Empty section name at header line %u."), context.lineno); continue; } context.section = newsection; - if (parser->section - && !parser->section(&context, context.section, user_data, - &context.error)) + if (parser->section && !parser->section(&context, context.section, user_data, &context.error)) check_fatal_error(&context); continue; } /* Comments */ if (comments) { for (j = 0; j < ncomments; j++) { - if (strncmp(line, comments[j], - comments[j+1] - comments[j] - 1) == 0) + if (strncmp(line, comments[j], comments[j+1] - comments[j] - 1) == 0) break; } if (j < ncomments) continue; } - else if (parser->comment_prefix - && strncmp(line, parser->comment_prefix, - comment_prefix_len) == 0) + else if (parser->comment_prefix && strncmp(line, parser->comment_prefix, comment_prefix_len) == 0) continue; /* Line prefixes */ @@ -617,8 +571,7 @@ } else { make_noise(&context, GWY_TEXT_HEADER_ERROR_PREFIX, - _("Header line %u lacks prefix %s."), - context.lineno, parser->line_prefix); + _("Header line %u lacks prefix %s."), context.lineno, parser->line_prefix); continue; } } @@ -642,8 +595,7 @@ } if (!value) { make_noise(&context, GWY_TEXT_HEADER_ERROR_GARBAGE, - _("Header line %u lacks key-value separator."), - context.lineno); + _("Header line %u lacks key-value separator."), context.lineno); continue; } @@ -658,15 +610,13 @@ if (parser->section_template) { if (context.section) - key = g_strconcat(context.section, parser->section_accessor, - key, NULL); + key = g_strconcat(context.section, parser->section_accessor, key, NULL); else key = g_strdup(key); } if (parser->item) { - if (!parser->item(&context, context.hash, key, value, - context.user_data, &context.error)) + if (!parser->item(&context, context.hash, key, value, context.user_data, &context.error)) check_fatal_error(&context); } else @@ -675,11 +625,10 @@ g_free(comments); - if (parser->terminator && !line && !context.error) + if (parser->terminator && !line && !context.error) { make_noise(&context, GWY_TEXT_HEADER_ERROR_TERMINATOR, - _("Header suddenly ended at line %u; end of header marker " - "is missing"), - context.lineno); + _("Header suddenly ended at line %u; end of header marker is missing"), context.lineno); + } if (context.error) { g_propagate_error(error, context.error); @@ -699,8 +648,7 @@ * * Gets the currently open section. * - * This function may be called if no sectioning is defined. It simply - * returns %NULL then. + * This function may be called if no sectioning is defined. It simply returns %NULL then. * * Returns: The name of the currently open section, %NULL if there is none. * @@ -732,18 +680,15 @@ * gwy_file_channel_import_log_add: * @data: A data container. * @id: Data channel id. - * @filetype: File type, i.e. the name of the function importing the data - * (without any "file::" prefix). Since 2.38 it is possible to - * pass %NULL to fill the name of the currently running file type - * function automatically. - * @filename: Name of the imported file. If it is not valid UTF-8, it will be - * converted to UTF-8 using g_filename_to_utf8(). Failing even - * that, non-ASCII characters will be escaped. + * @filetype: File type, i.e. the name of the function importing the data (without any "file::" prefix). Since 2.38 + * it is possible to pass %NULL to fill the name of the currently running file type function automatically. + * @filename: Name of the imported file. If it is not valid UTF-8, it will be converted to UTF-8 using + * g_filename_to_utf8(). Failing even that, non-ASCII characters will be escaped. * * Logs the import of a channel from third-party file. * - * This is a convenience wrapper for gwy_app_channel_log_add(). The source id - * will be set to -1. The file name will be added to function arguments. + * This is a convenience wrapper for gwy_app_channel_log_add(). The source id will be set to -1. The file name will + * be added to function arguments. * * Since: 2.35 **/ @@ -760,18 +705,15 @@ * gwy_file_volume_import_log_add: * @data: A data container. * @id: Volume data id. - * @filetype: File type, i.e. the name of the function importing the data - * (without any "file::" prefix). Since 2.38 it is possible to - * pass %NULL to fill the name of the currently running file type - * function automatically. - * @filename: Name of the imported file. If it is not valid UTF-8, it will be - * converted to UTF-8 using g_filename_to_utf8(). Failing even - * that, non-ASCII characters will be escaped. + * @filetype: File type, i.e. the name of the function importing the data (without any "file::" prefix). Since 2.38 + * it is possible to pass %NULL to fill the name of the currently running file type function automatically. + * @filename: Name of the imported file. If it is not valid UTF-8, it will be converted to UTF-8 using + * g_filename_to_utf8(). Failing even that, non-ASCII characters will be escaped. * * Logs the import of volume data from third-party file. * - * This is a convenience wrapper for gwy_app_volume_log_add(). The source id - * will be set to -1. The file name will be added to function arguments. + * This is a convenience wrapper for gwy_app_volume_log_add(). The source id will be set to -1. The file name will + * be added to function arguments. * * Since: 2.35 **/ @@ -788,18 +730,15 @@ * gwy_file_xyz_import_log_add: * @data: A data container. * @id: XYZ surface data id. - * @filetype: File type, i.e. the name of the function importing the data - * (without any "file::" prefix). It is possible to - * pass %NULL to fill the name of the currently running file type - * function automatically. - * @filename: Name of the imported file. If it is not valid UTF-8, it will be - * converted to UTF-8 using g_filename_to_utf8(). Failing even - * that, non-ASCII characters will be escaped. + * @filetype: File type, i.e. the name of the function importing the data (without any "file::" prefix). It is + * possible to pass %NULL to fill the name of the currently running file type function automatically. + * @filename: Name of the imported file. If it is not valid UTF-8, it will be converted to UTF-8 using + * g_filename_to_utf8(). Failing even that, non-ASCII characters will be escaped. * * Logs the import of xyz data from third-party file. * - * This is a convenience wrapper for gwy_app_xyz_log_add(). The source id - * will be set to -1. The file name will be added to function arguments. + * This is a convenience wrapper for gwy_app_xyz_log_add(). The source id will be set to -1. The file name will be + * added to function arguments. * * Since: 2.45 **/ @@ -816,18 +755,15 @@ * gwy_file_curve_map_import_log_add: * @data: A data container. * @id: Volume data id. - * @filetype: File type, i.e. the name of the function importing the data - * (without any "file::" prefix). Since 2.38 it is possible to - * pass %NULL to fill the name of the currently running file type - * function automatically. - * @filename: Name of the imported file. If it is not valid UTF-8, it will be - * converted to UTF-8 using g_filename_to_utf8(). Failing even - * that, non-ASCII characters will be escaped. + * @filetype: File type, i.e. the name of the function importing the data (without any "file::" prefix). Since 2.38 + * it is possible to pass %NULL to fill the name of the currently running file type function automatically. + * @filename: Name of the imported file. If it is not valid UTF-8, it will be converted to UTF-8 using + * g_filename_to_utf8(). Failing even that, non-ASCII characters will be escaped. * * Logs the import of volume data from third-party file. * - * This is a convenience wrapper for gwy_app_curve_map_log_add(). The source id - * will be set to -1. The file name will be added to function arguments. + * This is a convenience wrapper for gwy_app_curve_map_log_add(). The source id will be set to -1. The file name + * will be added to function arguments. * * Since: 2.60 **/ @@ -901,25 +837,19 @@ * @short_description: Utility functions for file modules * @include: app/gwymoduleutils-file.h * - * Functions gwy_app_channel_check_nonsquare() and - * gwy_app_channel_title_fall_back() perform common tasks improving the - * imported of channels from foreign data files. Typically one calls them on - * all imported channel ids after storing the data fields the the container, - * if they are useful for a given file type. - * - * The group of functions gwy_get_gint16_le(), gwy_get_gint16_be(), etc. - * is intended to portably read packed binary data structures that are commonly - * found in SPM files. They all work identically: the binary data value is - * read from the buffer, converted if necessary, and the provided - * buffer pointer is moved to point after the value to faciliate sequential - * reading. - * - * As no buffer size is passed, obviously no buffer size checking is performed. - * The caller has to ensure the buffer is large enough -- it is expected the - * caller checks the total buffer size before starting to parse it. + * Functions gwy_app_channel_check_nonsquare() and gwy_app_channel_title_fall_back() perform common tasks improving + * the imported of channels from foreign data files. Typically one calls them on all imported channel ids after + * storing the data fields the the container, if they are useful for a given file type. + * + * The group of functions gwy_get_gint16_le(), gwy_get_gint16_be(), etc. is intended to portably read packed binary + * data structures that are commonly found in SPM files. They all work identically: the binary data value is read + * from the buffer, converted if necessary, and the provided buffer pointer is moved to point after the value to + * faciliate sequential reading. + * + * As no buffer size is passed, obviously no buffer size checking is performed. The caller has to ensure the buffer is + * large enough -- it is expected the caller checks the total buffer size before starting to parse it. * - * For example to portably read the following packed struct stored - * in big-endian byte order: + * For example to portably read the following packed struct stored in big-endian byte order: * * struct { * guint16 xres; @@ -936,10 +866,9 @@ * * and @p will point after @measure in @buffer after this snippet is finished. * - * The data types used in @header do not matter (provided they are large - * enough to hold the values), the exact types are determined by the functions - * used. Therefore the reading would work identically if @header was defined - * using common types: + * The data types used in @header do not matter (provided they are large enough to hold the values), the exact types + * are determined by the functions used. Therefore the reading would work identically if @header was defined using + * common types: * * struct { * gint xres; @@ -951,11 +880,10 @@ /** * gwy_get_gboolean8: - * @ppv: Pointer to a pointer to boolean (stored as a signle byte) - * in a memory buffer. + * @ppv: Pointer to a pointer to boolean (stored as a signle byte) in a memory buffer. * - * Reads a boolean value stored as a signle byte from a - * binary data buffer, moving the buffer pointer to point just after the value. + * Reads a boolean value stored as a signle byte from a binary data buffer, moving the buffer pointer to point just + * after the value. * * Returns: The #gboolean value read from the buffer. * @@ -964,11 +892,10 @@ /** * gwy_get_gint16_le: - * @ppv: Pointer to a pointer to a little-endian signed 16bit integer - * in a memory buffer. + * @ppv: Pointer to a pointer to a little-endian signed 16bit integer in a memory buffer. * - * Reads a signed 16bit integer value from a little-endian - * binary data buffer, moving the buffer pointer to point just after the value. + * Reads a signed 16bit integer value from a little-endian binary data buffer, moving the buffer pointer to point just + * after the value. * * Returns: The #gint16 value read from the buffer. * @@ -977,11 +904,10 @@ /** * gwy_get_gint16_be: - * @ppv: Pointer to a pointer to a big-endian signed 16bit integer - * in a memory buffer. + * @ppv: Pointer to a pointer to a big-endian signed 16bit integer in a memory buffer. * - * Reads a signed 16bit integer value from a big-endian - * binary data buffer, moving the buffer pointer to point just after the value. + * Reads a signed 16bit integer value from a big-endian binary data buffer, moving the buffer pointer to point just + * after the value. * * Returns: The #gint16 value read from the buffer. * @@ -990,11 +916,10 @@ /** * gwy_get_guint16_le: - * @ppv: Pointer to a pointer to a little-endian unsigned 16bit integer - * in a memory buffer. + * @ppv: Pointer to a pointer to a little-endian unsigned 16bit integer in a memory buffer. * - * Reads an unsigned 16bit integer value from a little-endian - * binary data buffer, moving the buffer pointer to point just after the value. + * Reads an unsigned 16bit integer value from a little-endian binary data buffer, moving the buffer pointer to point + * just after the value. * * Returns: The #guint16 value read from the buffer. * @@ -1003,11 +928,10 @@ /** * gwy_get_guint16_be: - * @ppv: Pointer to a pointer to a big-endian unsigned 16bit integer - * in a memory buffer. + * @ppv: Pointer to a pointer to a big-endian unsigned 16bit integer in a memory buffer. * - * Reads an unsigned 16bit integer value from a big-endian - * binary data buffer, moving the buffer pointer to point just after the value. + * Reads an unsigned 16bit integer value from a big-endian binary data buffer, moving the buffer pointer to point just + * after the value. * * Returns: The #guint16 value read from the buffer. * @@ -1016,11 +940,10 @@ /** * gwy_get_gint32_le: - * @ppv: Pointer to a pointer to a little-endian signed 32bit integer - * in a memory buffer. + * @ppv: Pointer to a pointer to a little-endian signed 32bit integer in a memory buffer. * - * Reads a signed 32bit integer value from a little-endian - * binary data buffer, moving the buffer pointer to point just after the value. + * Reads a signed 32bit integer value from a little-endian binary data buffer, moving the buffer pointer to point just + * after the value. * * Returns: The #gint32 value read from the buffer. * @@ -1029,11 +952,10 @@ /** * gwy_get_gint32_be: - * @ppv: Pointer to a pointer to a big-endian signed 32bit integer - * in a memory buffer. + * @ppv: Pointer to a pointer to a big-endian signed 32bit integer in a memory buffer. * - * Reads a signed 32bit integer value from a big-endian - * binary data buffer, moving the buffer pointer to point just after the value. + * Reads a signed 32bit integer value from a big-endian binary data buffer, moving the buffer pointer to point just + * after the value. * * Returns: The #gint32 value read from the buffer. * @@ -1042,11 +964,10 @@ /** * gwy_get_guint32_le: - * @ppv: Pointer to a pointer to a little-endian unsigned 32bit integer - * in a memory buffer. + * @ppv: Pointer to a pointer to a little-endian unsigned 32bit integer in a memory buffer. * - * Reads an unsigned 32bit integer value from a little-endian - * binary data buffer, moving the buffer pointer to point just after the value. + * Reads an unsigned 32bit integer value from a little-endian binary data buffer, moving the buffer pointer to point + * just after the value. * * Returns: The #guint32 value read from the buffer. * @@ -1055,11 +976,10 @@ /** * gwy_get_guint32_be: - * @ppv: Pointer to a pointer to a big-endian unsigned 32bit integer - * in a memory buffer. + * @ppv: Pointer to a pointer to a big-endian unsigned 32bit integer in a memory buffer. * - * Reads an unsigned 32bit integer value from a big-endian - * binary data buffer, moving the buffer pointer to point just after the value. + * Reads an unsigned 32bit integer value from a big-endian binary data buffer, moving the buffer pointer to point just + * after the value. * * Returns: The #guint32 value read from the buffer. * @@ -1068,11 +988,10 @@ /** * gwy_get_gint64_le: - * @ppv: Pointer to a pointer to a little-endian signed 64bit integer - * in a memory buffer. + * @ppv: Pointer to a pointer to a little-endian signed 64bit integer in a memory buffer. * - * Reads a signed 64bit integer value from a little-endian - * binary data buffer, moving the buffer pointer to point just after the value. + * Reads a signed 64bit integer value from a little-endian binary data buffer, moving the buffer pointer to point just + * after the value. * * Returns: The #gint64 value read from the buffer. * @@ -1081,11 +1000,10 @@ /** * gwy_get_gint64_be: - * @ppv: Pointer to a pointer to a big-endian signed 64bit integer - * in a memory buffer. + * @ppv: Pointer to a pointer to a big-endian signed 64bit integer in a memory buffer. * - * Reads a signed 64bit integer value from a big-endian - * binary data buffer, moving the buffer pointer to point just after the value. + * Reads a signed 64bit integer value from a big-endian binary data buffer, moving the buffer pointer to point just + * after the value. * * Returns: The #gint64 value read from the buffer. * @@ -1094,11 +1012,10 @@ /** * gwy_get_guint64_le: - * @ppv: Pointer to a pointer to a little-endian unsigned 64bit integer - * in a memory buffer. + * @ppv: Pointer to a pointer to a little-endian unsigned 64bit integer in a memory buffer. * - * Reads an unsigned 64bit integer value from a little-endian - * binary data buffer, moving the buffer pointer to point just after the value. + * Reads an unsigned 64bit integer value from a little-endian binary data buffer, moving the buffer pointer to point + * just after the value. * * Returns: The #guint64 value read from the buffer. * @@ -1107,11 +1024,10 @@ /** * gwy_get_guint64_be: - * @ppv: Pointer to a pointer to a big-endian unsigned 64bit integer - * in a memory buffer. + * @ppv: Pointer to a pointer to a big-endian unsigned 64bit integer in a memory buffer. * - * Reads an unsigned 64bit integer value from a big-endian - * binary data buffer, moving the buffer pointer to point just after the value. + * Reads an unsigned 64bit integer value from a big-endian binary data buffer, moving the buffer pointer to point just + * after the value. * * Returns: The #guint64 value read from the buffer. * @@ -1120,11 +1036,10 @@ /** * gwy_get_gfloat_le: - * @ppv: Pointer to a pointer to a little-endian single-precision IEEE float - * in a memory buffer. + * @ppv: Pointer to a pointer to a little-endian single-precision IEEE float in a memory buffer. * - * Reads a single-precision IEEE float value from a little-endian - * binary data buffer, moving the buffer pointer to point just after the value. + * Reads a single-precision IEEE float value from a little-endian binary data buffer, moving the buffer pointer to + * point just after the value. * * Returns: The #gfloat value read from the buffer. * @@ -1133,11 +1048,10 @@ /** * gwy_get_gfloat_be: - * @ppv: Pointer to a pointer to a big-endian single-precision IEEE float - * in a memory buffer. + * @ppv: Pointer to a pointer to a big-endian single-precision IEEE float in a memory buffer. * - * Reads a single-precision IEEE float value from a big-endian - * binary data buffer, moving the buffer pointer to point just after the value. + * Reads a single-precision IEEE float value from a big-endian binary data buffer, moving the buffer pointer to point + * just after the value. * * Returns: The #gfloat value read from the buffer. * @@ -1146,11 +1060,10 @@ /** * gwy_get_gdouble_le: - * @ppv: Pointer to a pointer to a little-endian double-precision IEEE float - * in a memory buffer. + * @ppv: Pointer to a pointer to a little-endian double-precision IEEE float in a memory buffer. * - * Reads a double-precision IEEE float value from a little-endian - * binary data buffer, moving the buffer pointer to point just after the value. + * Reads a double-precision IEEE float value from a little-endian binary data buffer, moving the buffer pointer to + * point just after the value. * * Returns: The #gdouble value read from the buffer. * @@ -1159,11 +1072,10 @@ /** * gwy_get_gdouble_be: - * @ppv: Pointer to a pointer to a big-endian double-precision IEEE float - * in a memory buffer. + * @ppv: Pointer to a pointer to a big-endian double-precision IEEE float in a memory buffer. * - * Reads a double-precision IEEE float value from a big-endian - * binary data buffer, moving the buffer pointer to point just after the value. + * Reads a double-precision IEEE float value from a big-endian binary data buffer, moving the buffer pointer to point + * just after the value. * * Returns: The #gdouble value read from the buffer. * @@ -1172,11 +1084,10 @@ /** * gwy_get_pascal_real_le: - * @ppv: Pointer to a pointer to a little-endian six-byte Pascal Real - * in a memory buffer. + * @ppv: Pointer to a pointer to a little-endian six-byte Pascal Real in a memory buffer. * - * Reads a six-byte Pascale Real value from a little-endian - * binary data buffer, moving the buffer pointer to point just after the value. + * Reads a six-byte Pascale Real value from a little-endian binary data buffer, moving the buffer pointer to point + * just after the value. * * Returns: The floating point value read from the buffer as a #gdouble. * @@ -1185,11 +1096,10 @@ /** * gwy_get_pascal_real_be: - * @ppv: Pointer to a pointer to a big-endian six-byte Pascal Real - * in a memory buffer. + * @ppv: Pointer to a pointer to a big-endian six-byte Pascal Real in a memory buffer. * - * Reads a six-byte Pascale Real value from a big-endian - * binary data buffer, moving the buffer pointer to point just after the value. + * Reads a six-byte Pascale Real value from a big-endian binary data buffer, moving the buffer pointer to point just + * after the value. * * Returns: The floating point value read from the buffer as a #gdouble. * @@ -1199,39 +1109,31 @@ /** * GWY_TEXT_HEADER_ERROR: * - * Error domain for text header parsing. Errors in this domain will be from the - * #GwyTextHeaderError enumeration. See #GError for information on error - * domains. + * Error domain for text header parsing. Errors in this domain will be from the #GwyTextHeaderError enumeration. See + * #GError for information on error domains. * * Since: 2.18 **/ /** * GwyTextHeaderError: - * @GWY_TEXT_HEADER_ERROR_SECTION_NAME: Section name is invalid. It is raised - * by the parser only for an empty section + * @GWY_TEXT_HEADER_ERROR_SECTION_NAME: Section name is invalid. It is raised by the parser only for an empty section * name. - * @GWY_TEXT_HEADER_ERROR_SECTION_END: Section ended when a different section - * or no section was open. Note that - * gwy_text_header_context_get_section() - * returns the section being closed at the + * @GWY_TEXT_HEADER_ERROR_SECTION_END: Section ended when a different section or no section was open. Note that + * gwy_text_header_context_get_section() returns the section being closed at the * time this error is raised. - * @GWY_TEXT_HEADER_ERROR_SECTION_START: Section started before the previous - * ended. This is raised only if + * @GWY_TEXT_HEADER_ERROR_SECTION_START: Section started before the previous ended. This is raised only if * @endsection_template is set. * @GWY_TEXT_HEADER_ERROR_PREFIX: Line lacks the mandatory prefix. * @GWY_TEXT_HEADER_ERROR_GARBAGE: Line cannot be parsed into a key-value pair. * @GWY_TEXT_HEADER_ERROR_KEY: Key name is invalid, namely empty. - * @GWY_TEXT_HEADER_ERROR_VALUE: Value is invalid. This is never raised by - * the parser. - * @GWY_TEXT_HEADER_ERROR_TERMINATOR: The text header has ended without being - * terminated by specified terminator. + * @GWY_TEXT_HEADER_ERROR_VALUE: Value is invalid. This is never raised by the parser. + * @GWY_TEXT_HEADER_ERROR_TERMINATOR: The text header has ended without being terminated by specified terminator. * * Error codes returned by text header parsing. * - * Some errors, in particular %GWY_TEXT_HEADER_ERROR_KEY and - * %GWY_TEXT_HEADER_ERROR_VALUE are expected to be raised by user callbacks - * (they are not restricted to these codes though). + * Some errors, in particular %GWY_TEXT_HEADER_ERROR_KEY and %GWY_TEXT_HEADER_ERROR_VALUE are expected to be raised by + * user callbacks (they are not restricted to these codes though). * * Since: 2.18 **/ @@ -1239,73 +1141,54 @@ /** * GwyTextHeaderContext: * - * #GwyTextHeaderContext represents the parsing state. It is an opaque data - * structure and should be only manipulated with the functions below. + * #GwyTextHeaderContext represents the parsing state. It is an opaque data structure and should be only manipulated + * with the functions below. * * Since: 2.18 **/ /** * GwyTextHeaderParser: - * @comment_prefix: Prefix denoting comment lines. It is possible to specify - * multiple prefixes by separating them with newline ("\n"). - * @section_template: Section start template. It must contain the character - * "\x1a" in the place where the section name apprears. - * For example, "[Section \x1a]". - * @endsection_template: Section end template. It may or may not contain the - * substitute character "\x1a" depending on whether the - * section end markers contain the section name. It is - * invalid to set @endsection_template without setting - * @section_template. Example: "[Section \x1a End]". - * @section_accessor: Glue to put between the section name and key when - * constructing hash table keys. It is invalid to set - * @section_accessor without setting @section_template. - * Typically, "::" is used. - * @line_prefix: Mandatory prefix of each line. Note this applies only to - * key-value lines. The templates, such comments, sections and - * terminators, must still include @line_prefix if they start - * with it. - * @key_value_separator: The string separating keys and values on each line. - * Typically, "=" or ":" is used. When left %NULL, - * whitespace plays the role of the separator. Of - * course, keys cannot contain whitespace then. - * @terminator: Line that marks end of the header. It is mandatory if - * specified, @GWY_TEXT_HEADER_ERROR_TERMINATOR is raised when - * the header ends sooner than @terminator is found. - * @item: Callback called when a key-value pair is found. If set it is - * responsible for inserting the pair to the hash table with - * g_hash_table_replace(). It is free to insert a different pair or - * nothing. It must return %FALSE if it raises an error. - * @section: Callback called when a section starts. It must return %FALSE if - * it raises an error. - * @endsection: Callback called when a section end. It must return %FALSE if - * it raises an error. - * @end: Callback called when the parsing finishes successfully, @length - * contains the length of parsed text in bytes. - * @error: Callback called when an error occurs, including errors raised by - * other user callbacks. If it returns %TRUE the error is considered - * fatal and the parsing terminates immediately. If it is left unset - * no errors are fatal hence no errors are reported to the caller. - * @destroy_key: Function to destroy keys, passed to g_hash_table_new_full(). - * It is invalid to set @destroy_key if @item callback is not - * set. - * @destroy_value: Function to destroy values, passed to - * g_hash_table_new_full(). It is invalid to set - * @destroy_value if @item callback is not set. + * @comment_prefix: Prefix denoting comment lines. It is possible to specify multiple prefixes by separating them + * with newline ("\n"). + * @section_template: Section start template. It must contain the character "\x1a" in the place where the section + * name apprears. For example, "[Section \x1a]". + * @endsection_template: Section end template. It may or may not contain the substitute character "\x1a" depending on + * whether the section end markers contain the section name. It is invalid to set + * @endsection_template without setting @section_template. Example: "[Section \x1a End]". + * @section_accessor: Glue to put between the section name and key when constructing hash table keys. It is invalid + * to set @section_accessor without setting @section_template. Typically, "::" is used. + * @line_prefix: Mandatory prefix of each line. Note this applies only to key-value lines. The templates, such + * comments, sections and terminators, must still include @line_prefix if they start with it. + * @key_value_separator: The string separating keys and values on each line. Typically, "=" or ":" is used. When left + * %NULL, whitespace plays the role of the separator. Of course, keys cannot contain whitespace + * then. + * @terminator: Line that marks end of the header. It is mandatory if specified, @GWY_TEXT_HEADER_ERROR_TERMINATOR is + * raised when the header ends sooner than @terminator is found. + * @item: Callback called when a key-value pair is found. If set it is responsible for inserting the pair to the hash + * table with g_hash_table_replace(). It is free to insert a different pair or nothing. It must return %FALSE + * if it raises an error. + * @section: Callback called when a section starts. It must return %FALSE if it raises an error. + * @endsection: Callback called when a section end. It must return %FALSE if it raises an error. + * @end: Callback called when the parsing finishes successfully, @length contains the length of parsed text in bytes. + * @error: Callback called when an error occurs, including errors raised by other user callbacks. If it returns %TRUE + * the error is considered fatal and the parsing terminates immediately. If it is left unset no errors are + * fatal hence no errors are reported to the caller. + * @destroy_key: Function to destroy keys, passed to g_hash_table_new_full(). It is invalid to set @destroy_key if + * @item callback is not set. + * @destroy_value: Function to destroy values, passed to g_hash_table_new_full(). It is invalid to set @destroy_value + * if @item callback is not set. * * Text header parser specification. * - * Memory considerations: In general, the parser attempts to reuse the contents - * of @header directly for the hash keys and values. There are two cases when - * it cannot: sectioning implies that keys must be constructed dynamically - * and the use of @item callback means the parser has no control on what is - * inserted into the hash table. - * - * This means that the @item callback must free @key if sectioning is used and - * it is not going to actually use it as the hash table key. And, of course, - * suitable @destroy_key and @destroy_value functions must be set. + * Memory considerations: In general, the parser attempts to reuse the contents of @header directly for the hash keys + * and values. There are two cases when it cannot: sectioning implies that keys must be constructed dynamically and + * the use of @item callback means the parser has no control on what is inserted into the hash table. + * + * This means that the @item callback must free @key if sectioning is used and it is not going to actually use it as + * the hash table key. And, of course, suitable @destroy_key and @destroy_value functions must be set. * * Since: 2.18 **/ -/* vim: set cin et ts=4 sw=4 cino=>1s,e0,n0,f0,{0,}0,^0,\:1s,=0,g1s,h0,t0,+1s,c3,(0,u0 : */ +/* vim: set cin et columns=120 tw=118 ts=4 sw=4 cino=>1s,e0,n0,f0,{0,}0,^0,\:1s,=0,g1s,h0,t0,+1s,c3,(0,u0 : */ diff -Nru gwyddion-2.62/app/gwymoduleutils-file.h gwyddion-2.63/app/gwymoduleutils-file.h --- gwyddion-2.62/app/gwymoduleutils-file.h 2021-08-13 14:48:02.000000000 +0000 +++ gwyddion-2.63/app/gwymoduleutils-file.h 2023-02-23 15:08:49.000000000 +0000 @@ -1,22 +1,18 @@ /* * $Id: gwymoduleutils-file.h 23978 2021-08-13 14:48:02Z yeti-dn $ - * Copyright (C) 2007-2019 David Necas (Yeti), Petr Klapetek. + * Copyright (C) 2007-2023 David Necas (Yeti), Petr Klapetek. * E-mail: yeti@gwyddion.net, klapetek@gwyddion.net. * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. + * This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any + * later version. * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. + * You should have received a copy of the GNU General Public License along with this program; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __GWY_MODULEUTILS_FILE_H__ @@ -257,8 +253,7 @@ *ppv += 6; return 0.0; } - x = 1.0 + (((((*ppv)[1]/256.0 + (*ppv)[2])/256.0 + (*ppv)[3])/256.0 - + (*ppv)[4])/256.0 + ((*ppv)[5] & 0x7f))/128.0; + x = 1.0 + (((((*ppv)[1]/256.0 + (*ppv)[2])/256.0 + (*ppv)[3])/256.0 + (*ppv)[4])/256.0 + ((*ppv)[5] & 0x7f))/128.0; if ((*ppv)[5] & 0x80) x = -x; @@ -287,8 +282,7 @@ *ppv += 6; return 0.0; } - x = 1.0 + (((((*ppv)[4]/256.0 + (*ppv)[3])/256.0 + (*ppv)[2])/256.0 - + (*ppv)[1])/256.0 + ((*ppv)[0] & 0x7f))/128.0; + x = 1.0 + (((((*ppv)[4]/256.0 + (*ppv)[3])/256.0 + (*ppv)[2])/256.0 + (*ppv)[1])/256.0 + ((*ppv)[0] & 0x7f))/128.0; if ((*ppv)[0] & 0x80) x = -x; @@ -365,14 +359,13 @@ GDestroyNotify destroy_value; } GwyTextHeaderParser; -GQuark gwy_text_header_error_quark(void); -GHashTable* gwy_text_header_parse (gchar *header, - const GwyTextHeaderParser *parser, - gpointer user_data, - GError **error); - +GQuark gwy_text_header_error_quark (void); +GHashTable* gwy_text_header_parse (gchar *header, + const GwyTextHeaderParser *parser, + gpointer user_data, + GError **error); const gchar* gwy_text_header_context_get_section(const GwyTextHeaderContext *context); -guint gwy_text_header_context_get_lineno(const GwyTextHeaderContext *context); +guint gwy_text_header_context_get_lineno (const GwyTextHeaderContext *context); void gwy_file_channel_import_log_add (GwyContainer *data, gint id, @@ -395,4 +388,4 @@ #endif /* __GWY_MODULEUTILS_FILE_H__ */ -/* vim: set cin et ts=4 sw=4 cino=>1s,e0,n0,f0,{0,}0,^0,\:1s,=0,g1s,h0,t0,+1s,c3,(0,u0 : */ +/* vim: set cin et columns=120 tw=118 ts=4 sw=4 cino=>1s,e0,n0,f0,{0,}0,^0,\:1s,=0,g1s,h0,t0,+1s,c3,(0,u0 : */ diff -Nru gwyddion-2.62/app/gwymoduleutils.h gwyddion-2.63/app/gwymoduleutils.h --- gwyddion-2.62/app/gwymoduleutils.h 2022-09-02 14:40:28.000000000 +0000 +++ gwyddion-2.63/app/gwymoduleutils.h 2023-02-21 17:35:53.000000000 +0000 @@ -1,6 +1,6 @@ /* - * $Id: gwymoduleutils.h 24994 2022-09-02 14:40:28Z yeti-dn $ - * Copyright (C) 2007-2022 David Necas (Yeti), Petr Klapetek. + * $Id: gwymoduleutils.h 25224 2023-02-21 17:35:52Z yeti-dn $ + * Copyright (C) 2007-2023 David Necas (Yeti), Petr Klapetek. * E-mail: yeti@gwyddion.net, klapetek@gwyddion.net. * * This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public @@ -26,7 +26,7 @@ #include #include #include -#include +#include G_BEGIN_DECLS @@ -91,6 +91,11 @@ GtkWidget* gwy_create_expander_with_param (const gchar *label, GwyParams *params, gint id); +void gwy_create_graph_xrange_with_params (GwyParamTable *partable, + gint id_from, + gint id_to, + GwyGraph *graph, + GwyGraphModel *gmodel); GtkTreeModel* gwy_create_inventory_model_without_default(GwyInventoryStore *store); void gwy_select_in_filtered_inventory_treeeview(GtkTreeView *treeview, const gchar *name); diff -Nru gwyddion-2.62/app/gwyplaintool.c gwyddion-2.63/app/gwyplaintool.c --- gwyddion-2.62/app/gwyplaintool.c 2022-08-26 15:24:57.000000000 +0000 +++ gwyddion-2.63/app/gwyplaintool.c 2022-12-15 10:19:55.000000000 +0000 @@ -1,5 +1,5 @@ /* - * $Id: gwyplaintool.c 24952 2022-08-26 15:24:56Z yeti-dn $ + * $Id: gwyplaintool.c 25165 2022-12-15 10:19:55Z yeti-dn $ * Copyright (C) 2006-2022 David Necas (Yeti), Petr Klapetek. * E-mail: yeti@gwyddion.net, klapetek@gwyddion.net. * @@ -50,38 +50,46 @@ gpointer cbdata; }; +struct _GwyToolHeldSelection { + GwySelection *selection; + gdouble xreal; + gdouble yreal; + gboolean is_switching_data; +}; + static void gwy_plain_tool_finalize (GObject *object); static void gwy_plain_tool_show (GwyTool *tool); static void gwy_plain_tool_hide (GwyTool *tool); static void gwy_plain_tool_data_switched (GwyTool *tool, GwyDataView *data_view); -static void gwy_plain_tool_reconnect_container (GwyPlainTool *plain_tool, +static void reconnect_container (GwyPlainTool *plain_tool, GwyDataView *data_view); -static void gwy_plain_tool_data_item_changed (GwyContainer *container, +static void data_item_changed (GwyContainer *container, GQuark quark, GwyPlainTool *plain_tool); -static void gwy_plain_tool_mask_item_changed (GwyContainer *container, +static void mask_item_changed (GwyContainer *container, GQuark quark, GwyPlainTool *plain_tool); -static void gwy_plain_tool_show_item_changed (GwyContainer *container, +static void show_item_changed (GwyContainer *container, GQuark quark, GwyPlainTool *plain_tool); -static void gwy_plain_tool_selection_item_changed (GwyContainer *container, +static void selection_item_changed (GwyContainer *container, GQuark quark, GwyPlainTool *plain_tool); -static void gwy_plain_tool_data_changed (GwyPlainTool *plain_tool); -static void gwy_plain_tool_mask_changed (GwyPlainTool *plain_tool); -static void gwy_plain_tool_show_changed (GwyPlainTool *plain_tool); -static void gwy_plain_tool_selection_disconnect (GwyPlainTool *plain_tool); -static void gwy_plain_tool_selection_reconnect (GwyPlainTool *plain_tool); -static void gwy_plain_tool_selection_changed (GwySelection *selection, +static void data_changed (GwyPlainTool *plain_tool); +static void mask_changed (GwyPlainTool *plain_tool); +static void show_changed (GwyPlainTool *plain_tool); +static void selection_disconnect (GwyPlainTool *plain_tool); +static void selection_reconnect (GwyPlainTool *plain_tool); +static void selection_changed (GwySelection *selection, gint hint, GwyPlainTool *plain_tool); -static void gwy_plain_tool_selection_finished (GwySelection *selection, +static void selection_finished (GwySelection *selection, GwyPlainTool *plain_tool); -static void gwy_plain_tool_update_units (GwyPlainTool *plain_tool); +static void update_units (GwyPlainTool *plain_tool); static void gwy_plain_tool_response (GwyTool *tool, gint response_id); +static void remember_selection (GwyPlainTool *plain_tool); static void gwy_rect_selection_labels_spinned (GtkSpinButton *spin, GwyRectSelectionLabels *rlabels); static void gwy_rect_selection_labels_set_sensitive(GwyRectSelectionLabels *rlabels, @@ -109,12 +117,15 @@ static void gwy_plain_tool_finalize(GObject *object) { - GwyPlainTool *plain_tool; + GwyPlainTool *plain_tool = GWY_PLAIN_TOOL(object); - plain_tool = GWY_PLAIN_TOOL(object); - gwy_plain_tool_selection_disconnect(plain_tool); + selection_disconnect(plain_tool); GWY_OBJECT_UNREF(plain_tool->layer); - gwy_plain_tool_reconnect_container(plain_tool, NULL); + if (plain_tool->held_selection) { + GWY_OBJECT_UNREF(plain_tool->held_selection->selection); + g_free(plain_tool->held_selection); + } + reconnect_container(plain_tool, NULL); g_free(plain_tool->selection_bname); GWY_SI_VALUE_FORMAT_FREE(plain_tool->coord_format); @@ -155,7 +166,7 @@ * least odd effects. If a tool has problems with it, it can simply look at @pending_updates in its show() * method, update self and clear @pending_updates before calling parent's show(). */ if (plain_tool->pending_updates & GWY_PLAIN_TOOL_CHANGED_DATA) { - gwy_plain_tool_update_units(plain_tool); + update_units(plain_tool); if (klass->data_changed) klass->data_changed(plain_tool); plain_tool->pending_updates &= ~GWY_PLAIN_TOOL_CHANGED_DATA; @@ -217,21 +228,25 @@ if (data_view == plain_tool->data_view) return; - gwy_plain_tool_selection_disconnect(plain_tool); - gwy_plain_tool_reconnect_container(plain_tool, data_view); - gwy_plain_tool_update_units(plain_tool); + if (plain_tool->held_selection) + plain_tool->held_selection->is_switching_data = TRUE; + selection_disconnect(plain_tool); + reconnect_container(plain_tool, data_view); + update_units(plain_tool); if (data_view && plain_tool->layer_type) { gwy_plain_tool_ensure_layer(plain_tool, plain_tool->layer_type); - gwy_plain_tool_selection_reconnect(plain_tool); + selection_reconnect(plain_tool); } else { GWY_OBJECT_UNREF(plain_tool->layer); - gwy_plain_tool_selection_changed(NULL, -1, plain_tool); + selection_changed(NULL, -1, plain_tool); } + if (plain_tool->held_selection) + plain_tool->held_selection->is_switching_data = FALSE; } /** - * gwy_plain_tool_reconnect_container: + * reconnect_container: * @plain_tool: A plain tool. * @data_view: A new data view to switch the tool to. * @@ -241,8 +256,7 @@ * objects (or be %NULL). **/ static void -gwy_plain_tool_reconnect_container(GwyPlainTool *plain_tool, - GwyDataView *data_view) +reconnect_container(GwyPlainTool *plain_tool, GwyDataView *data_view) { GwyPixmapLayer *layer; const gchar *data_key; @@ -286,38 +300,38 @@ strcpy(sigdetail, ITEM_CHANGED); strcpy(sigdetail + sizeof(ITEM_CHANGED)-1, data_key); plain_tool->data_item_id = g_signal_connect(plain_tool->container, sigdetail, - G_CALLBACK(gwy_plain_tool_data_item_changed), plain_tool); + G_CALLBACK(data_item_changed), plain_tool); if (gwy_container_gis_object_by_name(plain_tool->container, key, &plain_tool->data_field)) { g_object_ref(plain_tool->data_field); plain_tool->data_id = g_signal_connect_swapped(plain_tool->data_field, "data-changed", - G_CALLBACK(gwy_plain_tool_data_changed), plain_tool); + G_CALLBACK(data_changed), plain_tool); } strcpy(sigdetail + len-4, "mask"); plain_tool->mask_item_id = g_signal_connect(plain_tool->container, sigdetail, - G_CALLBACK(gwy_plain_tool_mask_item_changed), plain_tool); + G_CALLBACK(mask_item_changed), plain_tool); if (gwy_container_gis_object_by_name(plain_tool->container, key, &plain_tool->mask_field)) { g_object_ref(plain_tool->mask_field); plain_tool->mask_id = g_signal_connect_swapped(plain_tool->mask_field, "data-changed", - G_CALLBACK(gwy_plain_tool_mask_changed), plain_tool); + G_CALLBACK(mask_changed), plain_tool); } strcpy(sigdetail + len-4, "show"); plain_tool->show_item_id = g_signal_connect(plain_tool->container, sigdetail, - G_CALLBACK(gwy_plain_tool_show_item_changed), plain_tool); + G_CALLBACK(show_item_changed), plain_tool); if (gwy_container_gis_object_by_name(plain_tool->container, key, &plain_tool->show_field)) { g_object_ref(plain_tool->show_field); plain_tool->show_id = g_signal_connect_swapped(plain_tool->show_field, "data-changed", - G_CALLBACK(gwy_plain_tool_show_changed), plain_tool); + G_CALLBACK(show_changed), plain_tool); } g_free(sigdetail); } static void -gwy_plain_tool_data_item_changed(GwyContainer *container, - GQuark quark, - GwyPlainTool *plain_tool) +data_item_changed(GwyContainer *container, + GQuark quark, + GwyPlainTool *plain_tool) { GWY_SIGNAL_HANDLER_DISCONNECT(plain_tool->data_field, plain_tool->data_id); GWY_OBJECT_UNREF(plain_tool->data_field); @@ -325,8 +339,8 @@ if (gwy_container_gis_object(container, quark, &plain_tool->data_field)) { g_object_ref(plain_tool->data_field); plain_tool->data_id = g_signal_connect_swapped(plain_tool->data_field, "data-changed", - G_CALLBACK(gwy_plain_tool_data_changed), plain_tool); - gwy_plain_tool_data_changed(plain_tool); + G_CALLBACK(data_changed), plain_tool); + data_changed(plain_tool); } else { /* No data field means we disconnect completely. */ @@ -335,9 +349,9 @@ } static void -gwy_plain_tool_mask_item_changed(GwyContainer *container, - GQuark quark, - GwyPlainTool *plain_tool) +mask_item_changed(GwyContainer *container, + GQuark quark, + GwyPlainTool *plain_tool) { GWY_SIGNAL_HANDLER_DISCONNECT(plain_tool->mask_field, plain_tool->mask_id); GWY_OBJECT_UNREF(plain_tool->mask_field); @@ -345,16 +359,16 @@ if (gwy_container_gis_object(container, quark, &plain_tool->mask_field)) { g_object_ref(plain_tool->mask_field); plain_tool->mask_id = g_signal_connect_swapped(plain_tool->mask_field, "data-changed", - G_CALLBACK(gwy_plain_tool_mask_changed), plain_tool); + G_CALLBACK(mask_changed), plain_tool); } - gwy_plain_tool_mask_changed(plain_tool); + mask_changed(plain_tool); } static void -gwy_plain_tool_show_item_changed(GwyContainer *container, - GQuark quark, - GwyPlainTool *plain_tool) +show_item_changed(GwyContainer *container, + GQuark quark, + GwyPlainTool *plain_tool) { GWY_SIGNAL_HANDLER_DISCONNECT(plain_tool->show_field, plain_tool->show_id); GWY_OBJECT_UNREF(plain_tool->show_field); @@ -362,16 +376,16 @@ if (gwy_container_gis_object(container, quark, &plain_tool->show_field)) { g_object_ref(plain_tool->show_field); plain_tool->show_id = g_signal_connect_swapped(plain_tool->show_field, "data-changed", - G_CALLBACK(gwy_plain_tool_show_changed), plain_tool); + G_CALLBACK(show_changed), plain_tool); } - gwy_plain_tool_show_changed(plain_tool); + show_changed(plain_tool); } static void -gwy_plain_tool_selection_item_changed(GwyContainer *container, - GQuark quark, - GwyPlainTool *plain_tool) +selection_item_changed(GwyContainer *container, + GQuark quark, + GwyPlainTool *plain_tool) { GWY_SIGNAL_HANDLER_DISCONNECT(plain_tool->selection, plain_tool->selection_cid); GWY_SIGNAL_HANDLER_DISCONNECT(plain_tool->selection, plain_tool->selection_fid); @@ -380,16 +394,16 @@ if (gwy_container_gis_object(container, quark, &plain_tool->selection)) { g_object_ref(plain_tool->selection); plain_tool->selection_cid = g_signal_connect(plain_tool->selection, "changed", - G_CALLBACK(gwy_plain_tool_selection_changed), plain_tool); + G_CALLBACK(selection_changed), plain_tool); plain_tool->selection_fid = g_signal_connect(plain_tool->selection, "finished", - G_CALLBACK(gwy_plain_tool_selection_finished), plain_tool); + G_CALLBACK(selection_finished), plain_tool); } - gwy_plain_tool_selection_changed(plain_tool->selection, -1, plain_tool); + selection_changed(plain_tool->selection, -1, plain_tool); } static void -gwy_plain_tool_data_changed(GwyPlainTool *plain_tool) +data_changed(GwyPlainTool *plain_tool) { GwyPlainToolClass *klass; @@ -397,14 +411,14 @@ if (plain_tool->lazy_updates && !gwy_tool_is_visible(GWY_TOOL(plain_tool))) plain_tool->pending_updates |= GWY_PLAIN_TOOL_CHANGED_DATA; else { - gwy_plain_tool_update_units(plain_tool); + update_units(plain_tool); if (klass->data_changed) klass->data_changed(plain_tool); } } static void -gwy_plain_tool_mask_changed(GwyPlainTool *plain_tool) +mask_changed(GwyPlainTool *plain_tool) { GwyPlainToolClass *klass; @@ -416,7 +430,7 @@ } static void -gwy_plain_tool_show_changed(GwyPlainTool *plain_tool) +show_changed(GwyPlainTool *plain_tool) { GwyPlainToolClass *klass; @@ -428,9 +442,9 @@ } static void -gwy_plain_tool_selection_changed(GwySelection *selection, - gint hint, - GwyPlainTool *plain_tool) +selection_changed(GwySelection *selection, + gint hint, + GwyPlainTool *plain_tool) { GwyPlainToolClass *klass; @@ -442,11 +456,12 @@ plain_tool->pending_updates |= GWY_PLAIN_TOOL_CHANGED_SELECTION; else if (klass->selection_changed) klass->selection_changed(plain_tool, hint); + remember_selection(plain_tool); } static void -gwy_plain_tool_selection_finished(G_GNUC_UNUSED GwySelection *selection, - GwyPlainTool *plain_tool) +selection_finished(G_GNUC_UNUSED GwySelection *selection, + GwyPlainTool *plain_tool) { GwyPlainToolClass *klass; @@ -457,8 +472,31 @@ klass->selection_finished(plain_tool); } +static void +remember_selection(GwyPlainTool *plain_tool) +{ + GwyToolHeldSelection *held_sel = plain_tool->held_selection; + GwySelection *selection = plain_tool->selection; + + if (!held_sel || held_sel->is_switching_data) + return; + + if (selection) { + if (held_sel->selection) + gwy_selection_assign(held_sel->selection, selection); + else + held_sel->selection = gwy_selection_duplicate(selection); + + g_return_if_fail(GWY_IS_DATA_FIELD(plain_tool->data_field)); + held_sel->xreal = gwy_data_field_get_xreal(plain_tool->data_field); + held_sel->yreal = gwy_data_field_get_yreal(plain_tool->data_field); + } + else if (held_sel->selection) + gwy_selection_clear(held_sel->selection); +} + /** - * gwy_plain_tool_update_units: + * update_units: * @plain_tool: A plain tool. * * Updates plain tool's unit formats. @@ -467,7 +505,7 @@ * If @unit_style is %GWY_SI_UNIT_FORMAT_NONE existing formats are destroyed and set to %NULL. **/ static void -gwy_plain_tool_update_units(GwyPlainTool *plain_tool) +update_units(GwyPlainTool *plain_tool) { if (plain_tool->data_field && plain_tool->unit_style) { plain_tool->coord_format = gwy_data_field_get_value_format_xy(plain_tool->data_field, @@ -574,7 +612,7 @@ g_return_if_fail(bname); } - gwy_plain_tool_selection_disconnect(plain_tool); + selection_disconnect(plain_tool); gwy_assign_string(&plain_tool->selection_bname, bname); plain_tool->layer_type = layer_type; @@ -582,11 +620,11 @@ return; gwy_plain_tool_ensure_layer(plain_tool, layer_type); - gwy_plain_tool_selection_reconnect(plain_tool); + selection_reconnect(plain_tool); } static void -gwy_plain_tool_selection_disconnect(GwyPlainTool *plain_tool) +selection_disconnect(GwyPlainTool *plain_tool) { gwy_debug(""); @@ -597,7 +635,7 @@ } static void -gwy_plain_tool_selection_reconnect(GwyPlainTool *plain_tool) +selection_reconnect(GwyPlainTool *plain_tool) { const gchar *key; gchar *sigdetail; @@ -611,18 +649,18 @@ sigdetail = g_strconcat(ITEM_CHANGED, key, NULL); plain_tool->selection_item_id = g_signal_connect(plain_tool->container, sigdetail, - G_CALLBACK(gwy_plain_tool_selection_item_changed), plain_tool); + G_CALLBACK(selection_item_changed), plain_tool); if (gwy_container_gis_object_by_name(plain_tool->container, key, &plain_tool->selection)) { g_object_ref(plain_tool->selection); plain_tool->selection_cid = g_signal_connect(plain_tool->selection, "changed", - G_CALLBACK(gwy_plain_tool_selection_changed), plain_tool); + G_CALLBACK(selection_changed), plain_tool); plain_tool->selection_fid = g_signal_connect(plain_tool->selection, "finished", - G_CALLBACK(gwy_plain_tool_selection_finished), plain_tool); + G_CALLBACK(selection_finished), plain_tool); } g_free(sigdetail); - gwy_plain_tool_selection_changed(plain_tool->selection, -1, plain_tool); + selection_changed(plain_tool->selection, -1, plain_tool); } /** @@ -786,9 +824,9 @@ } static gboolean -gwy_plain_tool_delete_selection_object(GtkTreeView *treeview, - GdkEventKey *event, - GwyPlainTool *plain_tool) +delete_selection_object(GtkTreeView *treeview, + GdkEventKey *event, + GwyPlainTool *plain_tool) { GtkTreeSelection *selection; GtkTreeModel *model; @@ -816,8 +854,7 @@ * @plain_tool: A plain tool. * @treeview: A tree view that displays selection objects in order, each row corresponding to one selection object. * - * Enables deletion of selection objects by presssing Delete in a tree view - * diplaying them. + * Enables deletion of selection objects by presssing Delete in a tree view diplaying them. * * Since: 2.7 **/ @@ -828,7 +865,86 @@ g_return_if_fail(GTK_IS_TREE_VIEW(treeview)); g_return_if_fail(GWY_IS_PLAIN_TOOL(plain_tool)); - g_signal_connect(treeview, "key-press-event", G_CALLBACK(gwy_plain_tool_delete_selection_object), plain_tool); + g_signal_connect(treeview, "key-press-event", G_CALLBACK(delete_selection_object), plain_tool); +} + +/** + * gwy_plain_tool_hold_selection: + * @plain_tool: A plain tool. + * @hold_flags: Flags controlling when the selection is held (transferred to another image). + * + * Possibly transfers the selection to a new image upon plain tool data switch. + * + * This function should be called from data_switched() class method in a tool after setting up the layer and + * selection. If the selection should be transferred to the new image according to @hold_flags the previous (held) + * selection will replace whatever selection might be there currently. Otherwise the new image's selection is + * preserved (and in fact held itself). + * + * Selection holding must be enabled in tool instance init function using gwy_plain_tool_enable_selection_holding(). + * + * Since: 2.63 + **/ +void +gwy_plain_tool_hold_selection(GwyPlainTool *plain_tool, + GwyHoldSelectionFlags hold_flags) +{ + GwyDataField *field; + GwyToolHeldSelection *held_sel; + GwySelection *selection; + gboolean is_compatible, sel_is_empty, held_is_empty; + gboolean hold = (hold_flags & GWY_HOLD_SELECTION_HOLD); + gboolean overwrite = (hold_flags & GWY_HOLD_SELECTION_OVERWRITE); + gboolean clear = (hold_flags & GWY_HOLD_SELECTION_CLEAR); + + g_return_if_fail(GWY_IS_PLAIN_TOOL(plain_tool)); + if (!(field = plain_tool->data_field)) + return; + + g_return_if_fail(plain_tool->held_selection); + held_sel = plain_tool->held_selection; + selection = plain_tool->selection; + is_compatible = (gwy_data_field_get_xreal(field) == held_sel->xreal + && gwy_data_field_get_yreal(field) == held_sel->yreal); + + if (selection) { + if (!held_sel->selection) + held_sel->selection = gwy_selection_duplicate(plain_tool->selection); + else { + sel_is_empty = !gwy_selection_get_data(selection, NULL); + held_is_empty = !gwy_selection_get_data(held_sel->selection, NULL); + if (hold && is_compatible && (sel_is_empty || (overwrite && (clear || !held_is_empty)))) + gwy_selection_assign(selection, held_sel->selection); + else + remember_selection(plain_tool); + } + } + else if (held_sel->selection) { + g_warning("The tool is holding a selection but the image cannot have any?"); + } +} + +/** + * gwy_plain_tool_enable_selection_holding: + * @plain_tool: A plain tool. + * + * Enables selection holding for a plain tool. + * + * Selection holding means that, if certain conditions are satisfied, upon data switch the tool transfers the current + * selection to the new image, replacing whatever selection might be there. + * + * This function should be called from the instance init function. + * + * Holding is currently unsupported for tools which use multiple selection types. + * + * Since: 2.63 + **/ +void +gwy_plain_tool_enable_selection_holding(GwyPlainTool *plain_tool) +{ + g_return_if_fail(GWY_IS_PLAIN_TOOL(plain_tool)); + + /* This should be a sufficient initialisation. */ + plain_tool->held_selection = g_new0(GwyToolHeldSelection, 1); } static GtkLabel* @@ -1296,4 +1412,20 @@ * The type of pending changes that accumulated during tool inactivity. **/ +/** + * GwyHoldSelectionFlags: + * @GWY_HOLD_SELECTION_HOLD: Selections are held (transferred to the new image). + * @GWY_HOLD_SELECTION_OVERWRITE: Existing selections on the new image is replaced. + * @GWY_HOLD_SELECTION_CLEAR: If the current image has no selection the selection on the new image is cleared. + * + * Flags controlling the selection holding behaviour of tools. + * + * Although any combination of flags is valid, this is mainly so that user's choice is not reset. For any holding to + * be done at all the %GWY_HOLD_SELECTION_HOLD flag must be set. If it is unset then %GWY_HOLD_SELECTION_OVERWRITE + * and %GWY_HOLD_SELECTION_CLEAR do not matter. Similarly, for %GWY_HOLD_SELECTION_CLEAR has any effect only if + * overwriting is enabled by setting %GWY_HOLD_SELECTION_OVERWRITE. + * + * Since: 2.63 + **/ + /* vim: set cin columns=120 tw=118 et ts=4 sw=4 cino=>1s,e0,n0,f0,{0,}0,^0,\:1s,=0,g1s,h0,t0,+1s,c3,(0,u0 : */ diff -Nru gwyddion-2.62/app/gwyplaintool.h gwyddion-2.63/app/gwyplaintool.h --- gwyddion-2.62/app/gwyplaintool.h 2022-07-15 15:09:53.000000000 +0000 +++ gwyddion-2.63/app/gwyplaintool.h 2022-12-14 16:24:42.000000000 +0000 @@ -1,5 +1,5 @@ /* - * $Id: gwyplaintool.h 24858 2022-07-15 15:09:53Z yeti-dn $ + * $Id: gwyplaintool.h 25161 2022-12-14 16:24:42Z yeti-dn $ * Copyright (C) 2006-2022 David Necas (Yeti), Petr Klapetek. * E-mail: yeti@gwyddion.net, klapetek@gwyddion.net. * @@ -26,6 +26,9 @@ G_BEGIN_DECLS +typedef struct _GwyRectSelectionLabels GwyRectSelectionLabels; +typedef struct _GwyToolHeldSelection GwyToolHeldSelection; + #define GWY_TYPE_PLAIN_TOOL (gwy_plain_tool_get_type()) #define GWY_PLAIN_TOOL(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GWY_TYPE_PLAIN_TOOL, GwyPlainTool)) #define GWY_PLAIN_TOOL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GWY_TYPE_PLAIN_TOOL, GwyPlainToolClass)) @@ -44,6 +47,12 @@ GWY_PLAIN_TOOL_FINISHED_SELECTION = 1 << 4, } GwyPlainToolChanged; +typedef enum { + GWY_HOLD_SELECTION_HOLD = (1 << 0), + GWY_HOLD_SELECTION_OVERWRITE = (1 << 1), + GWY_HOLD_SELECTION_CLEAR = (1 << 2), +} GwyHoldSelectionFlags; + struct _GwyPlainTool { GwyTool parent_instance; @@ -85,7 +94,7 @@ GtkWidget *clear; GPtrArray *param_tables; - gpointer reserved2; + GwyToolHeldSelection *held_selection; gpointer reserved3; gint int1; }; @@ -105,39 +114,40 @@ void (*reserved3)(void); }; -typedef struct _GwyRectSelectionLabels GwyRectSelectionLabels; - -GType gwy_plain_tool_get_type (void) G_GNUC_CONST; -GType gwy_plain_tool_check_layer_type (GwyPlainTool *plain_tool, - const gchar *name); -void gwy_plain_tool_connect_selection (GwyPlainTool *plain_tool, - GType layer_type, - const gchar *bname); -void gwy_plain_tool_ensure_layer (GwyPlainTool *plain_tool, - GType layer_type); -const gchar* gwy_plain_tool_set_selection_key (GwyPlainTool *plain_tool, - const gchar *bname); -GtkWidget* gwy_plain_tool_add_clear_button (GwyPlainTool *plain_tool); -gdouble gwy_plain_tool_get_z_average (GwyDataField *data_field, - const gdouble *point, - gint radius); -void gwy_plain_tool_enable_object_deletion(GwyPlainTool *plain_tool, - GtkTreeView *treeview); -GwyRectSelectionLabels* gwy_rect_selection_labels_new (gboolean none_is_full, - GCallback callback, - gpointer cbdata); -GtkWidget* gwy_rect_selection_labels_get_table (GwyRectSelectionLabels *rlabels); -void gwy_rect_selection_labels_select (GwyRectSelectionLabels *rlabels, - GwySelection *selection, - GwyDataField *dfield); -gboolean gwy_rect_selection_labels_fill (GwyRectSelectionLabels *rlabels, - GwySelection *selection, - GwyDataField *dfield, - gdouble *selreal, - gint *selpix); -void gwy_plain_tool_log_add (GwyPlainTool *plain_tool); -void gwy_plain_tool_add_param_table (GwyPlainTool *plain_tool, - GwyParamTable *partable); +GType gwy_plain_tool_get_type (void) G_GNUC_CONST; +GType gwy_plain_tool_check_layer_type (GwyPlainTool *plain_tool, + const gchar *name); +void gwy_plain_tool_connect_selection (GwyPlainTool *plain_tool, + GType layer_type, + const gchar *bname); +void gwy_plain_tool_ensure_layer (GwyPlainTool *plain_tool, + GType layer_type); +const gchar* gwy_plain_tool_set_selection_key (GwyPlainTool *plain_tool, + const gchar *bname); +GtkWidget* gwy_plain_tool_add_clear_button (GwyPlainTool *plain_tool); +gdouble gwy_plain_tool_get_z_average (GwyDataField *data_field, + const gdouble *point, + gint radius); +void gwy_plain_tool_enable_object_deletion (GwyPlainTool *plain_tool, + GtkTreeView *treeview); +void gwy_plain_tool_hold_selection (GwyPlainTool *plain_tool, + GwyHoldSelectionFlags hold_flags); +void gwy_plain_tool_enable_selection_holding(GwyPlainTool *plain_tool); +GwyRectSelectionLabels* gwy_rect_selection_labels_new (gboolean none_is_full, + GCallback callback, + gpointer cbdata); +GtkWidget* gwy_rect_selection_labels_get_table (GwyRectSelectionLabels *rlabels); +void gwy_rect_selection_labels_select (GwyRectSelectionLabels *rlabels, + GwySelection *selection, + GwyDataField *dfield); +gboolean gwy_rect_selection_labels_fill (GwyRectSelectionLabels *rlabels, + GwySelection *selection, + GwyDataField *dfield, + gdouble *selreal, + gint *selpix); +void gwy_plain_tool_log_add (GwyPlainTool *plain_tool); +void gwy_plain_tool_add_param_table (GwyPlainTool *plain_tool, + GwyParamTable *partable); G_END_DECLS diff -Nru gwyddion-2.62/app/help.c gwyddion-2.63/app/help.c --- gwyddion-2.62/app/help.c 2021-11-07 21:44:51.000000000 +0000 +++ gwyddion-2.63/app/help.c 2023-05-25 12:21:24.000000000 +0000 @@ -1,5 +1,5 @@ /* - * $Id: help.c 24485 2021-11-07 21:02:59Z yeti-dn $ + * $Id: help.c 25361 2023-05-25 12:21:24Z yeti-dn $ * Copyright (C) 2014-2021 David Necas (Yeti). * E-mail: yeti@gwyddion.net. * @@ -535,8 +535,10 @@ gchar *uri, GwyHelpFlags flags) { - if (!any_backend_available()) + if (!any_backend_available()) { + g_free(uri); return; + } if (!check_local_file_uri(uri)) { g_free(uri); diff -Nru gwyddion-2.62/app/logging.c gwyddion-2.63/app/logging.c --- gwyddion-2.62/app/logging.c 2019-08-19 11:00:59.000000000 +0000 +++ gwyddion-2.63/app/logging.c 2023-06-07 14:14:42.000000000 +0000 @@ -1,5 +1,5 @@ /* - * $Id: logging.c 22396 2019-08-18 06:38:30Z yeti-dn $ + * $Id: logging.c 25416 2023-06-07 14:14:42Z yeti-dn $ * Copyright (C) 2016-2018 David Necas (Yeti). * E-mail: yeti@gwyddion.net. * @@ -251,10 +251,10 @@ } static void -logger(const gchar *log_domain_str, - GLogLevelFlags log_level, - const gchar *message, - gpointer user_data) +logger_impl(const gchar *log_domain_str, + GLogLevelFlags log_level, + const gchar *message, + gpointer user_data) { LoggingSetup *setup = (LoggingSetup*)user_data; GLogLevelFlags just_log_level = (log_level & G_LOG_LEVEL_MASK); @@ -286,6 +286,18 @@ } static void +logger(const gchar *log_domain_str, + GLogLevelFlags log_level, + const gchar *message, + gpointer user_data) +{ +#ifdef _OPENMP +#pragma omp critical +#endif + logger_impl(log_domain_str, log_level, message, user_data); +} + +static void emit_log_message(LoggingSetup *setup, GQuark log_domain, GLogLevelFlags log_level) { diff -Nru gwyddion-2.62/app/Makefile.am gwyddion-2.63/app/Makefile.am --- gwyddion-2.62/app/Makefile.am 2022-11-02 13:59:27.000000000 +0000 +++ gwyddion-2.63/app/Makefile.am 2023-06-12 11:56:31.000000000 +0000 @@ -1,4 +1,4 @@ -# $Id: Makefile.am 25133 2022-11-02 13:59:26Z yeti-dn $ +# $Id: Makefile.am 25423 2023-06-12 11:56:30Z yeti-dn $ libgwyddion = $(top_builddir)/libgwyddion/libgwyddion2.la libgwymodule = $(top_builddir)/libgwymodule/libgwymodule2.la @@ -106,11 +106,11 @@ # Any iface change C++: 0: A # Adding ifaces C: R: A++ # Changing ifaces C: R: 0 -libversion = -version-info 28:0:28 +libversion = -version-info 29:0:29 #libversion = -release @LIBRARY_RELEASE@ -AM_CFLAGS = @COMMON_CFLAGS@ @GIO_CFLAGS@ +AM_CFLAGS = @COMMON_CFLAGS@ @GIO_CFLAGS@ @OPENMP_CFLAGS@ AM_LDFLAGS = @GTKGLEXT_LIBS@ @GIO_LIBS@ @BASIC_LIBS@ $(win32_libs) -export-dynamic $(no_undefined) $(export_symbols) $(libversion) $(libgwyapp_libadd) -AM_CPPFLAGS = -DG_LOG_DOMAIN=\"GwyApp\" -I$(top_srcdir) +AM_CPPFLAGS = -I$(top_srcdir) -DG_LOG_DOMAIN=\"GwyApp\" @OPENMP_CFLAGS@ libgwyapp2_la_SOURCES = \ app.c \ diff -Nru gwyddion-2.62/app/Makefile.in gwyddion-2.63/app/Makefile.in --- gwyddion-2.62/app/Makefile.in 2022-11-03 09:56:37.000000000 +0000 +++ gwyddion-2.63/app/Makefile.in 2023-06-13 13:22:35.000000000 +0000 @@ -14,7 +14,7 @@ @SET_MAKE@ -# $Id: Makefile.am 25133 2022-11-02 13:59:26Z yeti-dn $ +# $Id: Makefile.am 25423 2023-06-12 11:56:30Z yeti-dn $ # Generic glib-mkenum rules. # $Id: mkenum.mk 20681 2017-12-18 18:37:24Z yeti-dn $ @@ -449,6 +449,8 @@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ZLIB = @ZLIB@ +ZZIP_CFLAGS = @ZZIP_CFLAGS@ +ZZIP_LIBS = @ZZIP_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ @@ -607,11 +609,11 @@ # Any iface change C++: 0: A # Adding ifaces C: R: A++ # Changing ifaces C: R: 0 -libversion = -version-info 28:0:28 +libversion = -version-info 29:0:29 #libversion = -release @LIBRARY_RELEASE@ -AM_CFLAGS = @COMMON_CFLAGS@ @GIO_CFLAGS@ +AM_CFLAGS = @COMMON_CFLAGS@ @GIO_CFLAGS@ @OPENMP_CFLAGS@ AM_LDFLAGS = @GTKGLEXT_LIBS@ @GIO_LIBS@ @BASIC_LIBS@ $(win32_libs) -export-dynamic $(no_undefined) $(export_symbols) $(libversion) $(libgwyapp_libadd) -AM_CPPFLAGS = -DG_LOG_DOMAIN=\"GwyApp\" -I$(top_srcdir) +AM_CPPFLAGS = -I$(top_srcdir) -DG_LOG_DOMAIN=\"GwyApp\" @OPENMP_CFLAGS@ libgwyapp2_la_SOURCES = \ app.c \ data-browser.c \ diff -Nru gwyddion-2.62/app/param-def.c gwyddion-2.63/app/param-def.c --- gwyddion-2.62/app/param-def.c 2022-10-11 13:47:20.000000000 +0000 +++ gwyddion-2.63/app/param-def.c 2023-01-30 14:13:24.000000000 +0000 @@ -1,5 +1,5 @@ /* - * $Id: param-def.c 25075 2022-10-11 13:47:20Z yeti-dn $ + * $Id: param-def.c 25214 2023-01-30 14:13:23Z yeti-dn $ * Copyright (C) 2021-2022 David Necas (Yeti). * E-mail: yeti@gwyddion.net. * @@ -19,6 +19,7 @@ #include "libgwyddion/gwymacros.h" #include "libprocess/gwyprocesstypes.h" #include "libprocess/gwyprocessenums.h" +#include "gwyapptypes.h" #include "param-def.h" #include "param-internal.h" @@ -1188,6 +1189,37 @@ } /** + * gwy_param_def_add_hold_selection: + * @pardef: A set of parameter definitions. + * @id: Parameter identifier. + * @name: Parameter name for settings. It can be %NULL for derived parameters not stored in settings. + * @desc: Parameter description which will be used for a label in GUI. Normally pass %NULL for the default label. + * + * Defines a new flags parameter with values that are selection holding flags. + * + * The values are flags from #GwyHoldSelectionFlags. The default is zero. + * + * Since: 2.63 + **/ +void +gwy_param_def_add_hold_selection(GwyParamDef *pardef, + gint id, + const gchar *name, + const gchar *desc) +{ + static const GwyEnum hold_flags[] = { + { N_("Hold selection"), GWY_HOLD_SELECTION_HOLD, }, + { N_("Replace existing selection"), GWY_HOLD_SELECTION_OVERWRITE, }, + { N_("Replace even with empty (clear selection)"), GWY_HOLD_SELECTION_CLEAR, }, + }; + + if (!desc) + desc = _("_Hold selection"); + gwy_param_def_append_flags(pardef, id, name, desc, GWY_TYPE_HOLD_SELECTION_FLAGS, + hold_flags, G_N_ELEMENTS(hold_flags), 0); +} + +/** * gwy_param_def_add_seed: * @pardef: A set of parameter definitions. * @id: Parameter identifier. @@ -1324,7 +1356,7 @@ GwyParamDefItem item; GwyParamDefResource *res = &item.def.res; - item.type = GWY_PARAM_RESOURCE; + item.type = GWY_PARAM_RESOURCE_NAME; g_assert(GWY_IS_INVENTORY(inventory)); res->inventory = inventory; res->default_value = g_intern_string(default_value); @@ -1473,8 +1505,11 @@ /* When presets are implemented using GwyParams then multiple GwyParams instances created for one GwyParamDef * are common. Keep enabled this check during development but we may want a mechanism to exclude presets. */ if (!g_slist_find(priv->users, params)) { - /* XXX: Hardcoded warning suppression for known modules with GwyParamResource presets. */ - if (priv->users && !gwy_stramong(priv->function_name, "rawfile", NULL)) { + /* XXX: Hardcoded warning suppression for known modules with GwyParamResource presets and internal + * parameter set duplication. */ + if (priv->users && !gwy_stramong(priv->function_name, + "rawfile", "terracefit", "graph_terraces", "logistic", + NULL)) { g_warning("Parameter definitions for %s are used multiple times. " "Check module function %s; it is probably leaking GwyParams objects!", priv->function_name, priv->function_name); @@ -1681,8 +1716,8 @@ const GwyParamDefResource *res; gpointer item; - if (!def || def->type != GWY_PARAM_RESOURCE) { - g_assert(def && def->type == GWY_PARAM_RESOURCE); + if (!def || def->type != GWY_PARAM_RESOURCE_NAME) { + g_assert(def && def->type == GWY_PARAM_RESOURCE_NAME); return NULL; } res = &def->def.res; diff -Nru gwyddion-2.62/app/param-def.h gwyddion-2.63/app/param-def.h --- gwyddion-2.62/app/param-def.h 2022-06-03 11:43:26.000000000 +0000 +++ gwyddion-2.63/app/param-def.h 2022-12-15 10:14:22.000000000 +0000 @@ -1,5 +1,5 @@ /* - * $Id: param-def.h 24840 2022-06-03 11:43:26Z yeti-dn $ + * $Id: param-def.h 25164 2022-12-15 10:14:22Z yeti-dn $ * Copyright (C) 2021-2022 David Necas (Yeti). * E-mail: yeti@gwyddion.net. * @@ -173,6 +173,10 @@ const gchar *desc, GwyResultsExportStyle style, GwyResultsReportType default_value); +void gwy_param_def_add_hold_selection (GwyParamDef *pardef, + gint id, + const gchar *name, + const gchar *desc); void gwy_param_def_add_seed (GwyParamDef *pardef, gint id, const gchar *name, diff -Nru gwyddion-2.62/app/param-internal.h gwyddion-2.63/app/param-internal.h --- gwyddion-2.62/app/param-internal.h 2022-08-25 18:51:02.000000000 +0000 +++ gwyddion-2.63/app/param-internal.h 2023-04-24 18:36:49.000000000 +0000 @@ -1,5 +1,5 @@ /* - * $Id: param-internal.h 24941 2022-08-25 18:51:02Z yeti-dn $ + * $Id: param-internal.h 25305 2023-04-21 13:15:07Z yeti-dn $ * Copyright (C) 2021-2022 David Necas (Yeti). * E-mail: yeti@gwyddion.net. * @@ -48,7 +48,7 @@ GWY_PARAM_LAWN_CURVE, GWY_PARAM_LAWN_SEGMENT, GWY_PARAM_UNIT, - GWY_PARAM_RESOURCE, + GWY_PARAM_RESOURCE_NAME, } GwyParamType; typedef struct { @@ -265,4 +265,4 @@ #endif -/* vim: set cin et ts=4 sw=4 cino=>1s,e0,n0,f0,{0,}0,^0,\:1s,=0,g1s,h0,t0,+1s,c3,(0,u0 : */ +/* vim: set cin columns=120 tw=118 et ts=4 sw=4 cino=>1s,e0,n0,f0,{0,}0,^0,\:1s,=0,g1s,h0,t0,+1s,c3,(0,u0 : */ diff -Nru gwyddion-2.62/app/params.c gwyddion-2.63/app/params.c --- gwyddion-2.62/app/params.c 2022-09-22 12:26:41.000000000 +0000 +++ gwyddion-2.63/app/params.c 2022-12-15 10:05:36.000000000 +0000 @@ -1,5 +1,5 @@ /* - * $Id: params.c 25038 2022-09-22 12:26:38Z yeti-dn $ + * $Id: params.c 25163 2022-12-15 10:05:36Z yeti-dn $ * Copyright (C) 2021-2022 David Necas (Yeti). * E-mail: yeti@gwyddion.net. * @@ -161,7 +161,7 @@ for (i = 0; i < n; i++) { GwyParamType type = _gwy_param_def_item(priv->def, i)->type; - if (type == GWY_PARAM_STRING || type == GWY_PARAM_RESOURCE) + if (type == GWY_PARAM_STRING || type == GWY_PARAM_RESOURCE_NAME) g_free(values[i].s); else if (param_type_is_curve_no(type)) g_free(values[i].cu.s); @@ -230,7 +230,7 @@ for (i = 0; i < n; i++) { GwyParamType type = _gwy_param_def_item(priv->def, i)->type; - if (type == GWY_PARAM_STRING || type == GWY_PARAM_RESOURCE) + if (type == GWY_PARAM_STRING || type == GWY_PARAM_RESOURCE_NAME) values[i].s = g_strdup(values[i].s); else if (param_type_is_curve_no(type)) values[i].cu.s = g_strdup(values[i].cu.s); @@ -550,7 +550,7 @@ if (gwy_container_gis_string(settings, quark, &v)) set_unit_value(value, def, v); } - else if (type == GWY_PARAM_RESOURCE) { + else if (type == GWY_PARAM_RESOURCE_NAME) { const guchar *v; if (gwy_container_gis_string(settings, quark, &v)) set_resource_value(value, def, v); @@ -670,7 +670,7 @@ gwy_container_set_const_string(settings, quark, value->cu.s ? value->cu.s : ""); else if (type == GWY_PARAM_UNIT) gwy_container_set_const_string(settings, quark, value->si.s ? value->si.s : ""); - else if (type == GWY_PARAM_RESOURCE) { + else if (type == GWY_PARAM_RESOURCE_NAME) { if (value->s) gwy_container_set_const_string(settings, quark, value->s); else @@ -1139,7 +1139,7 @@ if (!param_find_common(params, id, &i, &def, GWY_PARAM_NONE)) return ""; - if (def->type == GWY_PARAM_STRING || def->type == GWY_PARAM_RESOURCE) + if (def->type == GWY_PARAM_STRING || def->type == GWY_PARAM_RESOURCE_NAME) return params->priv->values[i].s; if (def->type == GWY_PARAM_UNIT) return params->priv->values[i].si.s; @@ -1700,7 +1700,7 @@ const GwyParamDefItem *def; gint i; - if (!param_find_common(params, id, &i, &def, GWY_PARAM_RESOURCE)) + if (!param_find_common(params, id, &i, &def, GWY_PARAM_RESOURCE_NAME)) return FALSE; return set_resource_value(params->priv->values + i, def, value); } @@ -1727,7 +1727,7 @@ gpointer item; gint i; - if (!param_find_common(params, id, &i, &def, GWY_PARAM_RESOURCE)) + if (!param_find_common(params, id, &i, &def, GWY_PARAM_RESOURCE_NAME)) return NULL; /* Fall back first to the parameter default, then to rhe resource default. */ if (!(item = gwy_inventory_get_item(def->def.res.inventory, params->priv->values[i].s))) @@ -2001,7 +2001,7 @@ return set_string_value(value, def, def->def.s.default_value); if (type == GWY_PARAM_UNIT) return set_unit_value(value, def, def->def.si.default_value); - if (type == GWY_PARAM_RESOURCE) + if (type == GWY_PARAM_RESOURCE_NAME) return set_resource_value(value, def, def->def.res.default_value); if (type == GWY_PARAM_COLOR) return set_color_value(value, def, def->def.c.default_value); @@ -2037,7 +2037,7 @@ return set_string_value(value, def, src->s); if (type == GWY_PARAM_UNIT) return set_unit_value(value, def, src->si.s); - if (type == GWY_PARAM_RESOURCE) + if (type == GWY_PARAM_RESOURCE_NAME) return set_resource_value(value, def, src->s); if (type == GWY_PARAM_COLOR) return set_color_value(value, def, src->c); @@ -2196,7 +2196,7 @@ } else if (type == GWY_PARAM_DOUBLE) append_double(str, value->d); - else if (type == GWY_PARAM_STRING || type == GWY_PARAM_RESOURCE) + else if (type == GWY_PARAM_STRING || type == GWY_PARAM_RESOURCE_NAME) append_escaped_string(str, value->s); else if (type == GWY_PARAM_UNIT) append_escaped_string(str, value->si.s); @@ -2323,11 +2323,11 @@ } else if (type == GWY_PARAM_DOUBLE) set_double_value(parvalue, def, g_ascii_strtod(val, NULL)); - else if (type == GWY_PARAM_STRING || type == GWY_PARAM_RESOURCE || type == GWY_PARAM_UNIT) { + else if (type == GWY_PARAM_STRING || type == GWY_PARAM_RESOURCE_NAME || type == GWY_PARAM_UNIT) { if (unescape_string(val, &ustr)) { if (type == GWY_PARAM_STRING) set_string_value(parvalue, def, ustr); - else if (type == GWY_PARAM_RESOURCE) + else if (type == GWY_PARAM_RESOURCE_NAME) set_resource_value(parvalue, def, ustr); else if (type == GWY_PARAM_UNIT) set_unit_value(parvalue, def, ustr); diff -Nru gwyddion-2.62/app/param-table.c gwyddion-2.63/app/param-table.c --- gwyddion-2.62/app/param-table.c 2022-10-14 15:46:44.000000000 +0000 +++ gwyddion-2.63/app/param-table.c 2023-06-07 15:59:52.000000000 +0000 @@ -1,6 +1,6 @@ /* - * $Id: param-table.c 25093 2022-10-14 15:46:44Z yeti-dn $ - * Copyright (C) 2021-2022 David Necas (Yeti). + * $Id: param-table.c 25417 2023-06-07 15:59:52Z yeti-dn $ + * Copyright (C) 2021-2023 David Necas (Yeti). * E-mail: yeti@gwyddion.net. * * This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public @@ -24,6 +24,7 @@ #include "libprocess/gwyprocessenums.h" #include "libprocess/stats.h" #include "libprocess/linestats.h" +#include "gwyapptypes.h" #include "data-browser.h" #include "menu.h" #include "gwymoduleutils.h" @@ -33,7 +34,6 @@ /* TODO: Missing common controls: * - entries with history - * - graph range entries * * We also want presets to work more or less automatically (in GwyParams), which is partially implemented by * GwyParamResource, but so far only one module has been converted. @@ -84,7 +84,10 @@ GWY_PARAM_CONTROL_MASK_COLOR, GWY_PARAM_CONTROL_RESULTS, GWY_PARAM_CONTROL_REPORT, + GWY_PARAM_CONTROL_HOLD_SELECTION, GWY_PARAM_CONTROL_RANDOM_SEED, + GWY_PARAM_CONTROL_RANGE_FROM, + GWY_PARAM_CONTROL_RANGE_TO, GWY_PARAM_CONTROL_BUTTON, GWY_PARAM_CONTROL_MESSAGE, GWY_PARAM_CONTROL_INFO, @@ -190,6 +193,11 @@ } GwyParamControlReport; typedef struct { + GtkWidget *overwrite; + GtkWidget *clear; +} GwyParamControlHoldSelection; + +typedef struct { GtkAdjustment *adj; GtkWidget *new_button; } GwyParamControlRandomSeed; @@ -263,6 +271,11 @@ } GwyParamControlEntry; typedef struct { + GString *str; /* Shorthand for table->priv->str. */ + GwySIValueFormat *vf; +} GwyParamControlRangeFrom; + +typedef struct { gint id; gint row : 8; /* The first row where it is attached. */ gint nrows : 8; /* How many table rows it takes. In split radio buttons, it is for this particular piece. */ @@ -285,6 +298,7 @@ GwyPlainTool *parent_tool; GwyParamControl *controls; GwyParamControlAssocTable enabler; + GwyParamControlAssocTable range; GwyToggleListInfo *toggles_info; GString *str; GwySIValueFormat *vf; @@ -299,342 +313,352 @@ gulong destroy_sid; }; -static void gwy_param_table_finalize (GObject *gobject); -static GwyParamControl* find_first_control (GwyParamTable *partable, - gint id); -static gboolean find_def_common (GwyParamTable *partable, - gint id, - GwyParams **pparams, - const GwyParamDefItem **def); -static GwyParamControl* append_control (GwyParamTable *partable, - GwyParamControlType type, - gint id, - gint nrows); -static void add_aux_assoc (GwyParamControlAssocTable *assoc_table, - gint aux_id, - gint other_id); -static void add_toggles_info (GwyParamTable *partable, - gint id, - gboolean must_not_exist); -static GtkWidget* ensure_widget (GwyParamTable *partable); -static void update_control_sensitivity (GwyParamTable *partable, - gint i); -static void header_make_control (GwyParamTable *partable, - guint i); -static void checkbox_make_control (GwyParamTable *partable, - guint i, - GwyParams *params, - const GwyParamDefItem *def); -static void enabler_make_control (GwyParamTable *partable, - guint i, - guint iother, - GwyParams *params); -static void combo_make_control (GwyParamTable *partable, - guint i, - GwyParams *params, - const GwyParamDefItem *def); -static void radio_make_control (GwyParamTable *partable, - guint i, - GwyParams *params, - const GwyParamDefItem *def); -static void radio_header_make_control (GwyParamTable *partable, - guint i, - GwyParams *params, - const GwyParamDefItem *def); -static void radio_item_make_control (GwyParamTable *partable, - guint i, - GwyParams *params, - const GwyParamDefItem *def); -static void radio_row_make_control (GwyParamTable *partable, - guint i, - GwyParams *params, - const GwyParamDefItem *def); -static void radio_buttons_make_control (GwyParamTable *partable, - guint i, - GwyParams *params, - const GwyParamDefItem *def); -static void construct_radio_widgets (GwyParamTable *partable, - guint i, - GwyParams *params, - const GwyParamDefItem *def); -static void checkboxes_make_control (GwyParamTable *partable, - guint i, - GwyParams *params, - const GwyParamDefItem *def); -static void construct_checkbox_widgets (GwyParamTable *partable, - guint i, - GwyParams *params, - const GwyParamDefItem *def); -static void data_id_make_control (GwyParamTable *partable, - guint i, - GwyParams *params, - const GwyParamDefItem *def); -static void curve_no_make_control (GwyParamTable *partable, - guint i, - GwyParams *params, - const GwyParamDefItem *def); -static void slider_make_control (GwyParamTable *partable, - guint i, - GwyParams *params, - const GwyParamDefItem *def); -static void alt_make_control (GwyParamTable *partable, - guint i, - GwyParams *params, - const GwyParamDefItem *def); -static void entry_make_control (GwyParamTable *partable, - guint i, - GwyParams *params, - const GwyParamDefItem *def); -static void mask_color_make_control (GwyParamTable *partable, - guint i, - GwyParams *params, - const GwyParamDefItem *def); -static void report_make_control (GwyParamTable *partable, - guint i, - GwyParams *params, - const GwyParamDefItem *def); -static void unit_chooser_make_control (GwyParamTable *partable, - guint i, - GwyParams *params, - const GwyParamDefItem *def); -static void random_seed_make_control (GwyParamTable *partable, - guint i, - GwyParams *params, - const GwyParamDefItem *def); -static void button_make_control (GwyParamTable *partable, - guint i); -static void results_make_control (GwyParamTable *partable, - guint i); -static void message_make_control (GwyParamTable *partable, - guint i); -static void info_make_control (GwyParamTable *partable, - guint i); -static void foreign_make_control (GwyParamTable *partable, - guint i); -static void checkbox_toggled (GtkToggleButton *toggle, - GwyParamTable *partable); -static void enabler_toggled (GtkToggleButton *toggle, - GwyParamTable *partable); -static void togglebutton_set_value (GwyParamControl *control, - GwyParamTable *partable, - gboolean value, - gboolean use_default_instead); -static void combo_changed (GtkComboBox *combo, - GwyParamTable *partable); -static void unit_chosen (GtkComboBox *combo, - GwyParamTable *partable); -static void unit_chooser_change (GtkButton *button, - GwyParamTable *partable); -static gchar* unit_change_dialog_run (GtkWindow *parent, - const gchar *unitstr); -static void enum_combo_set_value (GwyParamControl *control, - GwyParamTable *partable, - gint value, - gboolean use_default_instead); -static void unit_chooser_set_value (GwyParamControl *control, - GwyParamTable *partable, - const gchar *value, - gboolean use_default_instead); -static void resource_combo_set_value (GwyParamControl *control, - GwyParamTable *partable, - const gchar *value, - gboolean use_default_instead); -static void radio_changed (GtkRadioButton *radio, - GwyParamTable *partable); -static void radio_set_value (GwyParamControl *control, - GwyParamTable *partable, - gint value, - gboolean use_default_instead); -static void checkbox_changed (GtkToggleButton *toggle, - GwyParamTable *partable); -static void checkboxes_set_value (GwyParamControl *control, - GwyParamTable *partable, - guint value, - gboolean use_default_instead); -static void graph_id_changed (GwyDataChooser *chooser, - GwyParamTable *partable); -static void image_id_changed (GwyDataChooser *chooser, - GwyParamTable *partable); -static void volume_id_changed (GwyDataChooser *chooser, - GwyParamTable *partable); -static void xyz_id_changed (GwyDataChooser *chooser, - GwyParamTable *partable); -static void curve_map_id_changed (GwyDataChooser *chooser, - GwyParamTable *partable); -static void data_id_set_value (GwyParamControl *control, - GwyParamTable *partable, - GwyAppDataId value, - gboolean use_default_instead); -static void graph_curve_changed (GtkComboBox *combo, - GwyParamTable *partable); -static void lawn_curve_changed (GtkComboBox *combo, - GwyParamTable *partable); -static void lawn_segment_changed (GtkComboBox *combo, - GwyParamTable *partable); -static void curve_no_set_value (GwyParamControl *control, - GwyParamTable *partable, - gint value, - gboolean use_default_instead); -static gint curve_no_get_ncurves (GwyParamControl *control); -static void random_seed_changed (GtkAdjustment *adj, - GwyParamTable *partable); -static void random_seed_new (GtkButton *button, - GwyParamTable *partable); -static void button_clicked (GtkButton *button, - GwyParamTable *partable); -static void mask_color_set_value (GwyParamControl *control, - GwyParamTable *partable, - GwyRGBA color, - gboolean use_default_instead); -static void report_format_changed (GwyResultsExport *rexport, - GwyParamTable *partable); -static void report_copy (GwyResultsExport *rexport, - GwyParamTable *partable); -static void report_save (GwyResultsExport *rexport, - GwyParamTable *partable); -static void report_set_formatter (GwyParamControl *control, - GwyCreateTextFunc format_report, - gpointer user_data, - GDestroyNotify destroy); -static void report_ensure_actions (GwyParamControl *control, - GwyParamTable *partable); -static void report_set_value (GwyParamControl *control, - GwyParamTable *partable, - GwyResultsReportType report_type, - gboolean use_default_instead); -static void slider_value_changed (GtkAdjustment *adj, - GwyParamTable *partable); -static gint slider_spin_input (GtkSpinButton *spin, - gdouble *new_value, - GwyParamTable *partable); -static gboolean slider_spin_output (GtkSpinButton *spin, - GwyParamTable *partable); -static void slider_set_value (GwyParamControl *control, - GwyParamTable *partable, - gdouble value, - gboolean use_default_instead); -static void slider_make_angle (GwyParamTable *partable, - guint i); -static void slider_make_percentage (GwyParamTable *partable, - guint i); -static void slider_auto_configure (GwyParamControl *control, - const GwyParamDefItem *def); -static void slider_reconfigure_adjustment (GwyParamControl *control, - GwyParamTable *partable); -static void slider_reconfigure_alt (GwyParamControl *control, - GwyParamTable *partable); -static void slider_set_transformation (GwyParamTable *partable, - guint i, - GwyRealFunc value_to_gui, - GwyRealFunc gui_to_value, - gpointer user_data, - GDestroyNotify destroy); -static void slider_set_width_chars (GwyParamTable *partable, - guint i); -static void alt_set_width_chars (GwyParamTable *partable, - guint i); -static void alt_set_from_value_format (GwyParamTable *partable, - gint id, - const gchar *unitstr, - gdouble raw_q, - gdouble raw_offset); -static void entry_activated (GtkEntry *gtkentry, - GwyParamTable *partable); -static void entry_changed (GtkEntry *gtkentry, - GwyParamTable *partable); -static void entry_input (GtkEntry *gtkentry, - GwyParamTable *partable, - gboolean is_instant_edit); -static void entry_output (GwyParamTable *partable, - GwyParamControl *control); -static gdouble entry_parse_double_vf (const gchar *text, - gchar **end, - gpointer user_data); -static const gchar* entry_format_double_vf (gdouble value, - gpointer user_data); -static void string_entry_set_value (GwyParamControl *control, - GwyParamTable *partable, - const gchar *value, - gboolean use_default_instead); -static void int_entry_set_value (GwyParamControl *control, - GwyParamTable *partable, - gint value, - gboolean use_default_instead); -static void double_entry_set_value (GwyParamControl *control, - GwyParamTable *partable, - gdouble value, - gboolean use_default_instead); -static void update_control_unit_label (GwyParamControl *control, - GwyParamTable *partable); -static void mask_color_run_selector (GwyColorButton *color_button, - GwyParamTable *partable); -static void message_update_type (GwyParamControl *control); -static gboolean filter_graph_model (GwyContainer *data, - gint id, - gpointer user_data); -static GwyParamControl* find_button_box_end (GwyParamTable *partable, - GwyParamControl *control, - gboolean forward); -static gboolean button_box_has_any_sensitive (GwyParamTable *partable, - GwyParamControl *control); -static void widget_dispose (GtkWidget *widget, - GwyParamTable *partable); -static void make_control_common (GwyParamTable *partable, - guint i); -static void add_separator_as_needed (GwyParamTable *partable, - guint i); -static void attach_hbox_row (GwyParamTable *partable, - gint row, - GwyParamControl *control, - const gchar *dest); -static GtkWidget* add_left_padding (GtkWidget *widget, - gint left_pad); -static GtkWidget* add_right_padding (GtkWidget *widget, - gint right_pad); -static void expand_table (GwyParamTable *partable); -static gint find_control_for_aux (GwyParamTable *partable, - const GwyParamControlAssocTable *assoc_table, - gint id); -static gint find_aux_for_control (GwyParamTable *partable, - const GwyParamControlAssocTable *assoc_table, - gint id); -static GwyToggleListInfo* find_toggles_info (GwyParamTable *partable, - gint id); -static GwyEnum* modify_enum_labels (GwyParamTable *partable, - const GwyEnum *values, - guint nvalues, - gboolean end_with_colon, - gboolean remove_underline); -static const gchar* modify_label (GwyParamTable *partable, - const gchar *label, - gboolean end_with_colon, - gboolean remove_underline); -static GtkWindow* get_parent_window (GwyParamTable *partable, - gboolean must_be_dialog); -static void format_numerical_value (GString *str, - gdouble value, - gint digits); -static guint32 bit_mask_for_enum_value (const GwyParamDefItem *def, - gint value); -static void compute_calibration_steps (GwyDataLine *calibration, - gdouble *mean_step, - gdouble *min_step); -static gdouble calibration_transform_to_gui (GwyDataLine *calibration, - gdouble v); -static gdouble calibration_transform_from_gui (GwyDataLine *calibration, - gdouble v); -static const GwyEnum* guess_standard_stock_ids (const GwyParamDefItem *def); -static gboolean control_has_no_parameter (GwyParamControlType type); -static gboolean control_is_some_kind_of_radio (GwyParamControlType type); -static gboolean control_is_some_kind_of_data_id (GwyParamControlType type); -static gboolean control_is_some_kind_of_curve_no(GwyParamControlType type); -static gboolean control_can_integrate_enabler (GwyParamControlType type); -static gboolean control_can_integrate_unitstr (GwyParamControlType type); -static gboolean control_has_hbox (GwyParamControlType type); -static gdouble multiply_by_constant (gdouble v, - gpointer user_data); -static gdouble divide_by_constant (gdouble v, - gpointer user_data); +static void gwy_param_table_finalize (GObject *gobject); +static GwyParamControl* find_first_control (GwyParamTable *partable, + gint id); +static gboolean find_def_common (GwyParamTable *partable, + gint id, + GwyParams **pparams, + const GwyParamDefItem **def); +static GwyParamControl* append_control (GwyParamTable *partable, + GwyParamControlType type, + gint id, + gint nrows); +static void add_aux_assoc (GwyParamControlAssocTable *assoc_table, + gint aux_id, + gint other_id); +static void add_toggles_info (GwyParamTable *partable, + gint id, + gboolean must_not_exist); +static GtkWidget* ensure_widget (GwyParamTable *partable); +static void update_control_sensitivity (GwyParamTable *partable, + gint i); +static void header_make_control (GwyParamTable *partable, + guint i); +static void checkbox_make_control (GwyParamTable *partable, + guint i, + const GwyParamDefItem *def); +static void enabler_make_control (GwyParamTable *partable, + guint i, + guint iother); +static void combo_make_control (GwyParamTable *partable, + guint i, + const GwyParamDefItem *def); +static void radio_make_control (GwyParamTable *partable, + guint i, + const GwyParamDefItem *def); +static void radio_header_make_control (GwyParamTable *partable, + guint i, + const GwyParamDefItem *def); +static void radio_item_make_control (GwyParamTable *partable, + guint i, + const GwyParamDefItem *def); +static void radio_row_make_control (GwyParamTable *partable, + guint i, + const GwyParamDefItem *def); +static void radio_buttons_make_control (GwyParamTable *partable, + guint i, + const GwyParamDefItem *def); +static void construct_radio_widgets (GwyParamTable *partable, + guint i, + const GwyParamDefItem *def); +static void checkboxes_make_control (GwyParamTable *partable, + guint i, + const GwyParamDefItem *def); +static void construct_checkbox_widgets (GwyParamTable *partable, + guint i, + const GwyParamDefItem *def); +static void data_id_make_control (GwyParamTable *partable, + guint i, + const GwyParamDefItem *def); +static void curve_no_make_control (GwyParamTable *partable, + guint i, + const GwyParamDefItem *def); +static void slider_make_control (GwyParamTable *partable, + guint i, + const GwyParamDefItem *def); +static void alt_make_control (GwyParamTable *partable, + guint i, + const GwyParamDefItem *def); +static void entry_make_control (GwyParamTable *partable, + guint i, + const GwyParamDefItem *def); +static void range_from_make_control (GwyParamTable *partable, + guint i, + const GwyParamDefItem *def); +static void range_to_make_control (GwyParamTable *partable, + guint i, + guint ifrom); +static void mask_color_make_control (GwyParamTable *partable, + guint i, + const GwyParamDefItem *def); +static void report_make_control (GwyParamTable *partable, + guint i, + const GwyParamDefItem *def); +static void hold_selection_make_control (GwyParamTable *partable, + guint i, + const GwyParamDefItem *def); +static void unit_chooser_make_control (GwyParamTable *partable, + guint i, + const GwyParamDefItem *def); +static void random_seed_make_control (GwyParamTable *partable, + guint i, + const GwyParamDefItem *def); +static void button_make_control (GwyParamTable *partable, + guint i); +static void results_make_control (GwyParamTable *partable, + guint i); +static void message_make_control (GwyParamTable *partable, + guint i); +static void info_make_control (GwyParamTable *partable, + guint i); +static void foreign_make_control (GwyParamTable *partable, + guint i); +static void checkbox_toggled (GtkToggleButton *toggle, + GwyParamTable *partable); +static void enabler_toggled (GtkToggleButton *toggle, + GwyParamTable *partable); +static void togglebutton_set_value (GwyParamControl *control, + GwyParamTable *partable, + gboolean value, + gboolean use_default_instead); +static void combo_changed (GtkComboBox *combo, + GwyParamTable *partable); +static void unit_chosen (GtkComboBox *combo, + GwyParamTable *partable); +static void unit_chooser_change (GtkButton *button, + GwyParamTable *partable); +static gchar* unit_change_dialog_run (GtkWindow *parent, + const gchar *unitstr); +static void enum_combo_set_value (GwyParamControl *control, + GwyParamTable *partable, + gint value, + gboolean use_default_instead); +static void unit_chooser_set_value (GwyParamControl *control, + GwyParamTable *partable, + const gchar *value, + gboolean use_default_instead); +static void resource_combo_set_value (GwyParamControl *control, + GwyParamTable *partable, + const gchar *value, + gboolean use_default_instead); +static void radio_changed (GtkRadioButton *radio, + GwyParamTable *partable); +static void radio_set_value (GwyParamControl *control, + GwyParamTable *partable, + gint value, + gboolean use_default_instead); +static void checkbox_changed (GtkToggleButton *toggle, + GwyParamTable *partable); +static void checkboxes_set_value (GwyParamControl *control, + GwyParamTable *partable, + guint value, + gboolean use_default_instead); +static void graph_id_changed (GwyDataChooser *chooser, + GwyParamTable *partable); +static void image_id_changed (GwyDataChooser *chooser, + GwyParamTable *partable); +static void volume_id_changed (GwyDataChooser *chooser, + GwyParamTable *partable); +static void xyz_id_changed (GwyDataChooser *chooser, + GwyParamTable *partable); +static void curve_map_id_changed (GwyDataChooser *chooser, + GwyParamTable *partable); +static void data_id_set_value (GwyParamControl *control, + GwyParamTable *partable, + GwyAppDataId value, + gboolean use_default_instead); +static void graph_curve_changed (GtkComboBox *combo, + GwyParamTable *partable); +static void lawn_curve_changed (GtkComboBox *combo, + GwyParamTable *partable); +static void lawn_segment_changed (GtkComboBox *combo, + GwyParamTable *partable); +static void curve_no_set_value (GwyParamControl *control, + GwyParamTable *partable, + gint value, + gboolean use_default_instead); +static gint curve_no_get_ncurves (GwyParamControl *control); +static void random_seed_changed (GtkAdjustment *adj, + GwyParamTable *partable); +static void random_seed_new (GtkButton *button, + GwyParamTable *partable); +static void button_clicked (GtkButton *button, + GwyParamTable *partable); +static void mask_color_set_value (GwyParamControl *control, + GwyParamTable *partable, + GwyRGBA color, + gboolean use_default_instead); +static void report_format_changed (GwyResultsExport *rexport, + GwyParamTable *partable); +static void report_copy (GwyResultsExport *rexport, + GwyParamTable *partable); +static void report_save (GwyResultsExport *rexport, + GwyParamTable *partable); +static void report_set_formatter (GwyParamControl *control, + GwyCreateTextFunc format_report, + gpointer user_data, + GDestroyNotify destroy); +static void report_ensure_actions (GwyParamControl *control, + GwyParamTable *partable); +static void report_set_value (GwyParamControl *control, + GwyParamTable *partable, + GwyResultsReportType report_type, + gboolean use_default_instead); +static void hold_selection_set_value (GwyParamControl *control, + GwyParamTable *partable, + GwyHoldSelectionFlags value, + gboolean use_default_instead); +static void hold_selection_changed (GtkWidget *button, + GwyParamTable *partable); +static void slider_value_changed (GtkAdjustment *adj, + GwyParamTable *partable); +static gint slider_spin_input (GtkSpinButton *spin, + gdouble *new_value, + GwyParamTable *partable); +static gboolean slider_spin_output (GtkSpinButton *spin, + GwyParamTable *partable); +static void slider_set_value (GwyParamControl *control, + GwyParamTable *partable, + gdouble value, + gboolean use_default_instead); +static void slider_make_angle (GwyParamTable *partable, + guint i); +static void slider_make_percentage (GwyParamTable *partable, + guint i); +static void slider_auto_configure (GwyParamControl *control, + const GwyParamDefItem *def); +static void slider_reconfigure_adjustment (GwyParamControl *control, + GwyParamTable *partable); +static void slider_reconfigure_alt (GwyParamControl *control, + GwyParamTable *partable); +static void slider_set_transformation (GwyParamTable *partable, + guint i, + GwyRealFunc value_to_gui, + GwyRealFunc gui_to_value, + gpointer user_data, + GDestroyNotify destroy); +static void slider_set_width_chars (GwyParamTable *partable, + guint i); +static void alt_set_width_chars (GwyParamTable *partable, + guint i); +static void alt_set_from_value_format (GwyParamTable *partable, + gint id, + const gchar *unitstr, + gdouble raw_q, + gdouble raw_offset); +static void entry_activated (GtkEntry *gtkentry, + GwyParamTable *partable); +static void entry_changed (GtkEntry *gtkentry, + GwyParamTable *partable); +static void entry_input (GtkEntry *gtkentry, + GwyParamTable *partable, + gboolean is_instant_edit); +static void entry_output (GwyParamTable *partable, + GwyParamControl *control); +static gdouble entry_parse_double_vf (const gchar *text, + gchar **end, + gpointer user_data); +static const gchar* entry_format_double_vf (gdouble value, + gpointer user_data); +static void string_entry_set_value (GwyParamControl *control, + GwyParamTable *partable, + const gchar *value, + gboolean use_default_instead); +static void int_entry_set_value (GwyParamControl *control, + GwyParamTable *partable, + gint value, + gboolean use_default_instead); +static void double_entry_set_value (GwyParamControl *control, + GwyParamTable *partable, + gdouble value, + gboolean use_default_instead); +static void range_set_value (GwyParamControl *control, + GwyParamTable *partable, + gdouble value, + gboolean use_default_instead); +static void range_input (GtkEntry *gtkentry, + GwyParamTable *partable); +static void range_output (GwyParamTable *partable, + GwyParamControl *control); +static void range_activated (GtkEntry *gtkentry, + GwyParamTable *partable); +static GwyParamControlRangeFrom* range_get_impl (GwyParamControl *control, + GwyParamTable *partable); +static void update_control_unit_label (GwyParamControl *control, + GwyParamTable *partable); +static void mask_color_run_selector (GwyColorButton *color_button, + GwyParamTable *partable); +static void message_update_type (GwyParamControl *control); +static gboolean filter_graph_model (GwyContainer *data, + gint id, + gpointer user_data); +static GwyParamControl* find_button_box_end (GwyParamTable *partable, + GwyParamControl *control, + gboolean forward); +static gboolean button_box_has_any_sensitive (GwyParamTable *partable, + GwyParamControl *control); +static void widget_dispose (GtkWidget *widget, + GwyParamTable *partable); +static void make_control_common (GwyParamTable *partable, + guint i); +static void add_separator_as_needed (GwyParamTable *partable, + guint i); +static void attach_hbox_row (GwyParamTable *partable, + gint row, + GwyParamControl *control, + const gchar *dest); +static GtkWidget* add_left_padding (GtkWidget *widget, + gint left_pad); +static GtkWidget* add_right_padding (GtkWidget *widget, + gint right_pad); +static void expand_table (GwyParamTable *partable); +static gint find_control_for_aux (GwyParamTable *partable, + const GwyParamControlAssocTable *assoc_table, + gint id); +static gint find_aux_for_control (GwyParamTable *partable, + const GwyParamControlAssocTable *assoc_table, + gint id); +static GwyToggleListInfo* find_toggles_info (GwyParamTable *partable, + gint id); +static GwyEnum* modify_enum_labels (GwyParamTable *partable, + const GwyEnum *values, + guint nvalues, + gboolean end_with_colon, + gboolean remove_underline); +static const gchar* modify_label (GwyParamTable *partable, + const gchar *label, + gboolean end_with_colon, + gboolean remove_underline); +static GtkWindow* get_parent_window (GwyParamTable *partable, + gboolean must_be_dialog); +static const gchar* format_double_vf_common (gdouble value, + GwySIValueFormat *vf, + GString *str); +static void format_numerical_value (GString *str, + gdouble value, + gint digits); +static guint32 bit_mask_for_enum_value (const GwyParamDefItem *def, + gint value); +static void compute_calibration_steps (GwyDataLine *calibration, + gdouble *mean_step, + gdouble *min_step); +static gdouble calibration_transform_to_gui (GwyDataLine *calibration, + gdouble v); +static gdouble calibration_transform_from_gui (GwyDataLine *calibration, + gdouble v); +static const GwyEnum* guess_standard_stock_ids (const GwyParamDefItem *def); +static gboolean control_has_no_parameter (GwyParamControlType type); +static gboolean control_is_some_kind_of_radio (GwyParamControlType type); +static gboolean control_is_some_kind_of_data_id (GwyParamControlType type); +static gboolean control_is_some_kind_of_curve_no(GwyParamControlType type); +static gboolean control_can_integrate_enabler (GwyParamControlType type); +static gboolean control_can_integrate_unitstr (GwyParamControlType type); +static gboolean control_has_hbox (GwyParamControlType type); +static gdouble multiply_by_constant (gdouble v, + gpointer user_data); +static gdouble divide_by_constant (gdouble v, + gpointer user_data); static guint signals[N_SIGNALS]; @@ -738,6 +762,12 @@ GWY_SI_VALUE_FORMAT_FREE(entry->vf); g_slice_free(GwyParamControlEntry, entry); } + else if (type == GWY_PARAM_CONTROL_RANGE_FROM) { + GwyParamControlRangeFrom *range = (GwyParamControlRangeFrom*)control->impl; + if (range->vf) + GWY_SI_VALUE_FORMAT_FREE(range->vf); + g_slice_free(GwyParamControlRangeFrom, range); + } else if (type == GWY_PARAM_CONTROL_MASK_COLOR) { GwyParamControlMaskColor *maskcolor = (GwyParamControlMaskColor*)control->impl; gwy_debug("sync back mask color to %p, %d? %d", maskcolor->data, maskcolor->i, priv->proceed); @@ -796,6 +826,7 @@ } g_free(priv->controls); g_free(priv->enabler.assoc); + g_free(priv->range.assoc); g_free(priv->toggles_info); g_string_free(priv->str, TRUE); GWY_SI_VALUE_FORMAT_FREE(priv->vf); @@ -957,6 +988,8 @@ } else if (type == GWY_PARAM_CONTROL_REPORT) report_set_value(control, partable, 0, TRUE); + else if (type == GWY_PARAM_CONTROL_HOLD_SELECTION) + hold_selection_set_value(control, partable, 0, TRUE); else { g_critical("Unhandled control type %d.", type); } @@ -1058,6 +1091,10 @@ else string_entry_set_value(control, partable, gwy_params_get_string(params, id), FALSE); } + else if (type == GWY_PARAM_CONTROL_RANGE_FROM) + range_set_value(control, partable, gwy_params_get_double(params, id), FALSE); + else if (type == GWY_PARAM_CONTROL_RANGE_TO) + range_set_value(control, partable, gwy_params_get_double(params, id), FALSE); else if (control_is_some_kind_of_data_id(control->type)) { data_id_set_value(control, partable, gwy_params_get_data_id(params, id), FALSE); } @@ -1067,6 +1104,8 @@ mask_color_set_value(control, partable, gwy_params_get_color(params, id), FALSE); else if (type == GWY_PARAM_CONTROL_REPORT) report_set_value(control, partable, gwy_params_get_report_type(params, id), FALSE); + else if (type == GWY_PARAM_CONTROL_HOLD_SELECTION) + hold_selection_set_value(control, partable, gwy_params_get_flags(params, id), FALSE); else { g_critical("Unhandled control type %d.", type); } @@ -1159,7 +1198,7 @@ * response handler either. This can be useful for parameters that do not have static default values and need special * treatment during the reset. * - * Some parameters are no-reset by default: data ids and mask colour. + * Some parameters are no-reset by default: for instance data ids or mask colour. * * Since: 2.59 **/ @@ -1340,6 +1379,9 @@ slider_set_value(control, partable, value, FALSE); else if (control->type == GWY_PARAM_CONTROL_ENTRY) double_entry_set_value(control, partable, value, FALSE); + else if (control->type == GWY_PARAM_CONTROL_RANGE_FROM + || control->type == GWY_PARAM_CONTROL_RANGE_TO) + range_set_value(control, partable, value, FALSE); else { g_assert_not_reached(); } @@ -1392,8 +1434,18 @@ gint id, guint value) { + GwyParamControl *control; + g_return_if_fail(GWY_IS_PARAM_TABLE(partable)); - checkboxes_set_value(find_first_control(partable, id), partable, value, FALSE); + control = find_first_control(partable, id); + g_return_if_fail(control); + if (control->type == GWY_PARAM_CONTROL_CHECKBOXES) + checkboxes_set_value(control, partable, value, FALSE); + else if (control->type == GWY_PARAM_CONTROL_HOLD_SELECTION) + hold_selection_set_value(control, partable, value, FALSE); + else { + g_assert_not_reached(); + } } /** @@ -1581,7 +1633,7 @@ g_return_if_fail(def->type == GWY_PARAM_BOOLEAN); append_control(partable, GWY_PARAM_CONTROL_CHECKBOX, id, 1); if (partable->priv->widget) - checkbox_make_control(partable, partable->priv->ncontrols-1, params, def); + checkbox_make_control(partable, partable->priv->ncontrols-1, def); } /** @@ -1595,7 +1647,7 @@ * The parameter identified by @id must be a boolean defined by gwy_param_def_add_boolean() or a predefined boolean. * * The parameter identified by @other_id must be added as combo box, data chooser, slider or radio button row (text - * or image buttons). The check box will the be integrated in the control of that parameter. If you have a generic + * or image buttons). The check box will then be integrated in the control of that parameter. If you have a generic * enable/disable parameter with its own standalone checkbox use gwy_param_table_append_checkbox() instead (and set * widget sensitivity using gwy_param_table_set_sensitive() in the #GwyParamTable::param-changed signal handler). * @@ -1628,7 +1680,7 @@ control->impl = enabler = g_slice_new0(GwyParamControlEnabler); add_aux_assoc(&priv->enabler, id, other_id); if (priv->widget && other_control && other_control->widget) { - enabler_make_control(partable, priv->ncontrols-1, other_control - priv->controls, params); + enabler_make_control(partable, priv->ncontrols-1, other_control - priv->controls); update_control_sensitivity(partable, priv->ncontrols-1); } } @@ -1657,7 +1709,7 @@ if (!find_def_common(partable, id, ¶ms, &def)) return; - g_return_if_fail(def->type == GWY_PARAM_ENUM || def->type == GWY_PARAM_RESOURCE); + g_return_if_fail(def->type == GWY_PARAM_ENUM || def->type == GWY_PARAM_RESOURCE_NAME); control = append_control(partable, GWY_PARAM_CONTROL_COMBO, id, 1); control->impl = combo = g_slice_new0(GwyParamControlCombo); if (def->type == GWY_PARAM_ENUM) { @@ -1670,7 +1722,7 @@ combo->is_resource = TRUE; } if (partable->priv->widget) - combo_make_control(partable, partable->priv->ncontrols-1, params, def); + combo_make_control(partable, partable->priv->ncontrols-1, def); } /** @@ -1814,7 +1866,7 @@ append_control(partable, GWY_PARAM_CONTROL_RADIO, id, (def->desc ? 1 : 0) + def->def.e.nvalues); add_toggles_info(partable, id, TRUE); if (partable->priv->widget) - radio_make_control(partable, partable->priv->ncontrols-1, params, def); + radio_make_control(partable, partable->priv->ncontrols-1, def); } /** @@ -1848,7 +1900,7 @@ append_control(partable, GWY_PARAM_CONTROL_RADIO_HEADER, id, 1); add_toggles_info(partable, id, TRUE); if (partable->priv->widget) - radio_header_make_control(partable, partable->priv->ncontrols-1, params, def); + radio_header_make_control(partable, partable->priv->ncontrols-1, def); } /** @@ -1886,7 +1938,7 @@ radioitem->value = value; add_toggles_info(partable, id, FALSE); if (partable->priv->widget) - radio_item_make_control(partable, partable->priv->ncontrols-1, params, def); + radio_item_make_control(partable, partable->priv->ncontrols-1, def); } /** @@ -1920,7 +1972,7 @@ append_control(partable, GWY_PARAM_CONTROL_RADIO_ROW, id, 1); add_toggles_info(partable, id, TRUE); if (partable->priv->widget) - radio_row_make_control(partable, partable->priv->ncontrols-1, params, def); + radio_row_make_control(partable, partable->priv->ncontrols-1, def); } /** @@ -1966,7 +2018,7 @@ radiobuttons->stock_ids = stock_ids; add_toggles_info(partable, id, TRUE); if (partable->priv->widget) - radio_buttons_make_control(partable, partable->priv->ncontrols-1, params, def); + radio_buttons_make_control(partable, partable->priv->ncontrols-1, def); } /** @@ -2043,7 +2095,7 @@ append_control(partable, GWY_PARAM_CONTROL_CHECKBOXES, id, (def->desc ? 1 : 0) + def->def.f.nvalues); add_toggles_info(partable, id, TRUE); if (partable->priv->widget) - checkboxes_make_control(partable, partable->priv->ncontrols-1, params, def); + checkboxes_make_control(partable, partable->priv->ncontrols-1, def); } /** @@ -2140,7 +2192,7 @@ datachooser->none = _("New graph"); } if (partable->priv->widget) - data_id_make_control(partable, partable->priv->ncontrols-1, params, def); + data_id_make_control(partable, partable->priv->ncontrols-1, def); } /** @@ -2172,7 +2224,7 @@ control->do_not_reset = TRUE; control->impl = datachooser = g_slice_new0(GwyParamControlDataChooser); if (partable->priv->widget) - data_id_make_control(partable, partable->priv->ncontrols-1, params, def); + data_id_make_control(partable, partable->priv->ncontrols-1, def); } /** @@ -2203,7 +2255,7 @@ control->do_not_reset = TRUE; control->impl = datachooser = g_slice_new0(GwyParamControlDataChooser); if (partable->priv->widget) - data_id_make_control(partable, partable->priv->ncontrols-1, params, def); + data_id_make_control(partable, partable->priv->ncontrols-1, def); } /** @@ -2234,7 +2286,7 @@ control->do_not_reset = TRUE; control->impl = datachooser = g_slice_new0(GwyParamControlDataChooser); if (partable->priv->widget) - data_id_make_control(partable, partable->priv->ncontrols-1, params, def); + data_id_make_control(partable, partable->priv->ncontrols-1, def); } /** @@ -2265,7 +2317,7 @@ control->do_not_reset = TRUE; control->impl = datachooser = g_slice_new0(GwyParamControlDataChooser); if (partable->priv->widget) - data_id_make_control(partable, partable->priv->ncontrols-1, params, def); + data_id_make_control(partable, partable->priv->ncontrols-1, def); } /** @@ -2296,7 +2348,7 @@ control->do_not_reset = TRUE; control->impl = datachooser = g_slice_new0(GwyParamControlDataChooser); if (partable->priv->widget) - data_id_make_control(partable, partable->priv->ncontrols-1, params, def); + data_id_make_control(partable, partable->priv->ncontrols-1, def); } /** @@ -2413,7 +2465,7 @@ control->impl = curvechooser = g_slice_new0(GwyParamControlCurveChooser); gwy_set_member_object(partable, gmodel, GWY_TYPE_GRAPH_MODEL, &curvechooser->parent, NULL); if (partable->priv->widget) - curve_no_make_control(partable, partable->priv->ncontrols-1, params, def); + curve_no_make_control(partable, partable->priv->ncontrols-1, def); } /** @@ -2438,6 +2490,7 @@ GwyParamTablePrivate *priv; GwyGraphCurveModel *gcmodel; GtkWidget *hbox; + const gchar *prevdescription; gint n, curveno = 0; guint i; @@ -2451,7 +2504,8 @@ return; priv = partable->priv; - if ((gcmodel = gwy_graph_model_get_curve_by_description(gmodel, gwy_params_get_string(priv->params, id)))) + if ((prevdescription = gwy_params_get_string(priv->params, id)) + && (gcmodel = gwy_graph_model_get_curve_by_description(gmodel, prevdescription))) curveno = gwy_graph_model_get_curve_index(gmodel, gcmodel); n = gwy_graph_model_get_n_curves(gmodel); @@ -2522,7 +2576,7 @@ control->impl = curvechooser = g_slice_new0(GwyParamControlCurveChooser); gwy_set_member_object(partable, lawn, GWY_TYPE_LAWN, &curvechooser->parent, NULL); if (partable->priv->widget) - curve_no_make_control(partable, partable->priv->ncontrols-1, params, def); + curve_no_make_control(partable, partable->priv->ncontrols-1, def); } /* XXX: This is complicated and apparently not needed. Avoid exposing it as a public API until we need it. */ @@ -2642,7 +2696,7 @@ control->impl = curvechooser = g_slice_new0(GwyParamControlCurveChooser); gwy_set_member_object(partable, lawn, GWY_TYPE_LAWN, &curvechooser->parent, NULL); if (partable->priv->widget) - curve_no_make_control(partable, partable->priv->ncontrols-1, params, def); + curve_no_make_control(partable, partable->priv->ncontrols-1, def); } /** @@ -2684,7 +2738,7 @@ slider_make_percentage(partable, i); } if (partable->priv->widget) - slider_make_control(partable, i, params, def); + slider_make_control(partable, i, def); } /** @@ -3038,7 +3092,6 @@ GwyParamControl *control; const GwyParamDefItem *def; GwyParamControlSlider *slider; - GwyParams *params; guint i; g_return_if_fail(GWY_IS_PARAM_TABLE(partable)); @@ -3054,7 +3107,7 @@ slider->alt_offset_to_gui = 0.0; i = control - priv->controls; if (priv->widget && control->widget) { - alt_make_control(partable, i, params, def); + alt_make_control(partable, i, def); update_control_sensitivity(partable, i); } } @@ -3408,7 +3461,7 @@ entry->is_numeric = (def->type == GWY_PARAM_INT || def->type == GWY_PARAM_DOUBLE); entry->is_int = (def->type == GWY_PARAM_INT); if (partable->priv->widget) - entry_make_control(partable, partable->priv->ncontrols-1, params, def); + entry_make_control(partable, partable->priv->ncontrols-1, def); } /** @@ -3466,35 +3519,62 @@ const GwyParamDefItem *def; GwyParams *params; GwyParamControl *control; - GwyParamControlEntry *entry; g_return_if_fail(GWY_IS_PARAM_TABLE(partable)); control = find_first_control(partable, id); - g_return_if_fail(control && control->type == GWY_PARAM_CONTROL_ENTRY); + g_return_if_fail(control && (control->type == GWY_PARAM_CONTROL_ENTRY + || control->type == GWY_PARAM_CONTROL_RANGE_FROM + || control->type == GWY_PARAM_CONTROL_RANGE_TO)); if (!find_def_common(partable, id, ¶ms, &def)) return; g_return_if_fail(def->type == GWY_PARAM_DOUBLE); - entry = (GwyParamControlEntry*)control->impl; - if (entry->transform_destroy) { - entry->transform_destroy(entry->transform_data); - entry->transform_destroy = NULL; - } - if (vf) { - entry->vf = gwy_si_unit_value_format_clone(vf, entry->vf); - entry->transform_data = entry; - entry->parse = entry_parse_double_vf; - entry->format = entry_format_double_vf; + if (control->type == GWY_PARAM_CONTROL_ENTRY) { + GwyParamControlEntry *entry = (GwyParamControlEntry*)control->impl; + if (entry->transform_destroy) { + entry->transform_destroy(entry->transform_data); + entry->transform_destroy = NULL; + } + if (vf) { + entry->vf = gwy_si_unit_value_format_clone(vf, entry->vf); + entry->transform_data = entry; + entry->parse = entry_parse_double_vf; + entry->format = entry_format_double_vf; + } + else { + GWY_SI_VALUE_FORMAT_FREE(entry->vf); + entry->transform_data = NULL; + entry->parse = NULL; + entry->format = NULL; + } + gwy_param_table_set_unitstr(partable, control->id, entry->vf ? entry->vf->units : NULL); + if (control->widget) + entry_output(partable, control); } else { - GWY_SI_VALUE_FORMAT_FREE(entry->vf); - entry->transform_data = NULL; - entry->parse = NULL; - entry->format = NULL; - } + GwyParamControlRangeFrom *range = range_get_impl(control, partable); + GwyParamTablePrivate *priv = partable->priv; + GwyParamControl *control_from, *control_to; + + g_return_if_fail(range); + if (vf) + range->vf = gwy_si_unit_value_format_clone(vf, range->vf); + else + GWY_SI_VALUE_FORMAT_FREE(range->vf); + gwy_param_table_set_unitstr(partable, control->id, range->vf ? range->vf->units : NULL); - gwy_param_table_set_unitstr(partable, control->id, entry->vf ? entry->vf->units : NULL); - if (control->widget) - entry_output(partable, control); + if (control->type == GWY_PARAM_CONTROL_RANGE_FROM) { + control_from = control; + control_to = priv->controls + find_aux_for_control(partable, &priv->range, id); + } + else { + control_from = priv->controls + find_control_for_aux(partable, &priv->range, id); + control_to = control; + } + if (control_from->widget) + range_output(partable, control_from); + if (control_to->widget) + range_output(partable, control_to); + } } /** @@ -3539,6 +3619,58 @@ } /** + * gwy_param_table_append_range: + * @partable: Set of parameter value controls. + * @id_from: Parameter identifier for the beginning. + * @id_to: Parameter identifier for the end. + * + * Adds a pair of numerical entries representing a range to a parameter table. + * + * This is mostly useful for entering graph ranges numerically. For image ranges separate controls are preferred as + * they allow pixel plus alternative real values. + * + * The two parameters identified by @id_from and @id_to must be doubles and distinct. Parameter @id_from is considered + * primary and should be used for referring to the control as a whole (for instance to make it insensitive), even + * though for convenience both are passed directly to this function. + * + * Use gwy_param_table_entry_set_value_format() to set the value format. + * + * Since: 2.63 + **/ +void +gwy_param_table_append_range(GwyParamTable *partable, + gint id_from, + gint id_to) +{ + GwyParamControl *control; + GwyParamControlRangeFrom *range; + GwyParams *params; + const GwyParamDefItem *def_from, *def_to; + GwyParamTablePrivate *priv; + + g_return_if_fail(id_to != id_from); + if (!find_def_common(partable, id_from, ¶ms, &def_from) + || !find_def_common(partable, id_to, ¶ms, &def_to)) + return; + g_return_if_fail(def_from->type == GWY_PARAM_DOUBLE); + g_return_if_fail(def_to->type == GWY_PARAM_DOUBLE); + + /* This one is a bit odd. We construct the range as a main ‘from’ control and add the ‘to’ control as an + * associated auxiliary control, similarly to enablers. It should not matter to the caller much. */ + priv = partable->priv; + control = append_control(partable, GWY_PARAM_CONTROL_RANGE_FROM, id_from, 1); + control->do_not_reset = TRUE; + control->impl = range = g_slice_new0(GwyParamControlRangeFrom); + range->str = priv->str; + append_control(partable, GWY_PARAM_CONTROL_RANGE_TO, id_to, 0); + + add_aux_assoc(&priv->range, id_to, id_from); + /* This will chain-construct both, similarly to enablers. */ + if (priv->widget) + range_from_make_control(partable, priv->ncontrols-2, def_from); +} + +/** * gwy_param_table_append_unit_chooser: * @partable: Set of parameter value controls. * @id: Parameter identifier. @@ -3564,7 +3696,7 @@ control = append_control(partable, GWY_PARAM_CONTROL_UNIT_CHOOSER, id, 1); control->impl = unit = g_slice_new0(GwyParamControlUnitChooser); if (partable->priv->widget) - unit_chooser_make_control(partable, partable->priv->ncontrols-1, params, def); + unit_chooser_make_control(partable, partable->priv->ncontrols-1, def); } /** @@ -3632,7 +3764,7 @@ gwy_rgba_store_to_container(&color, preview_data, key); } if (partable->priv->widget) - mask_color_make_control(partable, partable->priv->ncontrols-1, params, def); + mask_color_make_control(partable, partable->priv->ncontrols-1, def); } /** @@ -3899,7 +4031,7 @@ control->do_not_reset = TRUE; control->impl = report = g_slice_new0(GwyParamControlReport); if (partable->priv->widget) - report_make_control(partable, partable->priv->ncontrols-1, params, def); + report_make_control(partable, partable->priv->ncontrols-1, def); } /** @@ -4012,7 +4144,38 @@ control->do_not_reset = TRUE; control->impl = randomseed = g_slice_new0(GwyParamControlRandomSeed); if (partable->priv->widget) - random_seed_make_control(partable, partable->priv->ncontrols-1, params, def); + random_seed_make_control(partable, partable->priv->ncontrols-1, def); +} + +/** + * gwy_param_table_append_hold_selection: + * @partable: Set of parameter value controls. + * @id: Parameter identifier. + * + * Adds a selection holding parameter to a parameter table. + * + * The parameter identified by @id must be a selection holding flags parameter defined by + * gwy_param_def_add_hold_selection(). + * + * Since: 2.63 + **/ +void +gwy_param_table_append_hold_selection(GwyParamTable *partable, + gint id) +{ + GwyParamControl *control; + GwyParamControlHoldSelection *holdsel; + GwyParams *params; + const GwyParamDefItem *def; + + if (!find_def_common(partable, id, ¶ms, &def)) + return; + g_return_if_fail(def->type == GWY_PARAM_FLAGS && def->def.f.gtype == GWY_TYPE_HOLD_SELECTION_FLAGS); + control = append_control(partable, GWY_PARAM_CONTROL_HOLD_SELECTION, id, 1); + control->do_not_reset = TRUE; + control->impl = holdsel = g_slice_new0(GwyParamControlHoldSelection); + if (partable->priv->widget) + hold_selection_make_control(partable, partable->priv->ncontrols-1, def); } /** @@ -4168,7 +4331,10 @@ gtk_button_set_label(GTK_BUTTON(control->widget), new_label); else if (type == GWY_PARAM_CONTROL_SLIDER) gtk_label_set_markup(GTK_LABEL(gwy_adjust_bar_get_label(GWY_ADJUST_BAR(control->widget))), new_label); - else if (type == GWY_PARAM_CONTROL_RANDOM_SEED || type == GWY_PARAM_CONTROL_ENTRY) + else if (type == GWY_PARAM_CONTROL_RANDOM_SEED + || type == GWY_PARAM_CONTROL_ENTRY + || type == GWY_PARAM_CONTROL_RANGE_FROM /* FIXME FIXME FIXME: correct? */ + || type == GWY_PARAM_CONTROL_RANGE_TO) gtk_label_set_markup(GTK_LABEL(control->label), new_label); else if (type == GWY_PARAM_CONTROL_COMBO || type == GWY_PARAM_CONTROL_IMAGE_ID_COMBO @@ -4556,7 +4722,7 @@ row += controls[k].nrows; if (type == GWY_PARAM_CONTROL_SEPARATOR) continue; - if (type == GWY_PARAM_CONTROL_ENABLER) + if (type == GWY_PARAM_CONTROL_ENABLER || type == GWY_PARAM_CONTROL_RANGE_TO) continue; if (type == GWY_PARAM_CONTROL_HEADER) header_make_control(partable, k); @@ -4573,37 +4739,41 @@ else { def = _gwy_param_def_item(pardef, _gwy_param_def_index(pardef, controls[k].id)); if (type == GWY_PARAM_CONTROL_CHECKBOX) - checkbox_make_control(partable, k, params, def); + checkbox_make_control(partable, k, def); else if (type == GWY_PARAM_CONTROL_COMBO) - combo_make_control(partable, k, params, def); + combo_make_control(partable, k, def); else if (type == GWY_PARAM_CONTROL_RADIO) - radio_make_control(partable, k, params, def); + radio_make_control(partable, k, def); else if (type == GWY_PARAM_CONTROL_CHECKBOXES) - checkboxes_make_control(partable, k, params, def); + checkboxes_make_control(partable, k, def); else if (type == GWY_PARAM_CONTROL_RADIO_HEADER) - radio_header_make_control(partable, k, params, def); + radio_header_make_control(partable, k, def); else if (type == GWY_PARAM_CONTROL_RADIO_ITEM) - radio_item_make_control(partable, k, params, def); + radio_item_make_control(partable, k, def); else if (type == GWY_PARAM_CONTROL_RADIO_ROW) - radio_row_make_control(partable, k, params, def); + radio_row_make_control(partable, k, def); else if (type == GWY_PARAM_CONTROL_RADIO_BUTTONS) - radio_buttons_make_control(partable, k, params, def); + radio_buttons_make_control(partable, k, def); else if (control_is_some_kind_of_data_id(type)) - data_id_make_control(partable, k, params, def); + data_id_make_control(partable, k, def); else if (control_is_some_kind_of_curve_no(type)) - curve_no_make_control(partable, k, params, def); + curve_no_make_control(partable, k, def); else if (type == GWY_PARAM_CONTROL_SLIDER) - slider_make_control(partable, k, params, def); + slider_make_control(partable, k, def); else if (type == GWY_PARAM_CONTROL_ENTRY) - entry_make_control(partable, k, params, def); + entry_make_control(partable, k, def); + else if (type == GWY_PARAM_CONTROL_RANGE_FROM) + range_from_make_control(partable, k, def); else if (type == GWY_PARAM_CONTROL_MASK_COLOR) - mask_color_make_control(partable, k, params, def); + mask_color_make_control(partable, k, def); else if (type == GWY_PARAM_CONTROL_UNIT_CHOOSER) - unit_chooser_make_control(partable, k, params, def); + unit_chooser_make_control(partable, k, def); else if (type == GWY_PARAM_CONTROL_REPORT) - report_make_control(partable, k, params, def); + report_make_control(partable, k, def); + else if (type == GWY_PARAM_CONTROL_HOLD_SELECTION) + hold_selection_make_control(partable, k, def); else if (type == GWY_PARAM_CONTROL_RANDOM_SEED) - random_seed_make_control(partable, k, params, def); + random_seed_make_control(partable, k, def); else { g_assert_not_reached(); } @@ -4763,8 +4933,8 @@ hbox = gtk_widget_get_ancestor(control->widget, GTK_TYPE_HBOX); gwy_debug("hbox: %p", hbox); - /* HBoxes without enablers are easy; we can just set the sensitivity of the box. - * XXX: Some of these, like combos, might have unitstr? */ + g_return_if_fail(hbox); + /* HBoxes without enablers are easy; we can just set the sensitivity of the box. And possibly the units. */ if (!sensitive) { gwy_debug("making entire hbox insensitive"); gtk_widget_set_sensitive(hbox, FALSE); @@ -4792,6 +4962,18 @@ } if (control->unitlabel) gtk_widget_set_sensitive(control->unitlabel, TRUE); + + /* Selection holding flags buttons have a specific cascading logic. */ + if (type == GWY_PARAM_CONTROL_HOLD_SELECTION) { + GwyParamControlHoldSelection *holdsel = (GwyParamControlHoldSelection*)control->impl; + GwyHoldSelectionFlags flags = gwy_params_get_flags(priv->params, id); + gboolean hold_enabled = flags & GWY_HOLD_SELECTION_HOLD; + gboolean overwrite_enabled = flags & GWY_HOLD_SELECTION_OVERWRITE; + + gtk_widget_set_sensitive(holdsel->overwrite, hold_enabled); + gtk_widget_set_sensitive(holdsel->clear, hold_enabled && overwrite_enabled); + } + /* If the row contains lists of radio buttons and it is sensitive, we must check also individual buttons. */ if (type != GWY_PARAM_CONTROL_RADIO_ROW && type != GWY_PARAM_CONTROL_RADIO_BUTTONS) return; @@ -4872,8 +5054,7 @@ } static void -checkbox_make_control(GwyParamTable *partable, guint i, - GwyParams *params, const GwyParamDefItem *def) +checkbox_make_control(GwyParamTable *partable, guint i, const GwyParamDefItem *def) { GwyParamTablePrivate *priv = partable->priv; GwyParamControl *control = priv->controls + i; @@ -4885,7 +5066,8 @@ label = (control->label_text ? control->label_text : def->desc); control->widget = gtk_check_button_new_with_mnemonic(label); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(control->widget), gwy_params_get_boolean(params, control->id)); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(control->widget), + gwy_params_get_boolean(priv->params, control->id)); gwy_debug("attach %s at %d..%d", g_type_name(G_TYPE_FROM_INSTANCE(control->widget)), row, row+1); gtk_table_attach(GTK_TABLE(priv->widget), control->widget, 0, 2, row, row+1, GTK_FILL, 0, 0, 0); gtk_widget_show(control->widget); @@ -4896,10 +5078,10 @@ } static void -enabler_make_control(GwyParamTable *partable, guint i, guint iother, - GwyParams *params) +enabler_make_control(GwyParamTable *partable, guint i, guint iother) { GwyParamTablePrivate *priv = partable->priv; + GwyParams *params = priv->params; GwyParamControl *control = priv->controls + i, *other_control = priv->controls + iother; const GwyParamDefItem *otherdef; @@ -5030,10 +5212,10 @@ } static void -combo_make_control(GwyParamTable *partable, guint i, - GwyParams *params, const GwyParamDefItem *def) +combo_make_control(GwyParamTable *partable, guint i, const GwyParamDefItem *def) { GwyParamTablePrivate *priv = partable->priv; + GwyParams *params = priv->params; GwyParamControl *control = priv->controls + i; GwyParamControlCombo *combo = (GwyParamControlCombo*)control->impl; GwyInventoryStore *store; @@ -5094,13 +5276,12 @@ attach_hbox_row(partable, row, control, (control->label_text ? control->label_text : def->desc)); update_control_unit_label(control, partable); if ((ienabler = find_aux_for_control(partable, &priv->enabler, control->id)) >= 0) - enabler_make_control(partable, ienabler, i, params); + enabler_make_control(partable, ienabler, i); update_control_sensitivity(partable, i); } static void -radio_make_control(GwyParamTable *partable, guint i, - GwyParams *params, const GwyParamDefItem *def) +radio_make_control(GwyParamTable *partable, guint i, const GwyParamDefItem *def) { GwyParamTablePrivate *priv = partable->priv; GwyParamControl *control = priv->controls + i; @@ -5111,7 +5292,7 @@ g_return_if_fail(control->type == GWY_PARAM_CONTROL_RADIO); make_control_common(partable, i); - construct_radio_widgets(partable, i, params, def); + construct_radio_widgets(partable, i, def); table = GTK_TABLE(priv->widget); if (control->label) { gwy_debug("attach %s at %d..%d", g_type_name(G_TYPE_FROM_INSTANCE(control->label)), row, row+1); @@ -5129,8 +5310,7 @@ } static void -radio_header_make_control(GwyParamTable *partable, guint i, - GwyParams *params, const GwyParamDefItem *def) +radio_header_make_control(GwyParamTable *partable, guint i, const GwyParamDefItem *def) { GwyParamTablePrivate *priv = partable->priv; GwyParamControl *control = priv->controls + i; @@ -5140,7 +5320,7 @@ g_return_if_fail(def->desc); make_control_common(partable, i); - construct_radio_widgets(partable, i, params, def); + construct_radio_widgets(partable, i, def); gtk_table_attach(GTK_TABLE(priv->widget), control->label, 0, 2, row, row+1, GTK_FILL, 0, 0, 0); gtk_widget_show(control->label); gwy_debug("attach %s at %d..%d", g_type_name(G_TYPE_FROM_INSTANCE(control->label)), row, row+1); @@ -5148,8 +5328,7 @@ } static void -radio_item_make_control(GwyParamTable *partable, guint i, - GwyParams *params, const GwyParamDefItem *def) +radio_item_make_control(GwyParamTable *partable, guint i, const GwyParamDefItem *def) { GwyParamTablePrivate *priv = partable->priv; GwyParamControl *control = priv->controls + i; @@ -5160,7 +5339,7 @@ g_return_if_fail(control->type == GWY_PARAM_CONTROL_RADIO_ITEM); make_control_common(partable, i); - construct_radio_widgets(partable, i, params, def); + construct_radio_widgets(partable, i, def); for (list = gtk_radio_button_get_group(GTK_RADIO_BUTTON(control->widget)); list; list = g_slist_next(list)) { gint buttonvalue = gwy_radio_button_get_value(GTK_WIDGET(list->data)); if (buttonvalue == radioitem->value) { @@ -5175,8 +5354,7 @@ } static void -radio_row_make_control(GwyParamTable *partable, guint i, - GwyParams *params, const GwyParamDefItem *def) +radio_row_make_control(GwyParamTable *partable, guint i, const GwyParamDefItem *def) { GwyParamTablePrivate *priv = partable->priv; GwyParamControl *control = priv->controls + i; @@ -5190,7 +5368,7 @@ hbox = gwy_hbox_new(GWY_PARAM_TABLE_COLSEP); gtk_table_attach(GTK_TABLE(priv->widget), hbox, 0, 2, row, row+1, GTK_FILL, 0, 0, 0); - construct_radio_widgets(partable, i, params, def); + construct_radio_widgets(partable, i, def); /* We are attaching from the end so the order needs to be reversed. */ list = gtk_radio_button_get_group(GTK_RADIO_BUTTON(control->widget)); list = g_slist_reverse(g_slist_copy(list)); @@ -5202,13 +5380,12 @@ gtk_box_pack_start(GTK_BOX(hbox), control->label, FALSE, FALSE, 0); update_control_unit_label(control, partable); if ((ienabler = find_aux_for_control(partable, &priv->enabler, control->id)) >= 0) - enabler_make_control(partable, ienabler, i, params); + enabler_make_control(partable, ienabler, i); update_control_sensitivity(partable, i); } static void -radio_buttons_make_control(GwyParamTable *partable, guint i, - GwyParams *params, const GwyParamDefItem *def) +radio_buttons_make_control(GwyParamTable *partable, guint i, const GwyParamDefItem *def) { GwyParamTablePrivate *priv = partable->priv; GwyParamControl *control = priv->controls + i; @@ -5241,7 +5418,7 @@ gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 0); } list = gtk_radio_button_get_group(GTK_RADIO_BUTTON(button)); - gwy_radio_buttons_set_current(list, gwy_params_get_enum(params, id)); + gwy_radio_buttons_set_current(list, gwy_params_get_enum(priv->params, id)); gwy_debug("attach %s at %d..%d", g_type_name(G_TYPE_FROM_INSTANCE(list->data)), row, row+1); control->widget = GTK_WIDGET(list->data); while (list) { @@ -5256,13 +5433,12 @@ } update_control_unit_label(control, partable); if ((ienabler = find_aux_for_control(partable, &priv->enabler, control->id)) >= 0) - enabler_make_control(partable, ienabler, i, params); + enabler_make_control(partable, ienabler, i); update_control_sensitivity(partable, i); } static void -construct_radio_widgets(GwyParamTable *partable, guint i, - GwyParams *params, const GwyParamDefItem *def) +construct_radio_widgets(GwyParamTable *partable, guint i, const GwyParamDefItem *def) { GwyParamTablePrivate *priv = partable->priv; GwyParamControl *controls = priv->controls, *control = controls + i; @@ -5288,7 +5464,7 @@ gtk_misc_set_alignment(GTK_MISC(control->label), 0.0, 0.5); } list = gwy_radio_buttons_create(def->def.e.table, def->def.e.nvalues, G_CALLBACK(radio_changed), partable, - gwy_params_get_enum(params, id)); + gwy_params_get_enum(priv->params, id)); control->widget = GTK_WIDGET(list->data); while (list) { g_object_set_qdata(G_OBJECT(list->data), param_control_quark, GUINT_TO_POINTER(i)); @@ -5299,8 +5475,7 @@ } static void -checkboxes_make_control(GwyParamTable *partable, guint i, - GwyParams *params, const GwyParamDefItem *def) +checkboxes_make_control(GwyParamTable *partable, guint i, const GwyParamDefItem *def) { GwyParamTablePrivate *priv = partable->priv; GwyParamControl *control = priv->controls + i; @@ -5311,7 +5486,7 @@ g_return_if_fail(control->type == GWY_PARAM_CONTROL_CHECKBOXES); make_control_common(partable, i); - construct_checkbox_widgets(partable, i, params, def); + construct_checkbox_widgets(partable, i, def); table = GTK_TABLE(priv->widget); if (control->label) { gwy_debug("attach %s at %d..%d", g_type_name(G_TYPE_FROM_INSTANCE(control->label)), row, row+1); @@ -5329,8 +5504,7 @@ } static void -construct_checkbox_widgets(GwyParamTable *partable, guint i, - GwyParams *params, const GwyParamDefItem *def) +construct_checkbox_widgets(GwyParamTable *partable, guint i, const GwyParamDefItem *def) { GwyParamTablePrivate *priv = partable->priv; GwyParamControl *controls = priv->controls, *control = controls + i; @@ -5356,7 +5530,7 @@ gtk_misc_set_alignment(GTK_MISC(control->label), 0.0, 0.5); } list = gwy_check_boxes_create(def->def.f.table, def->def.f.nvalues, G_CALLBACK(checkbox_changed), partable, - gwy_params_get_flags(params, id)); + gwy_params_get_flags(priv->params, id)); control->widget = GTK_WIDGET(list->data); while (list) { g_object_set_qdata(G_OBJECT(list->data), param_control_quark, GUINT_TO_POINTER(i)); @@ -5366,10 +5540,10 @@ } static void -data_id_make_control(GwyParamTable *partable, guint i, - GwyParams *params, const GwyParamDefItem *def) +data_id_make_control(GwyParamTable *partable, guint i, const GwyParamDefItem *def) { GwyParamTablePrivate *priv = partable->priv; + GwyParams *params = priv->params; GwyParamControl *control = priv->controls + i; GwyParamControlType type = control->type; GwyParamControlDataChooser *datachooser = (GwyParamControlDataChooser*)control->impl; @@ -5423,7 +5597,7 @@ attach_hbox_row(partable, row, control, (control->label_text ? control->label_text : def->desc)); update_control_unit_label(control, partable); if ((ienabler = find_aux_for_control(partable, &priv->enabler, control->id)) >= 0) - enabler_make_control(partable, ienabler, i, params); + enabler_make_control(partable, ienabler, i); update_control_sensitivity(partable, i); if (type == GWY_PARAM_CONTROL_GRAPH_ID_COMBO) @@ -5444,10 +5618,10 @@ } static void -curve_no_make_control(GwyParamTable *partable, guint i, - GwyParams *params, const GwyParamDefItem *def) +curve_no_make_control(GwyParamTable *partable, guint i, const GwyParamDefItem *def) { GwyParamTablePrivate *priv = partable->priv; + GwyParams *params = priv->params; GwyParamControl *control = priv->controls + i; GwyParamControlType type = control->type; GwyParamControlCurveChooser *curvechooser = (GwyParamControlCurveChooser*)control->impl; @@ -5479,7 +5653,7 @@ attach_hbox_row(partable, row, control, (control->label_text ? control->label_text : def->desc)); update_control_unit_label(control, partable); if ((ienabler = find_aux_for_control(partable, &priv->enabler, control->id)) >= 0) - enabler_make_control(partable, ienabler, i, params); + enabler_make_control(partable, ienabler, i); update_control_sensitivity(partable, i); } @@ -5491,10 +5665,10 @@ } static void -slider_make_control(GwyParamTable *partable, guint i, - GwyParams *params, const GwyParamDefItem *def) +slider_make_control(GwyParamTable *partable, guint i, const GwyParamDefItem *def) { GwyParamTablePrivate *priv = partable->priv; + GwyParams *params = priv->params; GwyParamControl *control = priv->controls + i; GwyParamControlSlider *slider = (GwyParamControlSlider*)control->impl; gint row = control->row, id = control->id, ienabler; @@ -5535,11 +5709,11 @@ gtk_table_attach(GTK_TABLE(priv->widget), slider->spin, 1, 2, row, row+1, GTK_FILL, 0, 0, 0); update_control_unit_label(control, partable); if ((ienabler = find_aux_for_control(partable, &priv->enabler, id)) >= 0) - enabler_make_control(partable, ienabler, i, params); + enabler_make_control(partable, ienabler, i); gtk_widget_show(control->widget); gtk_widget_show(slider->spin); if (slider->has_alt) - alt_make_control(partable, i, params, def); + alt_make_control(partable, i, def); update_control_sensitivity(partable, i); g_signal_connect(slider->adj, "value-changed", G_CALLBACK(slider_value_changed), partable); g_signal_connect(slider->spin, "input", G_CALLBACK(slider_spin_input), partable); @@ -5547,8 +5721,7 @@ } static void -alt_make_control(GwyParamTable *partable, guint i, - G_GNUC_UNUSED GwyParams *params, G_GNUC_UNUSED const GwyParamDefItem *def) +alt_make_control(GwyParamTable *partable, guint i, G_GNUC_UNUSED const GwyParamDefItem *def) { GwyParamTablePrivate *priv = partable->priv; GwyParamControl *control = priv->controls + i; @@ -5585,8 +5758,7 @@ } static void -entry_make_control(GwyParamTable *partable, guint i, - GwyParams *params, const GwyParamDefItem *def) +entry_make_control(GwyParamTable *partable, guint i, const GwyParamDefItem *def) { GwyParamTablePrivate *priv = partable->priv; GwyParamControl *control = priv->controls + i; @@ -5617,7 +5789,7 @@ update_control_unit_label(control, partable); if ((ienabler = find_aux_for_control(partable, &priv->enabler, control->id)) >= 0) - enabler_make_control(partable, ienabler, i, params); + enabler_make_control(partable, ienabler, i); gtk_widget_show(control->widget); if (control->label) gtk_widget_show(control->label); @@ -5630,8 +5802,63 @@ } static void -mask_color_make_control(GwyParamTable *partable, guint i, - GwyParams *params, const GwyParamDefItem *def) +range_from_make_control(GwyParamTable *partable, guint i, const GwyParamDefItem *def) +{ + GwyParamTablePrivate *priv = partable->priv; + GwyParamControl *control = priv->controls + i; + gint row = control->row, ito; + + g_return_if_fail(control->type == GWY_PARAM_CONTROL_RANGE_FROM); + make_control_common(partable, i); + + control->widget = gtk_entry_new(); + g_object_set_qdata(G_OBJECT(control->widget), param_control_quark, GUINT_TO_POINTER(i)); + gwy_debug("attach %s at %d..%d", g_type_name(G_TYPE_FROM_INSTANCE(control->widget)), row, row+1); + gtk_entry_set_width_chars(GTK_ENTRY(control->widget), 9); + attach_hbox_row(partable, row, control, (control->label_text ? control->label_text : def->desc)); + update_control_unit_label(control, partable); + range_output(partable, control); + + ito = find_aux_for_control(partable, &priv->range, control->id); + g_assert(ito >= 0.0); + range_to_make_control(partable, ito, i); + + gwy_widget_set_activate_on_unfocus(control->widget, TRUE); + g_signal_connect(control->widget, "activate", G_CALLBACK(range_activated), partable); +} + +static void +range_to_make_control(GwyParamTable *partable, guint i, guint ifrom) +{ + GwyParamTablePrivate *priv = partable->priv; + GwyParamControl *control = priv->controls + i, *control_from = priv->controls + ifrom; + const gchar *label; + GtkWidget *hbox; + + g_return_if_fail(control->type == GWY_PARAM_CONTROL_RANGE_TO); + hbox = gtk_widget_get_ancestor(control_from->widget, GTK_TYPE_HBOX); + g_return_if_fail(hbox); + + control->widget = gtk_entry_new(); + g_object_set_qdata(G_OBJECT(control->widget), param_control_quark, GUINT_TO_POINTER(i)); + gwy_debug("attach %s to hbox", g_type_name(G_TYPE_FROM_INSTANCE(control->widget))); + gtk_entry_set_width_chars(GTK_ENTRY(control->widget), 9); + gtk_box_pack_end(GTK_BOX(hbox), control->widget, FALSE, FALSE, 0); + + /* TODO: Perhaps make modifiable. */ + label = gwy_sgettext("range|to"); + gtk_box_pack_end(GTK_BOX(hbox), gtk_label_new(label), FALSE, FALSE, GWY_PARAM_TABLE_COLSEP); + + gtk_box_reorder_child(GTK_BOX(hbox), control_from->widget, -1); + + range_output(partable, control); + + gwy_widget_set_activate_on_unfocus(control->widget, TRUE); + g_signal_connect(control->widget, "activate", G_CALLBACK(range_activated), partable); +} + +static void +mask_color_make_control(GwyParamTable *partable, guint i, const GwyParamDefItem *def) { GwyParamTablePrivate *priv = partable->priv; GwyParamControl *control = priv->controls + i; @@ -5644,20 +5871,19 @@ control->widget = gwy_color_button_new(); gwy_debug("attach %s at %d..%d", g_type_name(G_TYPE_FROM_INSTANCE(control->widget)), row, row+1); gwy_color_button_set_use_alpha(GWY_COLOR_BUTTON(control->widget), TRUE); - color = gwy_params_get_color(params, control->id); + color = gwy_params_get_color(priv->params, control->id); gwy_color_button_set_color(GWY_COLOR_BUTTON(control->widget), &color); g_object_set_qdata(G_OBJECT(control->widget), param_control_quark, GUINT_TO_POINTER(i)); attach_hbox_row(partable, row, control, (control->label_text ? control->label_text : def->desc)); update_control_unit_label(control, partable); if ((ienabler = find_aux_for_control(partable, &priv->enabler, control->id)) >= 0) - enabler_make_control(partable, ienabler, i, params); + enabler_make_control(partable, ienabler, i); update_control_sensitivity(partable, i); g_signal_connect(control->widget, "clicked", G_CALLBACK(mask_color_run_selector), partable); } static void -report_make_control(GwyParamTable *partable, guint i, - GwyParams *params, const GwyParamDefItem *def) +report_make_control(GwyParamTable *partable, guint i, const GwyParamDefItem *def) { GwyParamTablePrivate *priv = partable->priv; GwyParamControl *control = priv->controls + i; @@ -5669,7 +5895,7 @@ g_return_if_fail(control->type == GWY_PARAM_CONTROL_REPORT); make_control_common(partable, i); - report_type = gwy_params_get_report_type(params, control->id); + report_type = gwy_params_get_report_type(priv->params, control->id); control->widget = gwy_results_export_new(report_type); g_object_set_qdata(G_OBJECT(control->widget), param_control_quark, GUINT_TO_POINTER(i)); gwy_debug("attach %s at %d..%d", g_type_name(G_TYPE_FROM_INSTANCE(control->widget)), row, row+1); @@ -5685,9 +5911,78 @@ report_ensure_actions(control, partable); } +static GtkWidget* +hold_selection_make_toggle(GwyHoldSelectionFlags value, + const gchar *stock_id, + const GwyParamDefItem *def, + GtkWidget *hbox, + GtkSizeGroup *sizegroup) +{ + GtkWidget *button; + + button = gtk_toggle_button_new(); + gtk_container_add(GTK_CONTAINER(button), gtk_image_new_from_stock(stock_id, GTK_ICON_SIZE_SMALL_TOOLBAR)); + gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); + gtk_widget_set_tooltip_text(button, + gwy_sgettext(gwy_enum_to_string(value, def->def.f.table, def->def.f.nvalues))); + gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 0); + gtk_size_group_add_widget(sizegroup, button); + + return button; +} + +static void +hold_selection_set_up_button(GtkWidget *button, + GwyHoldSelectionFlags value, GwyHoldSelectionFlags flags, + guint i, GwyParamTable *partable) +{ + g_object_set_qdata(G_OBJECT(button), param_control_quark, GUINT_TO_POINTER(i)); + g_object_set_data(G_OBJECT(button), "gwy-checkboxes-key", GUINT_TO_POINTER(value)); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), flags & value); + g_signal_connect(button, "toggled", G_CALLBACK(hold_selection_changed), partable); +} + static void -unit_chooser_make_control(GwyParamTable *partable, guint i, - GwyParams *params, const GwyParamDefItem *def) +hold_selection_make_control(GwyParamTable *partable, guint i, const GwyParamDefItem *def) +{ + GwyParamTablePrivate *priv = partable->priv; + GwyParamControl *control = priv->controls + i; + GwyParamControlHoldSelection *holdsel = (GwyParamControlHoldSelection*)control->impl; + gint row = control->row; + GwyHoldSelectionFlags flags = gwy_params_get_flags(priv->params, control->id); + GtkSizeGroup *sizegroup; + GtkWidget *hbox; + const gchar *label; + + g_return_if_fail(control->type == GWY_PARAM_CONTROL_HOLD_SELECTION); + make_control_common(partable, i); + + label = (control->label_text ? control->label_text : def->desc); + control->widget = gtk_check_button_new_with_mnemonic(label); + gwy_debug("attach %s at %d..%d", g_type_name(G_TYPE_FROM_INSTANCE(control->widget)), row, row+1); + + hbox = gwy_hbox_new(0); + gtk_table_attach(GTK_TABLE(partable->priv->widget), hbox, 0, 2, row, row+1, GTK_EXPAND | GTK_FILL, 0, 0, 0); + gtk_box_pack_start(GTK_BOX(hbox), control->widget, TRUE, TRUE, 0); + + sizegroup = gtk_size_group_new(GTK_SIZE_GROUP_BOTH); + /* Pack in reverse order since we pack-end. */ + holdsel->clear = hold_selection_make_toggle(GWY_HOLD_SELECTION_CLEAR, GWY_STOCK_HOLD_SELECTION_CLEAR, + def, hbox, sizegroup); + holdsel->overwrite = hold_selection_make_toggle(GWY_HOLD_SELECTION_OVERWRITE, GWY_STOCK_HOLD_SELECTION_REPLACE, + def, hbox, sizegroup); + g_object_unref(sizegroup); + gtk_widget_show_all(hbox); + + hold_selection_set_up_button(control->widget, GWY_HOLD_SELECTION_HOLD, flags, i, partable); + hold_selection_set_up_button(holdsel->overwrite, GWY_HOLD_SELECTION_OVERWRITE, flags, i, partable); + hold_selection_set_up_button(holdsel->clear, GWY_HOLD_SELECTION_CLEAR, flags, i, partable); + + update_control_sensitivity(partable, i); +} + +static void +unit_chooser_make_control(GwyParamTable *partable, guint i, const GwyParamDefItem *def) { GwyParamTablePrivate *priv = partable->priv; GwyParamControl *control = priv->controls + i; @@ -5700,7 +5995,7 @@ g_return_if_fail(control->type == GWY_PARAM_CONTROL_UNIT_CHOOSER); make_control_common(partable, i); - siunit = gwy_params_get_unit(params, control->id, &power10); + siunit = gwy_params_get_unit(priv->params, control->id, &power10); control->widget = gwy_combo_box_metric_unit_new(G_CALLBACK(unit_chosen), partable, power10 - 6, power10 + 6, siunit, power10); g_object_set_qdata(G_OBJECT(control->widget), param_control_quark, GUINT_TO_POINTER(i)); @@ -5719,8 +6014,7 @@ } static void -random_seed_make_control(GwyParamTable *partable, guint i, - GwyParams *params, const GwyParamDefItem *def) +random_seed_make_control(GwyParamTable *partable, guint i, const GwyParamDefItem *def) { GwyParamTablePrivate *priv = partable->priv; GwyParamControl *control = priv->controls + i; @@ -5733,7 +6027,7 @@ g_return_if_fail(control->type == GWY_PARAM_CONTROL_RANDOM_SEED); make_control_common(partable, i); - value = gwy_params_get_int(params, control->id); + value = gwy_params_get_int(priv->params, control->id); randomseed->adj = GTK_ADJUSTMENT(gtk_adjustment_new(value, 1, 0x7fffffff, 1, 10, 0)); g_object_set_qdata(G_OBJECT(randomseed->adj), param_control_quark, GUINT_TO_POINTER(i)); control->widget = gtk_spin_button_new(randomseed->adj, 0, 0); @@ -6646,6 +6940,46 @@ } static void +hold_selection_changed(GtkWidget *button, GwyParamTable *partable) +{ + guint i = GPOINTER_TO_UINT(g_object_get_qdata(G_OBJECT(button), param_control_quark)); + GwyParamControl *control = partable->priv->controls + i; + gboolean is_set = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)); + GwyHoldSelectionFlags flag_to_set = GPOINTER_TO_UINT(g_object_get_data(G_OBJECT(button), "gwy-checkboxes-key")); + gint id = control->id; + + g_return_if_fail(control->type == GWY_PARAM_CONTROL_HOLD_SELECTION); + if (gwy_params_set_flag(partable->priv->params, id, flag_to_set, is_set)) { + gwy_param_table_param_changed(partable, id); + update_control_sensitivity(partable, i); + } +} + +static void +hold_selection_set_value(GwyParamControl *control, GwyParamTable *partable, + GwyHoldSelectionFlags value, gboolean use_default_instead) +{ + GwyParamTablePrivate *priv = partable->priv; + GwyParams *params = priv->params; + guint i = control - priv->controls; + gboolean changed; + gint id; + + g_return_if_fail(control && control->type == GWY_PARAM_CONTROL_HOLD_SELECTION); + id = control->id; + if (use_default_instead) + changed = gwy_params_reset(params, id); + else + changed = gwy_params_set_flags(params, id, value); + + if (changed) { + if (control->widget) + update_control_sensitivity(partable, i); + gwy_param_table_param_changed(partable, id); + } +} + +static void slider_value_changed(GtkAdjustment *adj, GwyParamTable *partable) { guint i = GPOINTER_TO_UINT(g_object_get_qdata(G_OBJECT(adj), param_control_quark)); @@ -6844,9 +7178,12 @@ spin_max = fabs(spin_max); gwy_debug("digits not set, using spinner range [%g..%g]", spin_min, spin_max); if (spin_min > 0.0) { - /* For all-positive range the minimum value should allow guessing a good precision. Allow slightly - * more precise numbers than the minimum. */ - slider->digits = (gint)ceil(-log10(spin_min) + 0.5); + /* For all-positive range the minimum value should allow guessing a good precision, except when the range + * is small like [0.5, 1]. Allow slightly more precise numbers than the minimum. */ + if (spin_max > 0.0) + slider->digits = (gint)ceil(fmax(-log10(spin_min) + 0.5, -log10(spin_max) + 3.5)); + else + slider->digits = (gint)ceil(-log10(spin_min) + 0.5); } else { /* About 4 decimal places is a good rule of thumb. For range [0..1] we usually like 0.xxx. */ @@ -7127,15 +7464,15 @@ GwyParamControlEntry *entry; gint id = control->id; gboolean changed = FALSE; - const gchar *text; - gchar *end; + gchar *text, *end; g_return_if_fail(control->type == GWY_PARAM_CONTROL_ENTRY); entry = (GwyParamControlEntry*)control->impl; - text = gtk_entry_get_text(gtkentry); if (entry->is_numeric) { if (!find_def_common(partable, id, NULL, &def)) return; + /* Strip whitespace to make the if(!*end) check more friendly. */ + text = g_strstrip(gtk_editable_get_chars(GTK_EDITABLE(gtkentry), 0, -1)); if (entry->is_int) { gint value = strtol(text, &end, 10); if (!*end) { @@ -7150,9 +7487,11 @@ changed = gwy_params_set_double(params, id, value); } } + g_free(text); + } + else { + changed = gwy_params_set_string(params, id, gtk_entry_get_text(gtkentry)); } - else - changed = gwy_params_set_string(params, id, text); /* Do not fight the user on instant edits. It is a bit odd. Any behaviour mixing instant updates with rectifiers * is odd. This one seems to be the least bad one. */ @@ -7180,8 +7519,10 @@ else g_string_printf(entry->str, "%.6g", gwy_params_get_double(params, id)); } - else - g_string_assign(entry->str, gwy_params_get_string(params, id)); + else { + const gchar *s = gwy_params_get_string(params, id); + g_string_assign(entry->str, s ? s : ""); + } gtk_entry_set_text(GTK_ENTRY(control->widget), entry->str->str); } @@ -7199,41 +7540,8 @@ entry_format_double_vf(gdouble value, gpointer user_data) { GwyParamControlEntry *entry = (GwyParamControlEntry*)user_data; - GwySIValueFormat *vf = entry->vf; - GString *str = entry->str; - gdouble v, ldiff; - guint i; - - v = value/vf->magnitude; - if (v == 0.0) - return "0"; - - /* If we have a value too far from vf->magnitude fall back to scientific number notation. */ - ldiff = log10(fabs(v)); - if (ldiff > 3.5 || ldiff < 2.0) { - g_string_printf(str, "%.6g", v); - return str->str; - } - - format_numerical_value(str, v, vf->precision); - /* Remove trailing zeros, but only after a decimal separator. Keep anything with 'e' in it intact. */ - if (strchr(str->str, 'e')) - return str->str; - for (i = str->len; i; i--) { - if (!g_ascii_isdigit(str->str[i-1])) - break; - } - if (i) { - i = str->len; - while (i && str->str[i-1] == '0') - i--; - while (i && !g_ascii_isdigit(str->str[i-1])) - i--; - if (i) - g_string_truncate(str, i); - } - return str->str; + return format_double_vf_common(value, entry->vf, entry->str); } static void @@ -7321,6 +7629,111 @@ } static void +range_input(GtkEntry *gtkentry, GwyParamTable *partable) +{ + guint i = GPOINTER_TO_UINT(g_object_get_qdata(G_OBJECT(gtkentry), param_control_quark)); + GwyParamTablePrivate *priv = partable->priv; + GwyParamControl *control = priv->controls + i; + GwyParams *params = priv->params; + const GwyParamDefItem *def; + GwyParamControlRangeFrom *range; + gint id = control->id; + gboolean changed = FALSE; + gdouble value; + gchar *text, *end; + + g_return_if_fail(control->type == GWY_PARAM_CONTROL_RANGE_FROM + || control->type == GWY_PARAM_CONTROL_RANGE_TO); + if (!find_def_common(partable, id, NULL, &def)) + return; + + range = range_get_impl(control, partable); + /* Strip whitespace to make the if(!*end) check more friendly. */ + text = g_strstrip(gtk_editable_get_chars(GTK_EDITABLE(gtkentry), 0, -1)); + value = g_strtod(text, &end); + if (!*end) { + if (range->vf) + value *= range->vf->magnitude; + value = _gwy_param_def_rectify_double(def, value); + changed = gwy_params_set_double(params, id, value); + } + + range_output(partable, control); + if (changed) + gwy_param_table_param_changed(partable, id); + + g_free(text); +} + +static void +range_output(GwyParamTable *partable, GwyParamControl *control) +{ + GwyParamTablePrivate *priv = partable->priv; + GwyParams *params = priv->params; + GwyParamControlRangeFrom *range; + gint id = control->id; + + range = range_get_impl(control, partable); + if (range->vf) + g_string_assign(range->str, format_double_vf_common(gwy_params_get_double(params, id), range->vf, range->str)); + else + g_string_printf(range->str, "%.6g", gwy_params_get_double(params, id)); + + gtk_entry_set_text(GTK_ENTRY(control->widget), range->str->str); +} + +static void +range_set_value(GwyParamControl *control, GwyParamTable *partable, + gdouble value, gboolean use_default_instead) +{ + GwyParams *params = partable->priv->params; + GwyParamControlRangeFrom *range; + gboolean changed = FALSE; + gint id; + + g_return_if_fail(control); + id = control->id; + range = range_get_impl(control, partable); + g_return_if_fail(range); + + if (use_default_instead) + changed = gwy_params_reset(params, id); + else + changed = gwy_params_set_double(params, id, value); + + /* Update the controls. Make sure the signal is emitted at the very end. */ + if (changed && control->widget) { + _gwy_param_table_in_update(partable, TRUE); + range_output(partable, control); + _gwy_param_table_in_update(partable, FALSE); + } + if (changed) + gwy_param_table_param_changed(partable, id); +} + +static void +range_activated(GtkEntry *gtkentry, GwyParamTable *partable) +{ + range_input(gtkentry, partable); +} + +static GwyParamControlRangeFrom* +range_get_impl(GwyParamControl *control, GwyParamTable *partable) +{ + GwyParamTablePrivate *priv = partable->priv; + gint ifrom; + + if (control->type == GWY_PARAM_CONTROL_RANGE_FROM) + return (GwyParamControlRangeFrom*)control->impl; + + g_return_val_if_fail(control->type == GWY_PARAM_CONTROL_RANGE_TO, NULL); + ifrom = find_control_for_aux(partable, &priv->range, control->id); + g_return_val_if_fail(ifrom >= 0, NULL); + + return (GwyParamControlRangeFrom*)(priv->controls[ifrom].impl); +} + +static void update_control_unit_label(GwyParamControl *control, GwyParamTable *partable) { GwyParamTablePrivate *priv = partable->priv; @@ -7479,6 +7892,10 @@ GwyParamControlUnitChooser *unit = (GwyParamControlUnitChooser*)control->impl; unit->change_button = NULL; } + else if (type == GWY_PARAM_CONTROL_HOLD_SELECTION) { + GwyParamControlHoldSelection *holdsel = (GwyParamControlHoldSelection*)control->impl; + holdsel->overwrite = holdsel->clear = NULL; + } else if (type == GWY_PARAM_CONTROL_RANDOM_SEED) { GwyParamControlRandomSeed *randomseed = (GwyParamControlRandomSeed*)control->impl; randomseed->adj = NULL; @@ -7536,7 +7953,7 @@ gboolean has_mnemonic = FALSE; hbox = gwy_hbox_new(0); - gtk_table_attach(GTK_TABLE(partable->priv->widget), hbox, 0, 2, row, row+1, GTK_FILL, 0, 0, 0); + gtk_table_attach(GTK_TABLE(partable->priv->widget), hbox, 0, 2, row, row+1, GTK_EXPAND | GTK_FILL, 0, 0, 0); if (control->label_text) desc = control->label_text; @@ -7760,6 +8177,44 @@ return NULL; } +static const gchar* +format_double_vf_common(gdouble value, GwySIValueFormat *vf, GString *str) +{ + gdouble v, ldiff; + guint i; + + v = value/vf->magnitude; + if (v == 0.0) + return "0"; + + /* If we have a value too far from vf->magnitude fall back to scientific number notation. */ + ldiff = log10(fabs(v)); + if (ldiff > 3.5 || ldiff < 2.0) { + g_string_printf(str, "%.6g", v); + return str->str; + } + + format_numerical_value(str, v, vf->precision); + /* Remove trailing zeros, but only after a decimal separator. Keep anything with 'e' in it intact. */ + if (strchr(str->str, 'e')) + return str->str; + + for (i = str->len; i; i--) { + if (!g_ascii_isdigit(str->str[i-1])) + break; + } + if (i) { + i = str->len; + while (i && str->str[i-1] == '0') + i--; + while (i && !g_ascii_isdigit(str->str[i-1])) + i--; + if (i) + g_string_truncate(str, i); + } + return str->str; +} + /* NB: value is the value to display, after any transformations. */ static void format_numerical_value(GString *str, gdouble value, gint digits) @@ -7941,7 +8396,7 @@ control_can_integrate_enabler(GwyParamControlType type) { return (type == GWY_PARAM_CONTROL_SLIDER - || type == GWY_PARAM_CONTROL_ENTRY /* TODO: But it is not implemented yet! */ + || type == GWY_PARAM_CONTROL_ENTRY || type == GWY_PARAM_CONTROL_COMBO || type == GWY_PARAM_CONTROL_IMAGE_ID_COMBO || type == GWY_PARAM_CONTROL_GRAPH_ID_COMBO @@ -7963,6 +8418,7 @@ || type == GWY_PARAM_CONTROL_CHECKBOX || type == GWY_PARAM_CONTROL_SLIDER || type == GWY_PARAM_CONTROL_ENTRY + || type == GWY_PARAM_CONTROL_RANGE_FROM || type == GWY_PARAM_CONTROL_COMBO || type == GWY_PARAM_CONTROL_IMAGE_ID_COMBO || type == GWY_PARAM_CONTROL_GRAPH_ID_COMBO @@ -7993,6 +8449,7 @@ || type == GWY_PARAM_CONTROL_LAWN_CURVE_COMBO || type == GWY_PARAM_CONTROL_LAWN_SEGMENT_COMBO || type == GWY_PARAM_CONTROL_UNIT_CHOOSER + || type == GWY_PARAM_CONTROL_HOLD_SELECTION || type == GWY_PARAM_CONTROL_RADIO_ROW || type == GWY_PARAM_CONTROL_RADIO_BUTTONS || type == GWY_PARAM_CONTROL_MASK_COLOR diff -Nru gwyddion-2.62/app/param-table.h gwyddion-2.63/app/param-table.h --- gwyddion-2.62/app/param-table.h 2022-10-14 14:50:08.000000000 +0000 +++ gwyddion-2.63/app/param-table.h 2023-02-21 17:35:20.000000000 +0000 @@ -1,6 +1,6 @@ /* - * $Id: param-table.h 25090 2022-10-14 14:50:06Z yeti-dn $ - * Copyright (C) 2021-2022 David Necas (Yeti). + * $Id: param-table.h 25223 2023-02-21 17:35:20Z yeti-dn $ + * Copyright (C) 2021-2023 David Necas (Yeti). * E-mail: yeti@gwyddion.net. * * This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public @@ -251,6 +251,9 @@ void gwy_param_table_entry_set_instant_changes(GwyParamTable *partable, gint id, gboolean setting); +void gwy_param_table_append_range (GwyParamTable *partable, + gint id_from, + gint id_to); void gwy_param_table_append_unit_chooser (GwyParamTable *partable, gint id); void gwy_param_table_append_mask_color (GwyParamTable *partable, @@ -291,6 +294,8 @@ GwyCreateTextFunc format_report, gpointer user_data, GDestroyNotify destroy); +void gwy_param_table_append_hold_selection (GwyParamTable *partable, + gint id); void gwy_param_table_append_seed (GwyParamTable *partable, gint id); void gwy_param_table_append_message (GwyParamTable *partable, diff -Nru gwyddion-2.62/app/settings.c gwyddion-2.63/app/settings.c --- gwyddion-2.62/app/settings.c 2021-11-26 10:44:03.000000000 +0000 +++ gwyddion-2.63/app/settings.c 2023-01-25 15:03:59.000000000 +0000 @@ -1,5 +1,5 @@ /* - * $Id: settings.c 24546 2021-11-26 10:44:01Z yeti-dn $ + * $Id: settings.c 25204 2023-01-25 15:03:59Z yeti-dn $ * Copyright (C) 2003-2006 David Necas (Yeti), Petr Klapetek. * E-mail: yeti@gwyddion.net, klapetek@gwyddion.net. * @@ -150,7 +150,9 @@ * @filename: A filename to read settings from. * @error: Location to store loading error to, or %NULL. * - * Loads settings file. + * Initialises settings by loading a settings file. + * + * Any existing settings are discarded. Consider gwy_app_settings_merge_string() for piecewise settings creation. * * Returns: Whether it succeeded. In either case you can call gwy_app_settings_get() then to obtain either the loaded * settings or the old ones (if failed), or an empty #GwyContainer. @@ -173,8 +175,7 @@ } if (!size || !buffer) { - g_set_error(error, GWY_APP_SETTINGS_ERROR, GWY_APP_SETTINGS_ERROR_EMPTY, - _("File is empty.")); + g_set_error(error, GWY_APP_SETTINGS_ERROR, GWY_APP_SETTINGS_ERROR_EMPTY, _("File is empty.")); g_free(buffer); return FALSE; } @@ -189,8 +190,7 @@ } new_settings = gwy_container_deserialize_from_text(buffer + strlen(magic_header)); g_free(buffer); - if (!GWY_IS_CONTAINER(new_settings)) { - GWY_OBJECT_UNREF(new_settings); + if (!new_settings) { g_set_error(error, GWY_APP_SETTINGS_ERROR, GWY_APP_SETTINGS_ERROR_CORRUPT, _("File is corrupted, deserialization failed.")); return FALSE; @@ -208,13 +208,60 @@ } /** + * gwy_app_settings_merge_string: + * @s: String contaning a part of Gwyddion settings file. + * @overwrite: %TRUE to replace existing settings; %FALSE to only set values which do not exist. + * @error: Location to store loading error to, or %NULL. + * + * Loads settings from a string and adds them to the global settings. + * + * The contents of string @s should look like a Gwyddion settings file, including the header line "Gwyddion Settings + * 1.0", even though it is optional. + * + * If no settings exist when this function is called, they are initialised like calling gwy_app_settings_get(). + * + * Returns: Whether it succeeded. + * + * Since: 2.63 + **/ +gboolean +gwy_app_settings_merge_string(const gchar *s, + gboolean overwrite, + GError **error) +{ + GwyContainer *settings, *new_settings; + const gchar *s_to_parse; + gchar *buffer = NULL; + + /* Do it first for determinisic behaviour. */ + settings = gwy_app_settings_get(); + + if (!s || !*s) + return TRUE; + + buffer = gwy_strkill(g_strdup(s), "\r"); + s_to_parse = (g_str_has_prefix(buffer, magic_header) ? buffer + strlen(magic_header) : buffer); + new_settings = gwy_container_deserialize_from_text(s_to_parse); + g_free(buffer); + if (!new_settings) { + g_set_error(error, GWY_APP_SETTINGS_ERROR, GWY_APP_SETTINGS_ERROR_CORRUPT, + _("File is corrupted, deserialization failed.")); + return FALSE; + } + + gwy_container_transfer(new_settings, settings, "/", "/", overwrite); + g_object_unref(new_settings); + + return TRUE; +} + +/** * gwy_app_settings_create_config_dir: * @error: Location to store loading error to, or %NULL. * * Create gwyddion config directory. * - * Returns: Whether it succeeded (also returns %TRUE if the directory already - * exists). + * Returns: Whether it succeeded (also returns %TRUE if the directory already exists). **/ gboolean gwy_app_settings_create_config_dir(GError **error) @@ -319,11 +366,9 @@ gwy_container_set_double_by_name(settings, "/mask/alpha", default_mask_color.a); } if (!gwy_container_contains_by_name(settings, "/app/gradients/preferred")) - gwy_container_set_string_by_name(settings, "/app/gradients/preferred", g_strdup(default_preferred_gradients)); - if (!gwy_container_contains_by_name(settings, "/app/glmaterials/preferred")) { - gwy_container_set_string_by_name(settings, "/app/glmaterials/preferred", - g_strdup(default_preferred_gl_materials)); - } + gwy_container_set_const_string_by_name(settings, "/app/gradients/preferred", default_preferred_gradients); + if (!gwy_container_contains_by_name(settings, "/app/glmaterials/preferred")) + gwy_container_set_const_string_by_name(settings, "/app/glmaterials/preferred", default_preferred_gl_materials); if (!gwy_container_contains_by_name(settings, "/app/toolbox/visible/graph")) gwy_container_set_boolean_by_name(settings, "/app/toolbox/visible/graph", TRUE); if (!gwy_container_contains_by_name(settings, "/app/toolbox/visible/proc")) diff -Nru gwyddion-2.62/app/settings.h gwyddion-2.63/app/settings.h --- gwyddion-2.62/app/settings.h 2021-11-26 10:44:03.000000000 +0000 +++ gwyddion-2.63/app/settings.h 2023-01-25 15:03:59.000000000 +0000 @@ -1,5 +1,5 @@ /* - * $Id: settings.h 24546 2021-11-26 10:44:01Z yeti-dn $ + * $Id: settings.h 25204 2023-01-25 15:03:59Z yeti-dn $ * Copyright (C) 2003-2006 David Necas (Yeti), Petr Klapetek. * E-mail: yeti@gwyddion.net, klapetek@gwyddion.net. * @@ -39,6 +39,9 @@ GError **error); gboolean gwy_app_settings_load (const gchar *filename, GError **error); +gboolean gwy_app_settings_merge_string (const gchar *s, + gboolean overwrite, + GError **error); gboolean gwy_app_settings_create_config_dir (GError **error); gchar** gwy_app_settings_get_module_dirs (void); gchar* gwy_app_settings_get_settings_filename (void); diff -Nru gwyddion-2.62/config.h.in gwyddion-2.63/config.h.in --- gwyddion-2.62/config.h.in 2022-11-03 09:46:05.000000000 +0000 +++ gwyddion-2.63/config.h.in 2023-06-13 13:11:23.000000000 +0000 @@ -169,6 +169,9 @@ /* Define if we have the ZLIB library. */ #undef HAVE_ZLIB +/* Define if we have the Zzip package. */ +#undef HAVE_ZZIP + /* Define to the sub-directory where libtool stores uninstalled libraries. */ #undef LT_OBJDIR diff -Nru gwyddion-2.62/config.rpath gwyddion-2.63/config.rpath --- gwyddion-2.62/config.rpath 2018-04-11 13:13:53.000000000 +0000 +++ gwyddion-2.63/config.rpath 2022-10-17 15:17:21.000000000 +0000 @@ -1,8 +1,8 @@ -#! /bin/sh +#!/usr/bin/sh # Output a system dependent set of variables, describing how to set the # run time search path of shared libraries in an executable. # -# Copyright 1996-2016 Free Software Foundation, Inc. +# Copyright 1996-2020 Free Software Foundation, Inc. # Taken from GNU libtool, 2001 # Originally by Gordon Matzigkeit , 1996 # diff -Nru gwyddion-2.62/configure gwyddion-2.63/configure --- gwyddion-2.62/configure 2022-11-03 09:45:41.000000000 +0000 +++ gwyddion-2.63/configure 2023-06-13 13:11:20.000000000 +0000 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.71 for Gwyddion 2.62. +# Generated by GNU Autoconf 2.71 for Gwyddion 2.63. # # Report bugs to . # @@ -681,8 +681,8 @@ # Identity of this package. PACKAGE_NAME='Gwyddion' PACKAGE_TARNAME='gwyddion' -PACKAGE_VERSION='2.62' -PACKAGE_STRING='Gwyddion 2.62' +PACKAGE_VERSION='2.63' +PACKAGE_STRING='Gwyddion 2.63' PACKAGE_BUGREPORT='klapetek@gwyddion.net' PACKAGE_URL='' @@ -795,12 +795,16 @@ PNG_CFLAGS HAVE_ANY_ZIP_FALSE HAVE_ANY_ZIP_TRUE +HAVE_ZZIP_FALSE +HAVE_ZZIP_TRUE HAVE_LIBZIP_FALSE HAVE_LIBZIP_TRUE HAVE_MINIZIP2_FALSE HAVE_MINIZIP2_TRUE HAVE_MINIZIP1_FALSE HAVE_MINIZIP1_TRUE +ZZIP_LIBS +ZZIP_CFLAGS MINIZIP2_LIBS MINIZIP2_CFLAGS LIBZIP_LIBS @@ -1127,6 +1131,8 @@ LIBZIP_LIBS MINIZIP2_CFLAGS MINIZIP2_LIBS +ZZIP_CFLAGS +ZZIP_LIBS PNG_CFLAGS PNG_LIBS WEBP_CFLAGS @@ -1690,7 +1696,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures Gwyddion 2.62 to adapt to many kinds of systems. +\`configure' configures Gwyddion 2.63 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1765,7 +1771,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of Gwyddion 2.62:";; + short | recursive ) echo "Configuration of Gwyddion 2.63:";; esac cat <<\_ACEOF @@ -1832,8 +1838,8 @@ --with-gl OpenGL 3D view widgets [default=yes] --with-zlib build with zlib support [default=yes] --with-bzip2 build with bzip2 support [default=yes] - --with-zip=ZIPLIB ZIP support library (minizip1, minizip2, libzip or - auto) + --with-zip=ZIPLIB ZIP support library (minizip1, minizip2, libzip, + zzip or auto) --with-hdf5=yes/no/PATH location of h5cc for HDF5 configuration --with-libxml2 build with libxml2 support [default=yes] --with-jansson build with jansson support [default=yes] @@ -1912,6 +1918,8 @@ C compiler flags for MINIZIP2, overriding pkg-config MINIZIP2_LIBS linker flags for MINIZIP2, overriding pkg-config + ZZIP_CFLAGS C compiler flags for ZZIP, overriding pkg-config + ZZIP_LIBS linker flags for ZZIP, overriding pkg-config PNG_CFLAGS C compiler flags for PNG, overriding pkg-config PNG_LIBS linker flags for PNG, overriding pkg-config WEBP_CFLAGS C compiler flags for WEBP, overriding pkg-config @@ -2000,7 +2008,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -Gwyddion configure 2.62 +Gwyddion configure 2.63 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. @@ -2645,7 +2653,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by Gwyddion $as_me 2.62, which was +It was created by Gwyddion $as_me 2.63, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -4220,7 +4228,7 @@ # Define the identity of the package. PACKAGE='gwyddion' - VERSION='2.62' + VERSION='2.63' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h @@ -4390,8 +4398,8 @@ GWY_VERSION_MAJOR=2 -GWY_VERSION_MINOR=62 -GWY_VERSION_STRING='"2.62"' +GWY_VERSION_MINOR=63 +GWY_VERSION_STRING='"2.63"' @@ -20939,6 +20947,46 @@ fi + # Until we switch to C99 or newer, we want diagnostics for C99+ code. + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC knows -std=gnu90" >&5 +printf %s "checking whether $CC knows -std=gnu90... " >&6; } +if test ${ac_cv_prog_cc_option_STDGNU90+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ye_PROG_CC_OPTION_cflags="$CFLAGS" + CFLAGS="$CFLAGS -Werror `echo x-std=gnu90 | sed 's/^x-Wno-/x-W/' | sed 's/^x//'`" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_option_STDGNU90=yes +else $as_nop + ac_cv_prog_cc_option_STDGNU90=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS="$ye_PROG_CC_OPTION_cflags" +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_option_STDGNU90" >&5 +printf "%s\n" "$ac_cv_prog_cc_option_STDGNU90" >&6; } +if test "$ac_cv_prog_cc_option_STDGNU90" = "yes"; then + PROG_CC_STDGNU90="-std=gnu90" + +else + PROG_CC_STDGNU90= + +fi + # Flags we can't use: # -Wstrict-protoypes makes gtkitemfactory.h noisy, but they have a # comment there they can't fix it due to compatibility @@ -23222,19 +23270,23 @@ # It used to be preferred over libzip and is well tested, but is now obsolete. # # libzip -# Alternative to minizip. +# Alternative to minizip. Perhaps a better one. # # minizip 2.x or 3.x or whatever # The new branch that broke everything and seems to be under heavy development. # Not sure since which version it is actually usable. They happily break API # often; 3.x seems compatible but who knows what the future will bring. +# +# Zzip +# A simple fallback library, not good for sequential scanning of archives (see +# notes in gwyzip.h). enable_zip=auto # Check whether --with-zip was given. if test ${with_zip+y} then : withval=$with_zip; case "$withval" in - minizip1|minizip2|libzip|auto|no) enable_zip="$withval";; + minizip1|minizip2|libzip|zzip|auto|no) enable_zip="$withval";; yes) enable_zip=auto;; *) as_fn_error $? "bad balue \"$withval\" for --with-zip" "$LINENO" 5 ;; esac @@ -23245,6 +23297,7 @@ enable_minizip1=no enable_minizip2=no enable_libzip=no +enable_zzip=no if test "x$found_zip" = xno && test "x$enable_zip" = xminizip1 -o "x$enable_zip" = xauto; then pkg_failed=no @@ -23494,6 +23547,83 @@ CPPFLAGS="$MINIZIP2_ORIG_CPPFLAGS" fi +if test "x$found_zip" = xno && test "x$enable_zip" = xzzip -o "x$enable_zip" = xauto; then + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ZZIP" >&5 +printf %s "checking for ZZIP... " >&6; } + +if test -n "$PKG_CONFIG"; then + if test -n "$ZZIP_CFLAGS"; then + pkg_cv_ZZIP_CFLAGS="$ZZIP_CFLAGS" + else + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"zziplib\""; } >&5 + ($PKG_CONFIG --exists --print-errors "zziplib") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_ZZIP_CFLAGS=`$PKG_CONFIG --cflags "zziplib" 2>/dev/null` +else + pkg_failed=yes +fi + fi +else + pkg_failed=untried +fi +if test -n "$PKG_CONFIG"; then + if test -n "$ZZIP_LIBS"; then + pkg_cv_ZZIP_LIBS="$ZZIP_LIBS" + else + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"zziplib\""; } >&5 + ($PKG_CONFIG --exists --print-errors "zziplib") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_ZZIP_LIBS=`$PKG_CONFIG --libs "zziplib" 2>/dev/null` +else + pkg_failed=yes +fi + fi +else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + ZZIP_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "zziplib"` + else + ZZIP_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "zziplib"` + fi + # Put the nasty error message in config.log where it belongs + echo "$ZZIP_PKG_ERRORS" >&5 + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + : +elif test $pkg_failed = untried; then + : +else + ZZIP_CFLAGS=$pkg_cv_ZZIP_CFLAGS + ZZIP_LIBS=$pkg_cv_ZZIP_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + +printf "%s\n" "#define HAVE_ZZIP 1" >>confdefs.h + + found_zip=yes + enable_zzip=yes +fi +fi if test "x$enable_minizip1" != xno; then HAVE_MINIZIP1_TRUE= HAVE_MINIZIP1_FALSE='#' @@ -23518,6 +23648,14 @@ HAVE_LIBZIP_FALSE= fi + if test "x$enable_zzip" != xno; then + HAVE_ZZIP_TRUE= + HAVE_ZZIP_FALSE='#' +else + HAVE_ZZIP_TRUE='#' + HAVE_ZZIP_FALSE= +fi + if test "x$found_zip" != xno; then HAVE_ANY_ZIP_TRUE= HAVE_ANY_ZIP_FALSE='#' @@ -27637,7 +27775,7 @@ COMMON_LDFLAGS="$HOST_LDFLAGS" -COMMON_CFLAGS="$HOST_CFLAGS $WARNING_CFLAGS $GOBJECT_CFLAGS $GMODULE_CFLAGS $GTKGLEXT_CFLAGS $PREMISE_CFLAGS -DGLIB_DISABLE_DEPRECATION_WARNINGS" +COMMON_CFLAGS="$HOST_CFLAGS $PROG_CC_STDGNU90 $WARNING_CFLAGS $GOBJECT_CFLAGS $GMODULE_CFLAGS $GTKGLEXT_CFLAGS $PREMISE_CFLAGS -DGLIB_DISABLE_DEPRECATION_WARNINGS" COMMON_CXXFLAGS="$HOST_CFLAGS $GOBJECT_CFLAGS $GMODULE_CFLAGS $GTKGLEXT_CFLAGS $PREMISE_CFLAGS -DGLIB_DISABLE_DEPRECATION_WARNINGS" @@ -27952,6 +28090,10 @@ as_fn_error $? "conditional \"HAVE_LIBZIP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${HAVE_ZZIP_TRUE}" && test -z "${HAVE_ZZIP_FALSE}"; then + as_fn_error $? "conditional \"HAVE_ZZIP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${HAVE_ANY_ZIP_TRUE}" && test -z "${HAVE_ANY_ZIP_FALSE}"; then as_fn_error $? "conditional \"HAVE_ANY_ZIP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -28386,7 +28528,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by Gwyddion $as_me 2.62, which was +This file was extended by Gwyddion $as_me 2.63, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -28454,7 +28596,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -Gwyddion config.status 2.62 +Gwyddion config.status 2.63 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" diff -Nru gwyddion-2.62/configure.ac gwyddion-2.63/configure.ac --- gwyddion-2.62/configure.ac 2022-11-03 09:43:27.000000000 +0000 +++ gwyddion-2.63/configure.ac 2023-06-13 13:08:24.000000000 +0000 @@ -1,7 +1,7 @@ -# $Id: configure.ac 25136 2022-11-03 09:43:26Z yeti-dn $ +# $Id: configure.ac 25425 2023-06-13 13:08:23Z yeti-dn $ dnl Process this file with autoconf to produce a configure script. m4_define([gwy_version_major],[2]) -m4_define([gwy_version_minor],[62]) +m4_define([gwy_version_minor],[63]) m4_define([gwy_version_string],[gwy_version_major.gwy_version_minor]) AC_INIT([Gwyddion],[gwy_version_string],[klapetek@gwyddion.net]) # Use -release for unstable version libs instead of -version-info, because @@ -366,6 +366,8 @@ # This we need to Python code because macros from Python.h produce lots of # warnings. GWY_PROG_CC_OPTION([FNO_STRICT_ALIASING],[-fno-strict-aliasing],,) + # Until we switch to C99 or newer, we want diagnostics for C99+ code. + GWY_PROG_CC_OPTION([STDGNU90],[-std=gnu90],,) # Flags we can't use: # -Wstrict-protoypes makes gtkitemfactory.h noisy, but they have a # comment there they can't fix it due to compatibility @@ -571,18 +573,22 @@ # It used to be preferred over libzip and is well tested, but is now obsolete. # # libzip -# Alternative to minizip. +# Alternative to minizip. Perhaps a better one. # # minizip 2.x or 3.x or whatever # The new branch that broke everything and seems to be under heavy development. # Not sure since which version it is actually usable. They happily break API # often; 3.x seems compatible but who knows what the future will bring. +# +# Zzip +# A simple fallback library, not good for sequential scanning of archives (see +# notes in gwyzip.h). enable_zip=auto AC_ARG_WITH([zip], AS_HELP_STRING([--with-zip=ZIPLIB], - [ZIP support library (minizip1, minizip2, libzip or auto)]), + [ZIP support library (minizip1, minizip2, libzip, zzip or auto)]), [case "$withval" in - minizip1|minizip2|libzip|auto|no) enable_zip="$withval";; + minizip1|minizip2|libzip|zzip|auto|no) enable_zip="$withval";; yes) enable_zip=auto;; *) AC_MSG_ERROR([bad balue "$withval" for --with-zip]) ;; esac] @@ -591,6 +597,7 @@ enable_minizip1=no enable_minizip2=no enable_libzip=no +enable_zzip=no if test "x$found_zip" = xno && test "x$enable_zip" = xminizip1 -o "x$enable_zip" = xauto; then PKG_CHECK_MODULES(MINIZIP1, [minizip < 2.0], [AC_DEFINE(HAVE_MINIZIP1,1, @@ -618,9 +625,17 @@ AC_CHECK_HEADERS([minizip/mz.h mz.h],[],[],[]) CPPFLAGS="$MINIZIP2_ORIG_CPPFLAGS" fi +if test "x$found_zip" = xno && test "x$enable_zip" = xzzip -o "x$enable_zip" = xauto; then + PKG_CHECK_MODULES(ZZIP, [zziplib], + [AC_DEFINE(HAVE_ZZIP,1, + [Define if we have the Zzip package.]) + found_zip=yes + enable_zzip=yes],[:]) +fi AM_CONDITIONAL([HAVE_MINIZIP1],[test "x$enable_minizip1" != xno]) AM_CONDITIONAL([HAVE_MINIZIP2],[test "x$enable_minizip2" != xno]) AM_CONDITIONAL([HAVE_LIBZIP],[test "x$enable_libzip" != xno]) +AM_CONDITIONAL([HAVE_ZZIP],[test "x$enable_zzip" != xno]) AM_CONDITIONAL([HAVE_ANY_ZIP],[test "x$found_zip" != xno]) ############################################################################# @@ -847,7 +862,7 @@ COMMON_LDFLAGS="$HOST_LDFLAGS" AC_SUBST(COMMON_LDFLAGS) -COMMON_CFLAGS="$HOST_CFLAGS $WARNING_CFLAGS $GOBJECT_CFLAGS $GMODULE_CFLAGS $GTKGLEXT_CFLAGS $PREMISE_CFLAGS -DGLIB_DISABLE_DEPRECATION_WARNINGS" +COMMON_CFLAGS="$HOST_CFLAGS $PROG_CC_STDGNU90 $WARNING_CFLAGS $GOBJECT_CFLAGS $GMODULE_CFLAGS $GTKGLEXT_CFLAGS $PREMISE_CFLAGS -DGLIB_DISABLE_DEPRECATION_WARNINGS" AC_SUBST(COMMON_CFLAGS) COMMON_CXXFLAGS="$HOST_CFLAGS $GOBJECT_CFLAGS $GMODULE_CFLAGS $GTKGLEXT_CFLAGS $PREMISE_CFLAGS -DGLIB_DISABLE_DEPRECATION_WARNINGS" AC_SUBST(COMMON_CXXFLAGS) diff -Nru gwyddion-2.62/data/glmaterials/Makefile.in gwyddion-2.63/data/glmaterials/Makefile.in --- gwyddion-2.62/data/glmaterials/Makefile.in 2022-11-03 09:56:37.000000000 +0000 +++ gwyddion-2.63/data/glmaterials/Makefile.in 2023-06-13 13:22:35.000000000 +0000 @@ -357,6 +357,8 @@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ZLIB = @ZLIB@ +ZZIP_CFLAGS = @ZZIP_CFLAGS@ +ZZIP_LIBS = @ZZIP_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ diff -Nru gwyddion-2.62/data/gradients/Makefile.in gwyddion-2.63/data/gradients/Makefile.in --- gwyddion-2.62/data/gradients/Makefile.in 2022-11-03 09:56:37.000000000 +0000 +++ gwyddion-2.63/data/gradients/Makefile.in 2023-06-13 13:22:35.000000000 +0000 @@ -357,6 +357,8 @@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ZLIB = @ZLIB@ +ZZIP_CFLAGS = @ZZIP_CFLAGS@ +ZZIP_LIBS = @ZZIP_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ diff -Nru gwyddion-2.62/data/gwyddion.vim gwyddion-2.63/data/gwyddion.vim --- gwyddion-2.62/data/gwyddion.vim 2022-11-03 10:00:34.000000000 +0000 +++ gwyddion-2.63/data/gwyddion.vim 2023-06-13 13:20:09.000000000 +0000 @@ -1,7 +1,7 @@ " Vim syntax file " Language: C gwyddion extension " Maintainer: David Nečas (Yeti) -" Last Change: 2022-11-03 +" Last Change: 2023-06-13 " URL: http://gwyddion.net/download/test/gwyddion.vim " Generated By: vim-syn-gen.py " Options: @@ -11,15 +11,15 @@ " let gwyddion_deprecated_errors = 1 " highlights deprecated declarations as Errors -syn keyword gwyddionFunction gwy_2d_cwt_wavelet_type_get_enum gwy_2d_cwt_wavelet_type_get_type gwy_3d_label_expand_text gwy_3d_label_get_text gwy_3d_label_get_type gwy_3d_label_new gwy_3d_label_reset gwy_3d_label_reset_text gwy_3d_label_set_text gwy_3d_label_user_size gwy_3d_movement_get_type gwy_3d_projection_get_type gwy_3d_setup_get_type gwy_3d_setup_new gwy_3d_view_class_disable_axis_drawing gwy_3d_view_get_data gwy_3d_view_get_data_key gwy_3d_view_get_gradient_key gwy_3d_view_get_label gwy_3d_view_get_mask_key gwy_3d_view_get_material_key gwy_3d_view_get_movement_type gwy_3d_view_get_pixbuf gwy_3d_view_get_pixbuf_with_alpha gwy_3d_view_get_reduced_size gwy_3d_view_get_scale_range gwy_3d_view_get_setup gwy_3d_view_get_setup_prefix gwy_3d_view_get_type gwy_3d_view_label_get_type gwy_3d_view_new gwy_3d_view_set_data_key gwy_3d_view_set_gradient_key gwy_3d_view_set_mask_key gwy_3d_view_set_material_key gwy_3d_view_set_movement_type gwy_3d_view_set_ovlay gwy_3d_view_set_reduced_size gwy_3d_view_set_scale_range gwy_3d_view_set_setup_prefix gwy_3d_visualization_get_type gwy_3d_window_add_action_widget gwy_3d_window_add_small_toolbar_button gwy_3d_window_get_3d_view gwy_3d_window_get_type gwy_3d_window_new gwy_3d_window_set_overlay_chooser gwy_adjust_bar_get_adjustment gwy_adjust_bar_get_bar_sensitive gwy_adjust_bar_get_check_button gwy_adjust_bar_get_has_check_button gwy_adjust_bar_get_label gwy_adjust_bar_get_mapping gwy_adjust_bar_get_snap_to_ticks gwy_adjust_bar_get_type gwy_adjust_bar_new gwy_adjust_bar_set_adjustment gwy_adjust_bar_set_bar_sensitive gwy_adjust_bar_set_has_check_button gwy_adjust_bar_set_mapping gwy_adjust_bar_set_snap_to_ticks gwy_affine_scaling_type_get_type gwy_app_add_graph_or_curves gwy_app_add_main_accel_group gwy_app_build_curve_map_menu gwy_app_build_graph_menu gwy_app_build_process_menu gwy_app_build_volume_menu gwy_app_build_xyz_menu gwy_app_channel_check_nonsquare gwy_app_channel_log_add gwy_app_channel_log_add_proc gwy_app_channel_mask_of_nans gwy_app_channel_remove_bad_data gwy_app_channel_title_fall_back gwy_app_current_tool gwy_app_current_tool_name gwy_app_curve_map_log_add gwy_app_curve_map_log_add_curve_map gwy_app_data_browser_add gwy_app_data_browser_add_brick gwy_app_data_browser_add_channel_watch gwy_app_data_browser_add_curve_map_watch gwy_app_data_browser_add_data_field gwy_app_data_browser_add_graph_model gwy_app_data_browser_add_graph_watch gwy_app_data_browser_add_lawn gwy_app_data_browser_add_spectra gwy_app_data_browser_add_surface gwy_app_data_browser_add_volume_watch gwy_app_data_browser_add_xyz_watch gwy_app_data_browser_copy_channel gwy_app_data_browser_copy_curve_map gwy_app_data_browser_copy_volume gwy_app_data_browser_copy_xyz gwy_app_data_browser_find_curve_map_by_title gwy_app_data_browser_find_data_by_title gwy_app_data_browser_find_graphs_by_title gwy_app_data_browser_find_spectra_by_title gwy_app_data_browser_find_volume_by_title gwy_app_data_browser_find_xyz_by_title gwy_app_data_browser_foreach gwy_app_data_browser_get gwy_app_data_browser_get_current gwy_app_data_browser_get_curve_map_ids gwy_app_data_browser_get_data_ids gwy_app_data_browser_get_graph_ids gwy_app_data_browser_get_gui_enabled gwy_app_data_browser_get_keep_invisible gwy_app_data_browser_get_number gwy_app_data_browser_get_spectra_ids gwy_app_data_browser_get_volume_ids gwy_app_data_browser_get_xyz_ids gwy_app_data_browser_merge gwy_app_data_browser_remove gwy_app_data_browser_remove_channel_watch gwy_app_data_browser_remove_curve_map_watch gwy_app_data_browser_remove_graph_watch gwy_app_data_browser_remove_volume_watch gwy_app_data_browser_remove_xyz_watch gwy_app_data_browser_reset_visibility gwy_app_data_browser_restore gwy_app_data_browser_select_brick gwy_app_data_browser_select_curve_map gwy_app_data_browser_select_data_field gwy_app_data_browser_select_data_view gwy_app_data_browser_select_graph gwy_app_data_browser_select_graph_model gwy_app_data_browser_select_lawn gwy_app_data_browser_select_spectra gwy_app_data_browser_select_surface gwy_app_data_browser_select_volume gwy_app_data_browser_select_xyz gwy_app_data_browser_set_gui_enabled gwy_app_data_browser_set_keep_invisible gwy_app_data_browser_show gwy_app_data_browser_show_3d gwy_app_data_browser_shut_down gwy_app_data_clear_selections gwy_app_data_id_copy gwy_app_data_id_free gwy_app_data_id_get_type gwy_app_data_id_new gwy_app_data_id_verify_channel gwy_app_data_id_verify_curve_map gwy_app_data_id_verify_graph gwy_app_data_id_verify_spectra gwy_app_data_id_verify_volume gwy_app_data_id_verify_xyz gwy_app_data_view_change_mask_color gwy_app_file_close gwy_app_file_confirm_overwrite gwy_app_file_load gwy_app_file_merge gwy_app_file_open gwy_app_file_save gwy_app_file_save_as gwy_app_file_write gwy_app_find_window_for_channel gwy_app_find_window_for_curve_map gwy_app_find_window_for_graph gwy_app_find_window_for_volume gwy_app_find_window_for_xyz gwy_app_get_brick_key_for_id gwy_app_get_brick_meta_key_for_id gwy_app_get_brick_palette_key_for_id gwy_app_get_brick_preview_key_for_id gwy_app_get_brick_title gwy_app_get_brick_title_key_for_id gwy_app_get_channel_thumbnail gwy_app_get_current_directory gwy_app_get_curve_map_thumbnail gwy_app_get_data_base_key_for_id gwy_app_get_data_field_title gwy_app_get_data_key_for_id gwy_app_get_data_meta_key_for_id gwy_app_get_data_palette_key_for_id gwy_app_get_data_range_max_key_for_id gwy_app_get_data_range_min_key_for_id gwy_app_get_data_range_type_key_for_id gwy_app_get_data_real_square_key_for_id gwy_app_get_data_title_key_for_id gwy_app_get_graph_key_for_id gwy_app_get_graph_thumbnail gwy_app_get_lawn_key_for_id gwy_app_get_lawn_meta_key_for_id gwy_app_get_lawn_palette_key_for_id gwy_app_get_lawn_preview_key_for_id gwy_app_get_lawn_real_square_key_for_id gwy_app_get_lawn_title gwy_app_get_lawn_title_key_for_id gwy_app_get_log_text_buffer gwy_app_get_mask_key_for_id gwy_app_get_show_key_for_id gwy_app_get_spectra_key_for_id gwy_app_get_surface_key_for_id gwy_app_get_surface_meta_key_for_id gwy_app_get_surface_palette_key_for_id gwy_app_get_surface_preview_key_for_id gwy_app_get_surface_title gwy_app_get_surface_title_key_for_id gwy_app_get_volume_thumbnail gwy_app_get_xyz_thumbnail gwy_app_gl_init gwy_app_gl_is_ok gwy_app_gl_material_editor gwy_app_gradient_editor gwy_app_init_common gwy_app_init_i18n gwy_app_init_nongui gwy_app_init_widget_styles gwy_app_log_browser_for_channel gwy_app_log_browser_for_curve_map gwy_app_log_browser_for_volume gwy_app_log_browser_for_xyz gwy_app_logging_flags_get_type gwy_app_main_window_get gwy_app_main_window_set gwy_app_menu_recent_files_get gwy_app_menu_recent_files_update gwy_app_metadata_browser_for_channel gwy_app_metadata_browser_for_curve_map gwy_app_metadata_browser_for_volume gwy_app_metadata_browser_for_xyz gwy_app_page_get_type gwy_app_process_func_get_use gwy_app_process_func_save_use gwy_app_process_menu_add_run_last gwy_app_quit gwy_app_recent_file_get_thumbnail gwy_app_recent_file_list_free gwy_app_recent_file_list_load gwy_app_recent_file_list_new gwy_app_recent_file_list_save gwy_app_recent_file_list_update gwy_app_restore_window_position gwy_app_run_curve_map_func gwy_app_run_curve_map_func_in_mode gwy_app_run_graph_func gwy_app_run_process_func gwy_app_run_process_func_in_mode gwy_app_run_volume_func gwy_app_run_volume_func_in_mode gwy_app_run_xyz_func gwy_app_run_xyz_func_in_mode gwy_app_save_window_position gwy_app_sensitivity_add_widget gwy_app_sensitivity_get_group gwy_app_sensitivity_set_state gwy_app_set_brick_title gwy_app_set_current_directory gwy_app_set_data_field_title gwy_app_set_lawn_title gwy_app_set_surface_title gwy_app_settings_create_config_dir gwy_app_settings_error_get_type gwy_app_settings_error_quark gwy_app_settings_free gwy_app_settings_get gwy_app_settings_get_log_filename gwy_app_settings_get_module_dirs gwy_app_settings_get_recent_file_list_filename gwy_app_settings_get_settings_filename gwy_app_settings_load gwy_app_settings_save gwy_app_setup_logging gwy_app_switch_tool gwy_app_sync_curve_map_items gwy_app_sync_curve_map_itemsv gwy_app_sync_data_items gwy_app_sync_data_itemsv gwy_app_sync_volume_items gwy_app_sync_volume_itemsv gwy_app_sync_xyz_items gwy_app_sync_xyz_itemsv gwy_app_undo_checkpoint gwy_app_undo_checkpointv gwy_app_undo_container_remove gwy_app_undo_qcheckpoint gwy_app_undo_qcheckpointv gwy_app_undo_redo_container gwy_app_undo_undo_container gwy_app_volume_log_add gwy_app_volume_log_add_volume gwy_app_wait_cursor_finish gwy_app_wait_cursor_start gwy_app_wait_finish gwy_app_wait_get_enabled gwy_app_wait_preview_data_field gwy_app_wait_set_enabled gwy_app_wait_set_fraction gwy_app_wait_set_message gwy_app_wait_set_message_prefix gwy_app_wait_set_preview_widget gwy_app_wait_start gwy_app_wait_was_canceled gwy_app_what_get_type gwy_app_xyz_log_add gwy_app_xyz_log_add_xyz gwy_app_xyz_title_fall_back gwy_ascii_strcase_equal gwy_ascii_strcase_hash gwy_assign_string gwy_axis_draw_on_drawable gwy_axis_enable_label_edit gwy_axis_export_vector gwy_axis_get_label gwy_axis_get_magnification gwy_axis_get_magnification_string gwy_axis_get_major_ticks gwy_axis_get_orientation gwy_axis_get_range gwy_axis_get_requested_range gwy_axis_get_type gwy_axis_is_logarithmic gwy_axis_is_visible gwy_axis_new gwy_axis_request_range gwy_axis_scale_format_get_type gwy_axis_set_auto gwy_axis_set_label gwy_axis_set_logarithmic gwy_axis_set_si_unit gwy_axis_set_visible gwy_brick_add gwy_brick_add_to_xy_planes gwy_brick_add_to_z_lines gwy_brick_check_compatibility gwy_brick_clear gwy_brick_copy gwy_brick_copy_units gwy_brick_copy_zcalibration gwy_brick_data_changed gwy_brick_extract_line gwy_brick_extract_plane gwy_brick_extract_xy_plane gwy_brick_extract_z_line gwy_brick_fill gwy_brick_get_data gwy_brick_get_data_const gwy_brick_get_dval gwy_brick_get_dval_real gwy_brick_get_dx gwy_brick_get_dy gwy_brick_get_dz gwy_brick_get_max gwy_brick_get_min gwy_brick_get_si_unit_w gwy_brick_get_si_unit_x gwy_brick_get_si_unit_y gwy_brick_get_si_unit_z gwy_brick_get_type gwy_brick_get_val gwy_brick_get_val_real gwy_brick_get_value_format_w gwy_brick_get_value_format_x gwy_brick_get_value_format_y gwy_brick_get_value_format_z gwy_brick_get_xoffset gwy_brick_get_xreal gwy_brick_get_xres gwy_brick_get_yoffset gwy_brick_get_yreal gwy_brick_get_yres gwy_brick_get_zcalibration gwy_brick_get_zoffset gwy_brick_get_zreal gwy_brick_get_zres gwy_brick_invert gwy_brick_itor gwy_brick_jtor gwy_brick_ktor gwy_brick_ktor_cal gwy_brick_max_plane gwy_brick_max_xy_plane gwy_brick_maxpos_plane gwy_brick_maxpos_xy_plane gwy_brick_mean_plane gwy_brick_mean_xy_plane gwy_brick_min_plane gwy_brick_min_xy_plane gwy_brick_minpos_plane gwy_brick_minpos_xy_plane gwy_brick_multiply gwy_brick_new gwy_brick_new_alike gwy_brick_new_part gwy_brick_resample gwy_brick_rms_plane gwy_brick_rms_xy_plane gwy_brick_rtoi gwy_brick_rtoj gwy_brick_rtok gwy_brick_rtok_cal gwy_brick_set_plane gwy_brick_set_si_unit_w gwy_brick_set_si_unit_x gwy_brick_set_si_unit_y gwy_brick_set_si_unit_z gwy_brick_set_val gwy_brick_set_val_real gwy_brick_set_xoffset gwy_brick_set_xreal gwy_brick_set_xy_plane gwy_brick_set_yoffset gwy_brick_set_yreal gwy_brick_set_zcalibration gwy_brick_set_zoffset gwy_brick_set_zreal gwy_brick_sum_plane gwy_brick_sum_xy_plane gwy_brick_transpose gwy_brick_transpose_type_get_type gwy_byte_order_get_type gwy_caldata_append gwy_caldata_get_ndata gwy_caldata_get_range gwy_caldata_get_si_unit_x gwy_caldata_get_si_unit_y gwy_caldata_get_si_unit_z gwy_caldata_get_type gwy_caldata_get_x gwy_caldata_get_xerr gwy_caldata_get_xunc gwy_caldata_get_y gwy_caldata_get_yerr gwy_caldata_get_yunc gwy_caldata_get_z gwy_caldata_get_zerr gwy_caldata_get_zunc gwy_caldata_inside gwy_caldata_interpolate gwy_caldata_new gwy_caldata_resize gwy_caldata_save_data gwy_caldata_set_range gwy_caldata_set_si_unit_x gwy_caldata_set_si_unit_y gwy_caldata_set_si_unit_z gwy_caldata_setup_interpolation gwy_calibration_get_data gwy_calibration_get_filename gwy_calibration_get_ndata gwy_calibration_get_type gwy_calibration_new gwy_calibrations gwy_calibrations_get_calibration gwy_canonicalize_angle gwy_canonicalize_path gwy_cdline_fit gwy_cdline_fit_with_caldata gwy_cdline_get_definition gwy_cdline_get_name gwy_cdline_get_nparams gwy_cdline_get_param_name gwy_cdline_get_param_units gwy_cdline_get_type gwy_cdline_get_value gwy_cdlines gwy_check_box_get_group gwy_check_box_get_value gwy_check_boxes_attach_to_table gwy_check_boxes_create gwy_check_boxes_createl gwy_check_boxes_find gwy_check_boxes_get_selected gwy_check_boxes_set_selected gwy_check_boxes_set_sensitive gwy_check_regular_2d_grid gwy_color_axis_get_gradient gwy_color_axis_get_labels_visible gwy_color_axis_get_range gwy_color_axis_get_si_unit gwy_color_axis_get_ticks_style gwy_color_axis_get_type gwy_color_axis_new gwy_color_axis_new_with_range gwy_color_axis_set_gradient gwy_color_axis_set_labels_visible gwy_color_axis_set_range gwy_color_axis_set_si_unit gwy_color_axis_set_tick_map_func gwy_color_axis_set_ticks_style gwy_color_button_get_color gwy_color_button_get_type gwy_color_button_get_use_alpha gwy_color_button_new gwy_color_button_new_with_color gwy_color_button_set_color gwy_color_button_set_use_alpha gwy_color_selector_for_mask gwy_combo_box_graph_curve_new gwy_combo_box_lawn_curve_new gwy_combo_box_lawn_segment_new gwy_combo_box_metric_unit_new gwy_combo_box_metric_unit_set_unit gwy_compare_double gwy_computation_state_get_fraction gwy_computation_state_get_state gwy_computation_state_get_type gwy_computation_state_type_get_type gwy_container_contains gwy_container_deserialize_from_text gwy_container_duplicate_by_prefix gwy_container_duplicate_by_prefixv gwy_container_foreach gwy_container_get_boolean gwy_container_get_double gwy_container_get_enum gwy_container_get_int32 gwy_container_get_int64 gwy_container_get_n_items gwy_container_get_object gwy_container_get_string gwy_container_get_type gwy_container_get_uchar gwy_container_get_value gwy_container_gis_boolean gwy_container_gis_double gwy_container_gis_enum gwy_container_gis_int32 gwy_container_gis_int64 gwy_container_gis_object gwy_container_gis_string gwy_container_gis_uchar gwy_container_gis_value gwy_container_keys gwy_container_keys_by_name gwy_container_keys_with_prefix gwy_container_keys_with_prefix_by_name gwy_container_new gwy_container_remove gwy_container_remove_by_prefix gwy_container_rename gwy_container_serialize_to_text gwy_container_set_boolean gwy_container_set_const_string gwy_container_set_double gwy_container_set_enum gwy_container_set_int32 gwy_container_set_int64 gwy_container_set_object gwy_container_set_string gwy_container_set_uchar gwy_container_set_value gwy_container_set_value_by_name gwy_container_transfer gwy_container_value_type gwy_convert_raw_data gwy_corr_search_type_get_type gwy_correlation_type_get_enum gwy_correlation_type_get_type gwy_create_dialog_preview_hbox gwy_create_expander_with_param gwy_create_inventory_model_without_default gwy_create_preview gwy_create_preview_vector_layer gwy_curve_channel_get_type gwy_curve_get_control_points gwy_curve_get_type gwy_curve_map_func_current gwy_curve_map_func_exists gwy_curve_map_func_foreach gwy_curve_map_func_get_menu_path gwy_curve_map_func_get_run_types gwy_curve_map_func_get_sensitivity_mask gwy_curve_map_func_get_stock_id gwy_curve_map_func_get_tooltip gwy_curve_map_func_register gwy_curve_map_func_run gwy_curve_new gwy_curve_reset gwy_curve_set_channels gwy_curve_set_control_points gwy_curve_set_curve_type gwy_curve_set_range gwy_curve_type_get_type gwy_cwt_wfunc_2d gwy_data_chooser_get_active gwy_data_chooser_get_active_id gwy_data_chooser_get_filter gwy_data_chooser_get_none gwy_data_chooser_get_type gwy_data_chooser_new_channels gwy_data_chooser_new_curve_maps gwy_data_chooser_new_graphs gwy_data_chooser_new_volumes gwy_data_chooser_new_xyzs gwy_data_chooser_refilter gwy_data_chooser_set_active gwy_data_chooser_set_active_id gwy_data_chooser_set_filter gwy_data_chooser_set_none gwy_data_compatibility_flags_get_type gwy_data_error_desrcibe gwy_data_error_get_type gwy_data_field_1dfft gwy_data_field_1dfft_raw gwy_data_field_2dacf gwy_data_field_2dfft gwy_data_field_2dfft_dehumanize gwy_data_field_2dfft_humanize gwy_data_field_2dfft_raw gwy_data_field_2dpsdf gwy_data_field_abs gwy_data_field_acf gwy_data_field_acf_uncertainty gwy_data_field_add gwy_data_field_affine gwy_data_field_affine_prepare gwy_data_field_angular_average gwy_data_field_area_1dfft gwy_data_field_area_2dacf gwy_data_field_area_2dacf_mask gwy_data_field_area_2dfft gwy_data_field_area_2dpsdf_mask gwy_data_field_area_abs gwy_data_field_area_acf gwy_data_field_area_acf_uncertainty gwy_data_field_area_add gwy_data_field_area_cda gwy_data_field_area_cda_mask gwy_data_field_area_cdh gwy_data_field_area_cdh_uncertainty gwy_data_field_area_clamp gwy_data_field_area_clear gwy_data_field_area_convolve gwy_data_field_area_convolve_1d gwy_data_field_area_copy gwy_data_field_area_count_in_range gwy_data_field_area_da gwy_data_field_area_da_mask gwy_data_field_area_dh gwy_data_field_area_dh_uncertainty gwy_data_field_area_ext_convolve gwy_data_field_area_ext_row_convolve gwy_data_field_area_extract gwy_data_field_area_fill gwy_data_field_area_fill_mask gwy_data_field_area_filter_conservative gwy_data_field_area_filter_dechecker gwy_data_field_area_filter_disc_asf gwy_data_field_area_filter_gaussian gwy_data_field_area_filter_kth_rank gwy_data_field_area_filter_kuwahara gwy_data_field_area_filter_laplacian gwy_data_field_area_filter_laplacian_of_gaussians gwy_data_field_area_filter_maximum gwy_data_field_area_filter_mean gwy_data_field_area_filter_median gwy_data_field_area_filter_min_max gwy_data_field_area_filter_minimum gwy_data_field_area_filter_prewitt gwy_data_field_area_filter_rms gwy_data_field_area_filter_sobel gwy_data_field_area_filter_trimmed_mean gwy_data_field_area_fit_legendre gwy_data_field_area_fit_local_planes gwy_data_field_area_fit_plane gwy_data_field_area_fit_plane_mask gwy_data_field_area_fit_poly gwy_data_field_area_fit_poly_max gwy_data_field_area_fit_polynom gwy_data_field_area_flip_xy gwy_data_field_area_gather gwy_data_field_area_get_autorange gwy_data_field_area_get_avg_mask gwy_data_field_area_get_avg_uncertainty gwy_data_field_area_get_avg_uncertainty_mask gwy_data_field_area_get_dispersion gwy_data_field_area_get_entropy gwy_data_field_area_get_entropy_at_scales gwy_data_field_area_get_grainwise_rms gwy_data_field_area_get_inclination gwy_data_field_area_get_inclination_uncertainty gwy_data_field_area_get_line_stats gwy_data_field_area_get_max gwy_data_field_area_get_max_uncertainty gwy_data_field_area_get_mean_square gwy_data_field_area_get_median_mask gwy_data_field_area_get_median_uncertainty gwy_data_field_area_get_median_uncertainty_mask gwy_data_field_area_get_min gwy_data_field_area_get_min_max_mask gwy_data_field_area_get_min_max_uncertainty gwy_data_field_area_get_min_max_uncertainty_mask gwy_data_field_area_get_min_uncertainty gwy_data_field_area_get_normal_coeffs gwy_data_field_area_get_normal_coeffs_uncertainty gwy_data_field_area_get_projected_area_uncertainty gwy_data_field_area_get_rms_mask gwy_data_field_area_get_rms_uncertainty gwy_data_field_area_get_rms_uncertainty_mask gwy_data_field_area_get_stats_mask gwy_data_field_area_get_stats_uncertainties gwy_data_field_area_get_stats_uncertainties_mask gwy_data_field_area_get_sum_mask gwy_data_field_area_get_surface_area_mask gwy_data_field_area_get_surface_area_mask_uncertainty gwy_data_field_area_get_surface_area_uncertainty gwy_data_field_area_get_surface_slope_mask gwy_data_field_area_get_variation gwy_data_field_area_get_volume gwy_data_field_area_grains_tgnd gwy_data_field_area_grains_tgnd_range gwy_data_field_area_hhcf gwy_data_field_area_hhcf_uncertainty gwy_data_field_area_local_plane_quantity gwy_data_field_area_minkowski_boundary gwy_data_field_area_minkowski_euler gwy_data_field_area_minkowski_volume gwy_data_field_area_multiply gwy_data_field_area_psdf gwy_data_field_area_racf gwy_data_field_area_renormalize gwy_data_field_area_row_acf gwy_data_field_area_row_asg gwy_data_field_area_row_hhcf gwy_data_field_area_row_psdf gwy_data_field_area_rpsdf gwy_data_field_area_subtract_legendre gwy_data_field_area_subtract_poly gwy_data_field_area_subtract_poly_max gwy_data_field_area_subtract_polynom gwy_data_field_area_threshold gwy_data_field_average_xyz gwy_data_field_bin gwy_data_field_cached_get_type gwy_data_field_cda gwy_data_field_cdh gwy_data_field_cdh_uncertainty gwy_data_field_check_compatibility gwy_data_field_check_compatibility_with_brick_xy gwy_data_field_check_compatibility_with_lawn gwy_data_field_circular_area_extract gwy_data_field_circular_area_extract_with_pos gwy_data_field_circular_area_fill gwy_data_field_circular_area_unextract gwy_data_field_clamp gwy_data_field_clear gwy_data_field_column_gaussian gwy_data_field_convolve gwy_data_field_convolve_1d gwy_data_field_copy gwy_data_field_copy_units gwy_data_field_copy_units_to_data_line gwy_data_field_copy_units_to_surface gwy_data_field_correct_average gwy_data_field_correct_average_unmasked gwy_data_field_correct_laplace_iteration gwy_data_field_correlate gwy_data_field_correlate_finalize gwy_data_field_correlate_init gwy_data_field_correlate_iteration gwy_data_field_correlation_search gwy_data_field_count_maxima gwy_data_field_count_minima gwy_data_field_crosscorrelate gwy_data_field_crosscorrelate_finalize gwy_data_field_crosscorrelate_init gwy_data_field_crosscorrelate_iteration gwy_data_field_crosscorrelate_set_weights gwy_data_field_cwt gwy_data_field_da gwy_data_field_data_changed gwy_data_field_deconvolve_psf_leastsq gwy_data_field_deconvolve_regularized gwy_data_field_dh gwy_data_field_dh_uncertainty gwy_data_field_distort gwy_data_field_divide_fields gwy_data_field_dwt gwy_data_field_dwt_mark_anisotropy gwy_data_field_elliptic_area_extract gwy_data_field_elliptic_area_fill gwy_data_field_elliptic_area_unextract gwy_data_field_extend gwy_data_field_fft_convolve gwy_data_field_fft_filter_1d gwy_data_field_fft_postprocess gwy_data_field_fft_window gwy_data_field_fft_window_1d gwy_data_field_fill gwy_data_field_fill_voids gwy_data_field_filter_canny gwy_data_field_filter_conservative gwy_data_field_filter_dechecker gwy_data_field_filter_gauss_step gwy_data_field_filter_gaussian gwy_data_field_filter_harris gwy_data_field_filter_kuwahara gwy_data_field_filter_laplacian gwy_data_field_filter_laplacian_of_gaussians gwy_data_field_filter_maximum gwy_data_field_filter_mean gwy_data_field_filter_median gwy_data_field_filter_minimum gwy_data_field_filter_prewitt gwy_data_field_filter_prewitt_total gwy_data_field_filter_rms gwy_data_field_filter_slope gwy_data_field_filter_sobel gwy_data_field_filter_sobel_total gwy_data_field_find_regularization_sigma_for_psf gwy_data_field_find_regularization_sigma_leastsq gwy_data_field_find_row_shifts_trimmed_diff gwy_data_field_find_row_shifts_trimmed_mean gwy_data_field_fit_facet_plane gwy_data_field_fit_legendre gwy_data_field_fit_lines gwy_data_field_fit_local_planes gwy_data_field_fit_plane gwy_data_field_fit_poly gwy_data_field_fit_poly_max gwy_data_field_fit_polynom gwy_data_field_flip_xy gwy_data_field_fractal_correction gwy_data_field_fractal_cubecounting gwy_data_field_fractal_cubecounting_dim gwy_data_field_fractal_partitioning gwy_data_field_fractal_partitioning_dim gwy_data_field_fractal_psdf gwy_data_field_fractal_psdf_dim gwy_data_field_fractal_triangulation gwy_data_field_fractal_triangulation_dim gwy_data_field_get_angder gwy_data_field_get_autorange gwy_data_field_get_avg gwy_data_field_get_avg_uncertainty gwy_data_field_get_circular_area_size gwy_data_field_get_column gwy_data_field_get_column_part gwy_data_field_get_correlation_score gwy_data_field_get_data gwy_data_field_get_data_const gwy_data_field_get_dispersion gwy_data_field_get_dval gwy_data_field_get_dval_real gwy_data_field_get_dx gwy_data_field_get_dy gwy_data_field_get_elliptic_area_size gwy_data_field_get_elliptic_intersection gwy_data_field_get_entropy gwy_data_field_get_entropy_2d gwy_data_field_get_entropy_2d_at_scales gwy_data_field_get_grain_bounding_boxes gwy_data_field_get_grain_bounding_boxes_periodic gwy_data_field_get_grain_inscribed_boxes gwy_data_field_get_grain_sizes gwy_data_field_get_inclination gwy_data_field_get_inclination_uncertainty gwy_data_field_get_line_stats gwy_data_field_get_line_stats_mask gwy_data_field_get_local_maxima_list gwy_data_field_get_local_minima_list gwy_data_field_get_max gwy_data_field_get_max_uncertainty gwy_data_field_get_mean_square gwy_data_field_get_median gwy_data_field_get_median_uncertainty gwy_data_field_get_min gwy_data_field_get_min_max gwy_data_field_get_min_max_uncertainty gwy_data_field_get_min_uncertainty gwy_data_field_get_normal_coeffs gwy_data_field_get_normal_coeffs_uncertainty gwy_data_field_get_profile gwy_data_field_get_profile_mask gwy_data_field_get_rms gwy_data_field_get_rms_uncertainty gwy_data_field_get_row gwy_data_field_get_row_part gwy_data_field_get_si_unit_xy gwy_data_field_get_si_unit_z gwy_data_field_get_stats gwy_data_field_get_stats_uncertainties gwy_data_field_get_sum gwy_data_field_get_surface_area gwy_data_field_get_surface_area_uncertainty gwy_data_field_get_surface_slope gwy_data_field_get_type gwy_data_field_get_val gwy_data_field_get_value_format_xy gwy_data_field_get_value_format_z gwy_data_field_get_variation gwy_data_field_get_weighted_correlation_score gwy_data_field_get_xder gwy_data_field_get_xder_uncertainty gwy_data_field_get_xoffset gwy_data_field_get_xreal gwy_data_field_get_xres gwy_data_field_get_yder gwy_data_field_get_yder_uncertainty gwy_data_field_get_yoffset gwy_data_field_get_yreal gwy_data_field_get_yres gwy_data_field_grain_distance_transform gwy_data_field_grain_simple_dist_trans gwy_data_field_grains_add gwy_data_field_grains_autocrop gwy_data_field_grains_extract_grain gwy_data_field_grains_find_boundaries gwy_data_field_grains_get_distribution gwy_data_field_grains_get_quantities gwy_data_field_grains_get_values gwy_data_field_grains_grow gwy_data_field_grains_intersect gwy_data_field_grains_invert gwy_data_field_grains_mark_curvature gwy_data_field_grains_mark_height gwy_data_field_grains_mark_slope gwy_data_field_grains_mark_watershed gwy_data_field_grains_remove_by_height gwy_data_field_grains_remove_by_number gwy_data_field_grains_remove_by_size gwy_data_field_grains_remove_grain gwy_data_field_grains_remove_touching_border gwy_data_field_grains_shrink gwy_data_field_grains_splash_water gwy_data_field_grains_thin gwy_data_field_grains_watershed_finalize gwy_data_field_grains_watershed_init gwy_data_field_grains_watershed_iteration gwy_data_field_hhcf gwy_data_field_hhcf_uncertainty gwy_data_field_hough_circle gwy_data_field_hough_circle_strenghten gwy_data_field_hough_datafield_line_to_polar gwy_data_field_hough_line gwy_data_field_hough_line_strenghten gwy_data_field_hough_polar_line_to_datafield gwy_data_field_hypot_of_fields gwy_data_field_invalidate gwy_data_field_invert gwy_data_field_itor gwy_data_field_jtor gwy_data_field_laplace_solve gwy_data_field_linear_combination gwy_data_field_local_maximum gwy_data_field_local_plane_quantity gwy_data_field_mark_extrema gwy_data_field_mark_scars gwy_data_field_mask_outliers gwy_data_field_mask_outliers2 gwy_data_field_max_of_fields gwy_data_field_measure_lattice_acf gwy_data_field_measure_lattice_psdf gwy_data_field_mfm_current_line gwy_data_field_mfm_find_shift_z gwy_data_field_mfm_parallel_medium gwy_data_field_mfm_perpendicular_medium_force gwy_data_field_mfm_perpendicular_stray_field gwy_data_field_mfm_perpendicular_stray_field_angle_correction gwy_data_field_mfm_shift_z gwy_data_field_min_of_fields gwy_data_field_minkowski_boundary gwy_data_field_minkowski_euler gwy_data_field_minkowski_volume gwy_data_field_multiply gwy_data_field_multiply_fields gwy_data_field_new gwy_data_field_new_alike gwy_data_field_new_binned gwy_data_field_new_resampled gwy_data_field_new_rotated gwy_data_field_new_rotated_90 gwy_data_field_normalize gwy_data_field_number_grains gwy_data_field_number_grains_periodic gwy_data_field_otsu_threshold gwy_data_field_plane_level gwy_data_field_plane_rotate gwy_data_field_psdf gwy_data_field_psdf_to_angular_spectrum gwy_data_field_racf gwy_data_field_renormalize gwy_data_field_resample gwy_data_field_resize gwy_data_field_rotate gwy_data_field_row_gaussian gwy_data_field_rpsdf gwy_data_field_rtoi gwy_data_field_rtoj gwy_data_field_sample_distorted gwy_data_field_set_column gwy_data_field_set_column_part gwy_data_field_set_row gwy_data_field_set_row_part gwy_data_field_set_si_unit_xy gwy_data_field_set_si_unit_z gwy_data_field_set_val gwy_data_field_set_xoffset gwy_data_field_set_xreal gwy_data_field_set_yoffset gwy_data_field_set_yreal gwy_data_field_shade gwy_data_field_slope_distribution gwy_data_field_subtract_fields gwy_data_field_subtract_legendre gwy_data_field_subtract_poly gwy_data_field_subtract_poly_max gwy_data_field_subtract_polynom gwy_data_field_subtract_row_shifts gwy_data_field_sum_fields gwy_data_field_synth_gaussian_displacement gwy_data_field_threshold gwy_data_field_unrotate_find_corrections gwy_data_field_waterpour gwy_data_field_xdwt gwy_data_field_ydwt gwy_data_field_zoom_fft gwy_data_item_get_type gwy_data_line_acf gwy_data_line_acf_uncertainty gwy_data_line_add gwy_data_line_cda gwy_data_line_cdh gwy_data_line_check_compatibility gwy_data_line_check_compatibility_with_brick_z gwy_data_line_clear gwy_data_line_copy gwy_data_line_copy_units gwy_data_line_copy_units_to_data_field gwy_data_line_correct_laplace gwy_data_line_count_peaks gwy_data_line_cumulate gwy_data_line_cumulate_uncertainty gwy_data_line_da gwy_data_line_data_changed gwy_data_line_dh gwy_data_line_distribution gwy_data_line_dwt gwy_data_line_fft gwy_data_line_fft_raw gwy_data_line_fft_window gwy_data_line_fill gwy_data_line_fit_polynom gwy_data_line_get_avg gwy_data_line_get_data gwy_data_line_get_data_const gwy_data_line_get_der gwy_data_line_get_dval gwy_data_line_get_dval_real gwy_data_line_get_dx gwy_data_line_get_kth_peaks gwy_data_line_get_kurtosis gwy_data_line_get_length gwy_data_line_get_line_coeffs gwy_data_line_get_max gwy_data_line_get_median gwy_data_line_get_min gwy_data_line_get_min_max gwy_data_line_get_modus gwy_data_line_get_offset gwy_data_line_get_ra gwy_data_line_get_real gwy_data_line_get_res gwy_data_line_get_rms gwy_data_line_get_si_unit_x gwy_data_line_get_si_unit_y gwy_data_line_get_skew gwy_data_line_get_sum gwy_data_line_get_tan_beta0 gwy_data_line_get_type gwy_data_line_get_val gwy_data_line_get_value_format_x gwy_data_line_get_value_format_y gwy_data_line_get_variation gwy_data_line_get_xpm gwy_data_line_get_xtm gwy_data_line_get_xvm gwy_data_line_hhcf gwy_data_line_hhcf_uncertainty gwy_data_line_invert gwy_data_line_itor gwy_data_line_line_level gwy_data_line_linear_combination gwy_data_line_max_pos_i gwy_data_line_max_pos_r gwy_data_line_min_pos_i gwy_data_line_min_pos_r gwy_data_line_multiply gwy_data_line_multiply_lines gwy_data_line_new gwy_data_line_new_alike gwy_data_line_new_resampled gwy_data_line_part_add gwy_data_line_part_clear gwy_data_line_part_extract gwy_data_line_part_fft gwy_data_line_part_fill gwy_data_line_part_fit_polynom gwy_data_line_part_get_avg gwy_data_line_part_get_kurtosis gwy_data_line_part_get_max gwy_data_line_part_get_median gwy_data_line_part_get_min gwy_data_line_part_get_min_max gwy_data_line_part_get_modus gwy_data_line_part_get_ra gwy_data_line_part_get_rms gwy_data_line_part_get_skew gwy_data_line_part_get_sum gwy_data_line_part_get_tan_beta0 gwy_data_line_part_get_variation gwy_data_line_part_multiply gwy_data_line_part_subtract_polynom gwy_data_line_part_threshold gwy_data_line_psdf gwy_data_line_resample gwy_data_line_resize gwy_data_line_rotate gwy_data_line_rtoi gwy_data_line_set_offset gwy_data_line_set_real gwy_data_line_set_si_unit_x gwy_data_line_set_si_unit_y gwy_data_line_set_val gwy_data_line_sqrt gwy_data_line_subtract_lines gwy_data_line_subtract_polynom gwy_data_line_sum_lines gwy_data_line_threshold gwy_data_line_zoom_fft gwy_data_validate gwy_data_validate_flags_get_type gwy_data_validation_failure_list_free gwy_data_view_coords_real_to_xy gwy_data_view_coords_real_to_xy_float gwy_data_view_coords_xy_clamp gwy_data_view_coords_xy_cut_line gwy_data_view_coords_xy_to_real gwy_data_view_export_pixbuf gwy_data_view_get_alpha_layer gwy_data_view_get_base_layer gwy_data_view_get_data gwy_data_view_get_data_prefix gwy_data_view_get_hexcess gwy_data_view_get_metric gwy_data_view_get_pixbuf gwy_data_view_get_pixel_data_sizes gwy_data_view_get_real_data_offsets gwy_data_view_get_real_data_sizes gwy_data_view_get_real_zoom gwy_data_view_get_top_layer gwy_data_view_get_type gwy_data_view_get_vexcess gwy_data_view_get_xmeasure gwy_data_view_get_ymeasure gwy_data_view_get_zoom gwy_data_view_layer_get_type gwy_data_view_layer_plugged gwy_data_view_layer_realize gwy_data_view_layer_type_get_type gwy_data_view_layer_unplugged gwy_data_view_layer_unrealize gwy_data_view_layer_updated gwy_data_view_new gwy_data_view_set_alpha_layer gwy_data_view_set_base_layer gwy_data_view_set_data_prefix gwy_data_view_set_top_layer gwy_data_view_set_zoom gwy_data_watch_event_type_get_type gwy_data_window_fit_to_screen gwy_data_window_get_color_axis gwy_data_window_get_data gwy_data_window_get_data_name gwy_data_window_get_data_view gwy_data_window_get_type gwy_data_window_get_ul_corner_widget gwy_data_window_new gwy_data_window_set_data_name gwy_data_window_set_ul_corner_widget gwy_data_window_set_zoom gwy_debug_gnu gwy_debug_objects_clear gwy_debug_objects_creation_detailed gwy_debug_objects_dump_to_file gwy_debug_objects_enable gwy_deserialize_object_hash gwy_dialog_add_buttons gwy_dialog_add_content gwy_dialog_add_param_table gwy_dialog_get_type gwy_dialog_have_result gwy_dialog_invalidate gwy_dialog_new gwy_dialog_outcome_get_type gwy_dialog_remove_param_table gwy_dialog_run gwy_dialog_set_instant_updates_param gwy_dialog_set_preview_func gwy_distance_transform_type_get_enum gwy_distance_transform_type_get_type gwy_draw_data_field_map_adaptive gwy_draw_type_init gwy_dwt_denoise_type_get_enum gwy_dwt_denoise_type_get_type gwy_dwt_set_coefficients gwy_dwt_type_get_enum gwy_dwt_type_get_type gwy_entities gwy_entities_entity_to_utf8 gwy_entities_text_to_utf8 gwy_enum_combo_box_get_active gwy_enum_combo_box_new gwy_enum_combo_box_newl gwy_enum_combo_box_set_active gwy_enum_combo_box_update_int gwy_enum_fill_from_struct gwy_enum_freev gwy_enum_get_type gwy_enum_inventory_new gwy_enum_sanitize_value gwy_enum_to_string gwy_enuml_to_string gwy_expr_compile gwy_expr_define_constant gwy_expr_error_get_type gwy_expr_error_quark gwy_expr_evaluate gwy_expr_execute gwy_expr_free gwy_expr_get_expression gwy_expr_get_variables gwy_expr_new gwy_expr_resolve_variables gwy_expr_undefine_constant gwy_expr_vector_execute gwy_exterior_type_get_type gwy_fd_curve_preset_get_type gwy_fd_curve_presets gwy_fft_find_nice_size gwy_fft_simple gwy_fft_window gwy_fft_window_data_field gwy_file_abandon_contents gwy_file_channel_import_log_add gwy_file_curve_map_import_log_add gwy_file_detect gwy_file_detect_with_score gwy_file_func_current gwy_file_func_exists gwy_file_func_foreach gwy_file_func_get_description gwy_file_func_get_is_detectable gwy_file_func_get_operations gwy_file_func_register gwy_file_func_run_detect gwy_file_func_run_export gwy_file_func_run_load gwy_file_func_run_save gwy_file_func_set_is_detectable gwy_file_get_contents gwy_file_get_data_info gwy_file_get_filename_sys gwy_file_load gwy_file_load_with_func gwy_file_operation_type_get_type gwy_file_save gwy_file_save_with_func gwy_file_volume_import_log_add gwy_file_xyz_import_log_add gwy_filename_ignore gwy_find_self_dir gwy_flags_to_string gwy_fopen gwy_format_result_table_mixed gwy_format_result_table_row gwy_format_result_table_rowv gwy_format_result_table_strings gwy_format_result_table_stringsv gwy_fprintf gwy_func_use_add gwy_func_use_free gwy_func_use_get gwy_func_use_get_filename gwy_func_use_load gwy_func_use_new gwy_func_use_save gwy_get_gboolean8 gwy_get_gdouble_be gwy_get_gdouble_le gwy_get_gfloat_be gwy_get_gfloat_le gwy_get_gint16_be gwy_get_gint16_le gwy_get_gint32_be gwy_get_gint32_le gwy_get_gint64_be gwy_get_gint64_le gwy_get_guint16_be gwy_get_guint16_le gwy_get_guint32_be gwy_get_guint32_le gwy_get_guint64_be gwy_get_guint64_le gwy_get_home_dir gwy_get_pascal_real_be gwy_get_pascal_real_le gwy_get_user_dir gwy_gl_material_get_ambient gwy_gl_material_get_diffuse gwy_gl_material_get_emission gwy_gl_material_get_shininess gwy_gl_material_get_specular gwy_gl_material_get_type gwy_gl_material_reset gwy_gl_material_sample_to_pixbuf gwy_gl_material_selection_get_active gwy_gl_material_selection_new gwy_gl_material_selection_set_active gwy_gl_material_set_ambient gwy_gl_material_set_diffuse gwy_gl_material_set_emission gwy_gl_material_set_shininess gwy_gl_material_set_specular gwy_gl_material_tree_view_new gwy_gl_material_tree_view_set_active gwy_gl_materials gwy_gl_materials_get_gl_material gwy_gradient_delete_point gwy_gradient_get_color gwy_gradient_get_npoints gwy_gradient_get_point gwy_gradient_get_points gwy_gradient_get_samples gwy_gradient_get_type gwy_gradient_insert_point gwy_gradient_insert_point_sorted gwy_gradient_reset gwy_gradient_sample gwy_gradient_sample_to_pixbuf gwy_gradient_selection_get_active gwy_gradient_selection_new gwy_gradient_selection_set_active gwy_gradient_set_from_samples gwy_gradient_set_point gwy_gradient_set_point_color gwy_gradient_set_points gwy_gradient_tree_view_new gwy_gradient_tree_view_set_active gwy_gradients gwy_gradients_get_gradient gwy_grain_quantity_get_type gwy_grain_quantity_get_units gwy_grain_quantity_needs_same_units gwy_grain_value_flags_get_type gwy_grain_value_get_expression gwy_grain_value_get_flags gwy_grain_value_get_group gwy_grain_value_get_power_xy gwy_grain_value_get_power_z gwy_grain_value_get_quantity gwy_grain_value_get_symbol gwy_grain_value_get_symbol_markup gwy_grain_value_get_type gwy_grain_value_group_get_type gwy_grain_value_group_name gwy_grain_value_set_expression gwy_grain_value_set_flags gwy_grain_value_set_power_xy gwy_grain_value_set_power_z gwy_grain_value_set_symbol gwy_grain_value_set_symbol_markup gwy_grain_value_store_column_get_type gwy_grain_value_tree_view_get_enabled gwy_grain_value_tree_view_get_expanded_groups gwy_grain_value_tree_view_n_enabled gwy_grain_value_tree_view_new gwy_grain_value_tree_view_select gwy_grain_value_tree_view_set_enabled gwy_grain_value_tree_view_set_expanded_groups gwy_grain_value_tree_view_set_same_units gwy_grain_values gwy_grain_values_calculate gwy_grain_values_get_builtin_grain_value gwy_grain_values_get_grain_value gwy_grain_values_get_grain_value_by_symbol gwy_graph_area_draw_on_drawable gwy_graph_area_edit_curve gwy_graph_area_enable_user_input gwy_graph_area_export_vector gwy_graph_area_get_cursor gwy_graph_area_get_label gwy_graph_area_get_model gwy_graph_area_get_selection gwy_graph_area_get_status gwy_graph_area_get_type gwy_graph_area_get_x_grid_data gwy_graph_area_get_y_grid_data gwy_graph_area_new gwy_graph_area_set_model gwy_graph_area_set_selection_editable gwy_graph_area_set_status gwy_graph_area_set_x_grid_data gwy_graph_area_set_x_range gwy_graph_area_set_y_grid_data gwy_graph_area_set_y_range gwy_graph_corner_get_type gwy_graph_corner_new gwy_graph_curve_model_enforce_order gwy_graph_curve_model_get_calibration_data gwy_graph_curve_model_get_ndata gwy_graph_curve_model_get_ranges gwy_graph_curve_model_get_type gwy_graph_curve_model_get_x_range gwy_graph_curve_model_get_xdata gwy_graph_curve_model_get_y_range gwy_graph_curve_model_get_ydata gwy_graph_curve_model_is_ordered gwy_graph_curve_model_new gwy_graph_curve_model_new_alike gwy_graph_curve_model_set_calibration_data gwy_graph_curve_model_set_data gwy_graph_curve_model_set_data_from_dataline gwy_graph_curve_model_set_data_interleaved gwy_graph_curve_type_get_enum gwy_graph_curve_type_get_type gwy_graph_curves_get_model gwy_graph_curves_get_type gwy_graph_curves_new gwy_graph_curves_set_model gwy_graph_data_get_model gwy_graph_data_get_type gwy_graph_data_new gwy_graph_data_set_model gwy_graph_draw_curve gwy_graph_draw_grid gwy_graph_draw_line gwy_graph_draw_point gwy_graph_draw_selection_areas gwy_graph_draw_selection_lines gwy_graph_draw_selection_points gwy_graph_draw_selection_xareas gwy_graph_draw_selection_yareas gwy_graph_enable_user_input gwy_graph_export_pixmap gwy_graph_export_postscript gwy_graph_func_current gwy_graph_func_exists gwy_graph_func_foreach gwy_graph_func_get_menu_path gwy_graph_func_get_sensitivity_mask gwy_graph_func_get_stock_id gwy_graph_func_get_tooltip gwy_graph_func_register gwy_graph_func_run gwy_graph_get_area gwy_graph_get_axis gwy_graph_get_model gwy_graph_get_n_preset_colors gwy_graph_get_preset_color gwy_graph_get_status gwy_graph_get_type gwy_graph_grid_type_get_type gwy_graph_label_draw_on_drawable gwy_graph_label_enable_user_input gwy_graph_label_export_vector gwy_graph_label_get_model gwy_graph_label_get_type gwy_graph_label_new gwy_graph_label_position_get_type gwy_graph_label_set_model gwy_graph_model_add_curve gwy_graph_model_append_curves gwy_graph_model_export_ascii gwy_graph_model_export_style_get_type gwy_graph_model_get_axis_label gwy_graph_model_get_curve gwy_graph_model_get_curve_by_description gwy_graph_model_get_curve_index gwy_graph_model_get_n_curves gwy_graph_model_get_ranges gwy_graph_model_get_type gwy_graph_model_get_x_range gwy_graph_model_get_y_range gwy_graph_model_new gwy_graph_model_new_alike gwy_graph_model_remove_all_curves gwy_graph_model_remove_curve gwy_graph_model_remove_curve_by_description gwy_graph_model_replace_curve gwy_graph_model_set_axis_label gwy_graph_model_set_units_from_data_field gwy_graph_model_set_units_from_data_line gwy_graph_model_units_are_compatible gwy_graph_model_x_data_can_be_logarithmed gwy_graph_model_y_data_can_be_logarithmed gwy_graph_new gwy_graph_point_type_get_type gwy_graph_set_axis_visible gwy_graph_set_model gwy_graph_set_status gwy_graph_status_type_get_type gwy_graph_window_get_graph gwy_graph_window_get_graph_curves gwy_graph_window_get_graph_data gwy_graph_window_get_type gwy_graph_window_new gwy_gstring_replace gwy_gstring_to_native_eol gwy_guint_sort gwy_hash_table_to_list_cb gwy_hash_table_to_slist_cb gwy_hbox_new gwy_help_add_to_cmap_dialog gwy_help_add_to_file_dialog gwy_help_add_to_graph_dialog gwy_help_add_to_proc_dialog gwy_help_add_to_tool_dialog gwy_help_add_to_volume_dialog gwy_help_add_to_window gwy_help_add_to_window_uri gwy_help_add_to_xyz_dialog gwy_help_flags_get_type gwy_help_is_available gwy_help_show gwy_hmarker_box_get_type gwy_hmarker_box_new gwy_hruler_get_type gwy_hruler_new gwy_hscale_style_get_type gwy_interpolation_get_dval gwy_interpolation_get_dval_of_equidists gwy_interpolation_get_support_size gwy_interpolation_has_interpolating_basis gwy_interpolation_interpolate_1d gwy_interpolation_interpolate_2d gwy_interpolation_resample_block_1d gwy_interpolation_resample_block_2d gwy_interpolation_resolve_coeffs_1d gwy_interpolation_resolve_coeffs_2d gwy_interpolation_shift_block_1d gwy_interpolation_type_get_enum gwy_interpolation_type_get_type gwy_inventory_can_make_copies gwy_inventory_delete_item gwy_inventory_delete_nth_item gwy_inventory_find gwy_inventory_foreach gwy_inventory_forget_order gwy_inventory_get_default_item gwy_inventory_get_default_item_name gwy_inventory_get_item gwy_inventory_get_item_or_default gwy_inventory_get_item_position gwy_inventory_get_item_type gwy_inventory_get_n_items gwy_inventory_get_nth_item gwy_inventory_get_type gwy_inventory_insert_item gwy_inventory_insert_nth_item gwy_inventory_is_const gwy_inventory_item_updated gwy_inventory_new gwy_inventory_new_filled gwy_inventory_new_from_array gwy_inventory_new_item gwy_inventory_nth_item_updated gwy_inventory_rename_item gwy_inventory_restore_order gwy_inventory_set_default_item_name gwy_inventory_store_get_column_by_name gwy_inventory_store_get_inventory gwy_inventory_store_get_iter gwy_inventory_store_get_type gwy_inventory_store_iter_is_valid gwy_inventory_store_new gwy_label_new_header gwy_lawn_area_reduce_to_plane gwy_lawn_check_compatibility gwy_lawn_clear gwy_lawn_copy gwy_lawn_copy_units gwy_lawn_curve_set_segments gwy_lawn_data_changed gwy_lawn_get_curve_data gwy_lawn_get_curve_data_const gwy_lawn_get_curve_label gwy_lawn_get_curve_length gwy_lawn_get_curves_data_const gwy_lawn_get_dx gwy_lawn_get_dy gwy_lawn_get_n_curves gwy_lawn_get_n_segments gwy_lawn_get_segment_label gwy_lawn_get_segments gwy_lawn_get_si_unit_curve gwy_lawn_get_si_unit_xy gwy_lawn_get_type gwy_lawn_get_value_format_curve gwy_lawn_get_value_format_xy gwy_lawn_get_xoffset gwy_lawn_get_xreal gwy_lawn_get_xres gwy_lawn_get_yoffset gwy_lawn_get_yreal gwy_lawn_get_yres gwy_lawn_invert gwy_lawn_new gwy_lawn_new_alike gwy_lawn_new_part gwy_lawn_new_rotated_90 gwy_lawn_reduce_to_plane gwy_lawn_set_curve_data gwy_lawn_set_curve_label gwy_lawn_set_curves gwy_lawn_set_segment_label gwy_lawn_set_segments gwy_lawn_set_si_unit_curve gwy_lawn_set_si_unit_xy gwy_lawn_set_xoffset gwy_lawn_set_xreal gwy_lawn_set_yoffset gwy_lawn_set_yreal gwy_layer_basic_get_gradient_key gwy_layer_basic_get_has_presentation gwy_layer_basic_get_min_max_key gwy_layer_basic_get_presentation_key gwy_layer_basic_get_range gwy_layer_basic_get_range_type gwy_layer_basic_get_range_type_key gwy_layer_basic_get_type gwy_layer_basic_new gwy_layer_basic_range_type_get_type gwy_layer_basic_set_gradient_key gwy_layer_basic_set_min_max_key gwy_layer_basic_set_presentation_key gwy_layer_basic_set_range_type_key gwy_layer_func_foreach gwy_layer_func_register gwy_layer_mask_get_color gwy_layer_mask_get_color_key gwy_layer_mask_get_type gwy_layer_mask_new gwy_layer_mask_set_color_key gwy_line_stat_quantity_get_type gwy_list_store_row_changed gwy_log_get_enabled gwy_log_set_enabled gwy_marker_box_add_marker gwy_marker_box_get_flipped gwy_marker_box_get_highlight_selected gwy_marker_box_get_marker_position gwy_marker_box_get_markers gwy_marker_box_get_nmarkers gwy_marker_box_get_selected_marker gwy_marker_box_get_type gwy_marker_box_get_validator gwy_marker_box_remove_marker gwy_marker_box_set_flipped gwy_marker_box_set_highlight_selected gwy_marker_box_set_marker_position gwy_marker_box_set_markers gwy_marker_box_set_selected_marker gwy_marker_box_set_validator gwy_marker_operation_type_get_type gwy_mask_color_selector_run gwy_masking_type_get_enum gwy_masking_type_get_type gwy_math_choleski_decompose gwy_math_choleski_invert gwy_math_choleski_solve gwy_math_curvature gwy_math_curvature_at_apex gwy_math_curvature_at_origin gwy_math_fallback_acosh gwy_math_fallback_asinh gwy_math_fallback_atanh gwy_math_fallback_cbrt gwy_math_fallback_hypot gwy_math_fallback_isinf gwy_math_fallback_isnan gwy_math_fallback_pow10 gwy_math_fallback_powi gwy_math_find_minimum_1d gwy_math_find_nearest_line gwy_math_find_nearest_point gwy_math_fit_polynom gwy_math_histogram gwy_math_humanize_numbers gwy_math_is_in_polygon gwy_math_kth_rank gwy_math_kth_ranks gwy_math_lin_solve gwy_math_lin_solve_rewrite gwy_math_median gwy_math_median_uncertainty gwy_math_nlfit_copy gwy_math_nlfit_derive gwy_math_nlfit_diff gwy_math_nlfit_diff_idx gwy_math_nlfit_fit gwy_math_nlfit_fit_full gwy_math_nlfit_fit_idx gwy_math_nlfit_fit_idx_full gwy_math_nlfit_free gwy_math_nlfit_get_approx_geometric gwy_math_nlfit_get_correlations gwy_math_nlfit_get_covar gwy_math_nlfit_get_dispersion gwy_math_nlfit_get_eval gwy_math_nlfit_get_max_iterations gwy_math_nlfit_get_nparam gwy_math_nlfit_get_sigma gwy_math_nlfit_map_free_params gwy_math_nlfit_new gwy_math_nlfit_new_idx gwy_math_nlfit_set_approx_geometric gwy_math_nlfit_set_callbacks gwy_math_nlfit_set_max_iterations gwy_math_nlfit_succeeded gwy_math_percentiles gwy_math_refine_maximum gwy_math_refine_maximum_1d gwy_math_refine_maximum_2d gwy_math_sort gwy_math_sort_with_index gwy_math_tridiag_solve_rewrite gwy_math_trimmed_mean gwy_md5_get_digest gwy_memcpy_byte_swap gwy_memmem gwy_menu_gl_material gwy_menu_gradient gwy_menu_sens_flags_get_type gwy_merge_type_get_enum gwy_merge_type_get_type gwy_mfm_component_type_get_type gwy_mfm_gradient_type_get_type gwy_mfm_probe_type_get_type gwy_min_max_filter_type_get_type gwy_module_browser gwy_module_data_fopen gwy_module_data_load gwy_module_data_save gwy_module_disable_registration gwy_module_enable_registration gwy_module_error_get_type gwy_module_error_quark gwy_module_failure_foreach gwy_module_file_error_get_type gwy_module_file_error_quark gwy_module_foreach gwy_module_get_filename gwy_module_get_functions gwy_module_is_enabled gwy_module_lookup gwy_module_register_module gwy_module_register_modules gwy_nl_fit_param_flags_get_type gwy_nlfit_preset_create_fitter gwy_nlfit_preset_fit gwy_nlfit_preset_get_formula gwy_nlfit_preset_get_nparams gwy_nlfit_preset_get_param_name gwy_nlfit_preset_get_param_units gwy_nlfit_preset_get_type gwy_nlfit_preset_get_value gwy_nlfit_preset_guess gwy_nlfit_presets gwy_null_store_get_model gwy_null_store_get_n_rows gwy_null_store_get_type gwy_null_store_iter_is_valid gwy_null_store_new gwy_null_store_row_changed gwy_null_store_rows_changed gwy_null_store_set_model gwy_null_store_set_n_rows gwy_object_set_or_reset gwy_orientation_get_enum gwy_orientation_get_type gwy_param_active_page_link_to_notebook gwy_param_def_add_active_page gwy_param_def_add_angle gwy_param_def_add_boolean gwy_param_def_add_curve_map_id gwy_param_def_add_double gwy_param_def_add_enum gwy_param_def_add_grain_groups gwy_param_def_add_graph_curve gwy_param_def_add_graph_id gwy_param_def_add_gwyenum gwy_param_def_add_gwyflags gwy_param_def_add_image_id gwy_param_def_add_instant_updates gwy_param_def_add_int gwy_param_def_add_lawn_curve gwy_param_def_add_lawn_segment gwy_param_def_add_mask_color gwy_param_def_add_percentage gwy_param_def_add_randomize gwy_param_def_add_report_type gwy_param_def_add_resource gwy_param_def_add_seed gwy_param_def_add_string gwy_param_def_add_target_graph gwy_param_def_add_unit gwy_param_def_add_volume_id gwy_param_def_add_xyz_id gwy_param_def_get_function_name gwy_param_def_get_param_label gwy_param_def_get_param_name gwy_param_def_get_type gwy_param_def_make_resource_type gwy_param_def_new gwy_param_def_set_function_name gwy_param_resource_get_params gwy_param_resource_get_type gwy_param_table_add_enabler gwy_param_table_alt_set_brick_pixel_x gwy_param_table_alt_set_brick_pixel_y gwy_param_table_alt_set_brick_pixel_z gwy_param_table_alt_set_calibration gwy_param_table_alt_set_field_frac_z gwy_param_table_alt_set_field_pixel_x gwy_param_table_alt_set_field_pixel_y gwy_param_table_alt_set_lawn_pixel_x gwy_param_table_alt_set_lawn_pixel_y gwy_param_table_alt_set_linear gwy_param_table_append_button gwy_param_table_append_checkbox gwy_param_table_append_checkboxes gwy_param_table_append_combo gwy_param_table_append_curve_map_id gwy_param_table_append_entry gwy_param_table_append_foreign gwy_param_table_append_graph_curve gwy_param_table_append_graph_id gwy_param_table_append_header gwy_param_table_append_image_id gwy_param_table_append_info gwy_param_table_append_lawn_curve gwy_param_table_append_lawn_segment gwy_param_table_append_mask_color gwy_param_table_append_message gwy_param_table_append_radio gwy_param_table_append_radio_buttons gwy_param_table_append_radio_header gwy_param_table_append_radio_item gwy_param_table_append_radio_row gwy_param_table_append_report gwy_param_table_append_results gwy_param_table_append_resultsv gwy_param_table_append_seed gwy_param_table_append_separator gwy_param_table_append_slider gwy_param_table_append_target_graph gwy_param_table_append_unit_chooser gwy_param_table_append_volume_id gwy_param_table_append_xyz_id gwy_param_table_checkboxes_set_sensitive gwy_param_table_combo_refilter gwy_param_table_combo_set_filter gwy_param_table_data_id_refilter gwy_param_table_data_id_set_filter gwy_param_table_entry_set_instant_changes gwy_param_table_entry_set_value_format gwy_param_table_entry_set_width gwy_param_table_exists gwy_param_table_get_type gwy_param_table_graph_curve_set_model gwy_param_table_info_set_add_punctuation gwy_param_table_info_set_valuestr gwy_param_table_message_set_type gwy_param_table_new gwy_param_table_param_changed gwy_param_table_params gwy_param_table_radio_set_sensitive gwy_param_table_report_set_formatter gwy_param_table_report_set_results gwy_param_table_reset gwy_param_table_results_clear gwy_param_table_results_fill gwy_param_table_set_boolean gwy_param_table_set_curve gwy_param_table_set_data_id gwy_param_table_set_double gwy_param_table_set_enum gwy_param_table_set_flags gwy_param_table_set_from_params gwy_param_table_set_int gwy_param_table_set_label gwy_param_table_set_no_reset gwy_param_table_set_no_resetv gwy_param_table_set_sensitive gwy_param_table_set_string gwy_param_table_set_unitstr gwy_param_table_slider_add_alt gwy_param_table_slider_restrict_range gwy_param_table_slider_set_digits gwy_param_table_slider_set_factor gwy_param_table_slider_set_mapping gwy_param_table_slider_set_snapping gwy_param_table_slider_set_steps gwy_param_table_slider_set_transform gwy_param_table_widget gwy_params_assign gwy_params_data_id_is_none gwy_params_duplicate gwy_params_get_boolean gwy_params_get_color gwy_params_get_curve_map gwy_params_get_data_id gwy_params_get_def gwy_params_get_double gwy_params_get_enum gwy_params_get_flags gwy_params_get_graph gwy_params_get_image gwy_params_get_int gwy_params_get_mask gwy_params_get_masking gwy_params_get_report_type gwy_params_get_resource gwy_params_get_string gwy_params_get_type gwy_params_get_unit gwy_params_get_volume gwy_params_get_xyz gwy_params_load_from_settings gwy_params_new gwy_params_new_from_settings gwy_params_randomize_seed gwy_params_reset gwy_params_reset_all gwy_params_save_to_settings gwy_params_set_boolean gwy_params_set_color gwy_params_set_curve gwy_params_set_curve_map_id gwy_params_set_def gwy_params_set_double gwy_params_set_enum gwy_params_set_flag gwy_params_set_flags gwy_params_set_graph_id gwy_params_set_image_id gwy_params_set_int gwy_params_set_report_type gwy_params_set_resource gwy_params_set_string gwy_params_set_unit gwy_params_set_volume_id gwy_params_set_xyz_id gwy_peak_background_type_get_type gwy_peak_order_type_get_type gwy_peak_quantity_get_type gwy_peaks_analyze gwy_peaks_analyze_dataline gwy_peaks_analyze_xy gwy_peaks_copy gwy_peaks_free gwy_peaks_get_quantity gwy_peaks_get_type gwy_peaks_n_peaks gwy_peaks_new gwy_peaks_set_background gwy_peaks_set_order gwy_percentile_interpolation_type_get_type gwy_pixbuf_draw_data_field gwy_pixbuf_draw_data_field_adaptive gwy_pixbuf_draw_data_field_as_mask gwy_pixbuf_draw_data_field_with_range gwy_pixmap_layer_get_data_key gwy_pixmap_layer_get_type gwy_pixmap_layer_make_pixbuf gwy_pixmap_layer_paint gwy_pixmap_layer_set_data_key gwy_pixmap_layer_wants_repaint gwy_plain_tool_add_clear_button gwy_plain_tool_add_param_table gwy_plain_tool_changed_get_type gwy_plain_tool_check_layer_type gwy_plain_tool_connect_selection gwy_plain_tool_enable_object_deletion gwy_plain_tool_ensure_layer gwy_plain_tool_get_type gwy_plain_tool_get_z_average gwy_plain_tool_log_add gwy_plain_tool_set_selection_key gwy_plane_fit_quantity_get_type gwy_plane_symmetry_get_enum gwy_plane_symmetry_get_type gwy_preview_surface_flags_get_type gwy_preview_surface_to_datafield gwy_preview_type_get_type gwy_process_func_current gwy_process_func_exists gwy_process_func_foreach gwy_process_func_get_menu_path gwy_process_func_get_run_types gwy_process_func_get_sensitivity_mask gwy_process_func_get_stock_id gwy_process_func_get_tooltip gwy_process_func_register gwy_process_func_run gwy_process_type_init gwy_radio_button_get_value gwy_radio_button_set_value gwy_radio_buttons_attach_to_table gwy_radio_buttons_create gwy_radio_buttons_createl gwy_radio_buttons_find gwy_radio_buttons_get_current gwy_radio_buttons_set_current gwy_radio_buttons_set_sensitive gwy_rand_gen_set_choose_shuffle gwy_rand_gen_set_double gwy_rand_gen_set_exponential gwy_rand_gen_set_fill_doubles gwy_rand_gen_set_fill_ints gwy_rand_gen_set_free gwy_rand_gen_set_gaussian gwy_rand_gen_set_init gwy_rand_gen_set_int gwy_rand_gen_set_multiplier gwy_rand_gen_set_new gwy_rand_gen_set_range gwy_rand_gen_set_rng gwy_rand_gen_set_triangular gwy_rand_gen_set_uniform gwy_raw_data_size gwy_raw_data_type_get_type gwy_rect_selection_labels_fill gwy_rect_selection_labels_get_table gwy_rect_selection_labels_new gwy_rect_selection_labels_select gwy_rendering_target_get_type gwy_require_image_same_units gwy_require_square_image gwy_resource_build_filename gwy_resource_class_get_inventory gwy_resource_class_get_item_type gwy_resource_class_get_name gwy_resource_class_load gwy_resource_class_mkdir gwy_resource_class_save_modified gwy_resource_classes_finalize gwy_resource_data_changed gwy_resource_data_saved gwy_resource_delete gwy_resource_dump gwy_resource_editor_class_setup gwy_resource_editor_commit gwy_resource_editor_get_edited gwy_resource_editor_get_type gwy_resource_editor_queue_commit gwy_resource_editor_setup gwy_resource_get_is_modifiable gwy_resource_get_is_preferred gwy_resource_get_name gwy_resource_get_type gwy_resource_is_used gwy_resource_parse gwy_resource_release gwy_resource_rename gwy_resource_save gwy_resource_set_is_preferred gwy_resource_tree_view_set_active gwy_resource_use gwy_response_type_get_type gwy_results_add_covariance_matrix gwy_results_add_covariance_matrixv gwy_results_add_format gwy_results_add_header gwy_results_add_separator gwy_results_add_value gwy_results_add_value_angle gwy_results_add_value_int gwy_results_add_value_percents gwy_results_add_value_plain gwy_results_add_value_str gwy_results_add_value_x gwy_results_add_value_y gwy_results_add_value_yesno gwy_results_add_value_z gwy_results_bind_formats gwy_results_copy gwy_results_create_report gwy_results_export_get_format gwy_results_export_get_results gwy_results_export_get_style gwy_results_export_get_type gwy_results_export_new gwy_results_export_set_actions_sensitive gwy_results_export_set_format gwy_results_export_set_format_func gwy_results_export_set_results gwy_results_export_set_style gwy_results_export_set_title gwy_results_export_style_get_type gwy_results_fill_channel gwy_results_fill_covariance_matrix gwy_results_fill_curve_map gwy_results_fill_filename gwy_results_fill_format gwy_results_fill_graph gwy_results_fill_graph_curve gwy_results_fill_lawn_curve gwy_results_fill_values gwy_results_fill_values_with_errors gwy_results_fill_volume gwy_results_fill_xyz gwy_results_get_error gwy_results_get_full gwy_results_get_label gwy_results_get_label_with_symbol gwy_results_get_symbol gwy_results_get_type gwy_results_get_units gwy_results_get_value gwy_results_get_value_with_error gwy_results_new gwy_results_report_type_get_type gwy_results_set_na gwy_results_set_nav gwy_results_set_unit gwy_results_set_unit_str gwy_results_unbind_formats gwy_results_value_is_na gwy_results_value_type_get_type gwy_rgba_copy gwy_rgba_free gwy_rgba_from_gdk_color gwy_rgba_from_gdk_color_and_alpha gwy_rgba_from_pixbuf_pixel gwy_rgba_get_from_container gwy_rgba_get_type gwy_rgba_interpolate gwy_rgba_new gwy_rgba_remove_from_container gwy_rgba_set_gdk_gc_bg gwy_rgba_set_gdk_gc_fg gwy_rgba_store_to_container gwy_rgba_to_gdk_alpha gwy_rgba_to_gdk_color gwy_rgba_to_hex6 gwy_rgba_to_hex8 gwy_rgba_to_pixbuf_pixel gwy_rotate_resize_type_get_type gwy_ruler_draw_pos gwy_ruler_get_range gwy_ruler_get_si_unit gwy_ruler_get_type gwy_ruler_get_units_placement gwy_ruler_set_range gwy_ruler_set_si_unit gwy_ruler_set_units_placement gwy_run_subdialog gwy_run_type_get_type gwy_save_auxiliary_data gwy_save_auxiliary_with_callback gwy_scale_mapping_type_get_type gwy_sci_text_get_entry gwy_sci_text_get_has_preview gwy_sci_text_get_text gwy_sci_text_get_type gwy_sci_text_new gwy_sci_text_set_has_preview gwy_sci_text_set_text gwy_select_in_filtered_inventory_treeeview gwy_selection_changed gwy_selection_clear gwy_selection_crop gwy_selection_delete_object gwy_selection_filter gwy_selection_finished gwy_selection_get_data gwy_selection_get_max_objects gwy_selection_get_object gwy_selection_get_object_size gwy_selection_get_type gwy_selection_graph_1darea_get_type gwy_selection_graph_1darea_new gwy_selection_graph_area_get_type gwy_selection_graph_area_new gwy_selection_graph_line_get_type gwy_selection_graph_line_new gwy_selection_graph_point_get_type gwy_selection_graph_point_new gwy_selection_graph_zoom_get_type gwy_selection_graph_zoom_new gwy_selection_is_full gwy_selection_move gwy_selection_set_data gwy_selection_set_max_objects gwy_selection_set_object gwy_sensitivity_group_add_widget gwy_sensitivity_group_contains_widget gwy_sensitivity_group_get_state gwy_sensitivity_group_get_type gwy_sensitivity_group_get_widget_mask gwy_sensitivity_group_new gwy_sensitivity_group_release_widget gwy_sensitivity_group_set_state gwy_sensitivity_group_set_widget_mask gwy_serializable_clone gwy_serializable_clone_with_type gwy_serializable_deserialize gwy_serializable_duplicate gwy_serializable_get_size gwy_serializable_get_type gwy_serializable_serialize gwy_serialize_check_string gwy_serialize_get_items_size gwy_serialize_get_struct_size gwy_serialize_object_items gwy_serialize_pack_object_struct gwy_serialize_unpack_object_struct gwy_set_data_preview_size gwy_set_member_object gwy_sgettext gwy_shader_get_gradient gwy_shader_get_phi gwy_shader_get_theta gwy_shader_get_type gwy_shader_get_update_policy gwy_shader_new gwy_shader_set_angle gwy_shader_set_gradient gwy_shader_set_phi gwy_shader_set_theta gwy_shader_set_update_policy gwy_shape_fit_preset_calculate_xyz gwy_shape_fit_preset_calculate_z gwy_shape_fit_preset_create_fitter gwy_shape_fit_preset_fit gwy_shape_fit_preset_get_nparams gwy_shape_fit_preset_get_nsecondary gwy_shape_fit_preset_get_param_description gwy_shape_fit_preset_get_param_flags gwy_shape_fit_preset_get_param_name gwy_shape_fit_preset_get_param_power_xy gwy_shape_fit_preset_get_param_power_z gwy_shape_fit_preset_get_param_units gwy_shape_fit_preset_get_secondary_description gwy_shape_fit_preset_get_secondary_error gwy_shape_fit_preset_get_secondary_flags gwy_shape_fit_preset_get_secondary_name gwy_shape_fit_preset_get_secondary_power_xy gwy_shape_fit_preset_get_secondary_power_z gwy_shape_fit_preset_get_secondary_units gwy_shape_fit_preset_get_secondary_value gwy_shape_fit_preset_get_type gwy_shape_fit_preset_get_value gwy_shape_fit_preset_guess gwy_shape_fit_preset_needs_same_units gwy_shape_fit_preset_quick_fit gwy_shape_fit_preset_setup gwy_shape_fit_presets gwy_si_unit_divide gwy_si_unit_equal gwy_si_unit_equal_string gwy_si_unit_factor_to_base gwy_si_unit_format_style_get_type gwy_si_unit_get_format gwy_si_unit_get_format_for_power10 gwy_si_unit_get_format_with_digits gwy_si_unit_get_format_with_resolution gwy_si_unit_get_string gwy_si_unit_get_type gwy_si_unit_multiply gwy_si_unit_new gwy_si_unit_new_parse gwy_si_unit_nth_root gwy_si_unit_power gwy_si_unit_power_multiply gwy_si_unit_set_from_string gwy_si_unit_set_from_string_parse gwy_si_unit_value_format_clone gwy_si_unit_value_format_copy gwy_si_unit_value_format_free gwy_si_unit_value_format_new gwy_si_unit_value_format_set_units gwy_si_value_format_get_type gwy_sinc gwy_spectra_add_spectrum gwy_spectra_clear gwy_spectra_data_changed gwy_spectra_find_nearest gwy_spectra_get_n_spectra gwy_spectra_get_si_unit_xy gwy_spectra_get_spectrum gwy_spectra_get_spectrum_selected gwy_spectra_get_spectrum_x_label gwy_spectra_get_spectrum_y_label gwy_spectra_get_title gwy_spectra_get_type gwy_spectra_itoxy gwy_spectra_new gwy_spectra_new_alike gwy_spectra_remove_spectrum gwy_spectra_set_si_unit_xy gwy_spectra_set_spectrum gwy_spectra_set_spectrum_selected gwy_spectra_set_spectrum_x_label gwy_spectra_set_spectrum_y_label gwy_spectra_set_title gwy_spectra_setpos gwy_spectra_xytoi gwy_spline_copy gwy_spline_free gwy_spline_get_closed gwy_spline_get_npoints gwy_spline_get_points gwy_spline_get_slackness gwy_spline_get_tangents gwy_spline_get_type gwy_spline_length gwy_spline_new gwy_spline_new_from_points gwy_spline_sample_naturally gwy_spline_sample_uniformly gwy_spline_set_closed gwy_spline_set_points gwy_spline_set_slackness gwy_statusbar_get_type gwy_statusbar_new gwy_statusbar_set_markup gwy_stock_like_button_new gwy_stock_register_stock_items gwy_str_fixed_font_width gwy_str_next_line gwy_stramong gwy_strdiffpos gwy_string_list_append gwy_string_list_append_take gwy_string_list_clear gwy_string_list_get gwy_string_list_get_length gwy_string_list_get_type gwy_string_list_new gwy_string_to_enum gwy_string_to_flags gwy_strisident gwy_strkill gwy_strreplace gwy_surface_copy gwy_surface_copy_units gwy_surface_copy_units_to_data_field gwy_surface_data_changed gwy_surface_get gwy_surface_get_data gwy_surface_get_data_const gwy_surface_get_data_full gwy_surface_get_min_max gwy_surface_get_npoints gwy_surface_get_si_unit_xy gwy_surface_get_si_unit_z gwy_surface_get_type gwy_surface_get_value_format_xy gwy_surface_get_value_format_z gwy_surface_get_xrange gwy_surface_get_yrange gwy_surface_invalidate gwy_surface_new gwy_surface_new_alike gwy_surface_new_from_data gwy_surface_new_part gwy_surface_new_sized gwy_surface_reduce_points gwy_surface_resize gwy_surface_set gwy_surface_set_data_full gwy_surface_set_from_data_field gwy_surface_set_from_data_field_mask gwy_surface_set_si_unit_xy gwy_surface_set_si_unit_z gwy_surface_xy_is_compatible gwy_synth_add_result_to_file gwy_synth_append_dimensions_to_param_table gwy_synth_define_dimensions_params gwy_synth_dims_flags_get_type gwy_synth_dims_param_get_type gwy_synth_handle_param_changed gwy_synth_make_preview_data_field gwy_synth_make_result_data_field gwy_synth_response_type_get_type gwy_synth_sanitise_params gwy_synth_update_lateral_alts gwy_synth_update_like_current_button_sensitivity gwy_synth_update_progress gwy_synth_update_type_get_type gwy_synth_update_value_unitstrs gwy_synth_use_dimensions_template gwy_table_attach_adjbar gwy_table_attach_hscale gwy_table_attach_row gwy_table_attach_spinbutton gwy_table_get_child_widget gwy_table_hscale_get_check gwy_table_hscale_get_label gwy_table_hscale_get_middle_widget gwy_table_hscale_get_scale gwy_table_hscale_get_units gwy_table_hscale_set_sensitive gwy_text_header_context_get_lineno gwy_text_header_context_get_section gwy_text_header_error_get_type gwy_text_header_error_quark gwy_text_header_parse gwy_threads_are_enabled gwy_threads_set_enabled gwy_ticks_style_get_type gwy_tip_cmap gwy_tip_dilation gwy_tip_erosion gwy_tip_estimate_full gwy_tip_estimate_partial gwy_tip_model_get_npresets gwy_tip_model_get_preset gwy_tip_model_get_preset_by_name gwy_tip_model_get_preset_group_name gwy_tip_model_get_preset_id gwy_tip_model_get_preset_nparams gwy_tip_model_get_preset_params gwy_tip_model_get_preset_tip_name gwy_tip_model_preset_create gwy_tip_model_preset_create_for_zrange gwy_tip_model_preset_get_type gwy_tip_param_type_get_type gwy_tip_type_get_type gwy_tool_add_hide_button gwy_tool_class_get_stock_id gwy_tool_class_get_title gwy_tool_class_get_tooltip gwy_tool_data_switched gwy_tool_func_foreach gwy_tool_func_register gwy_tool_get_type gwy_tool_hide gwy_tool_is_visible gwy_tool_like_button_new gwy_tool_response_type_get_type gwy_tool_restore_screen_position gwy_tool_show gwy_tool_spectra_switched gwy_tool_switch_event_get_type gwy_transform_direction_get_type gwy_triangulation_boundary gwy_triangulation_data_free gwy_triangulation_delaunay gwy_triangulation_get_type gwy_triangulation_interpolate gwy_triangulation_new gwy_triangulation_triangulate gwy_triangulation_triangulate_iterative gwy_triangulation_voronoi gwy_type_init gwy_undo_checkpoint gwy_undo_checkpointv gwy_undo_container_get_modified gwy_undo_container_has_redo gwy_undo_container_has_undo gwy_undo_container_remove gwy_undo_container_set_unmodified gwy_undo_get_enabled gwy_undo_qcheckpoint gwy_undo_qcheckpointv gwy_undo_redo_container gwy_undo_set_enabled gwy_undo_undo_container gwy_units_placement_get_type gwy_utf16_to_utf8 gwy_utf8_strescape gwy_vbox_new gwy_vector_layer_button_press gwy_vector_layer_button_release gwy_vector_layer_class_get_selection_type gwy_vector_layer_draw gwy_vector_layer_ensure_selection gwy_vector_layer_get_editable gwy_vector_layer_get_focus gwy_vector_layer_get_selection_key gwy_vector_layer_get_type gwy_vector_layer_key_press gwy_vector_layer_key_release gwy_vector_layer_motion_notify gwy_vector_layer_object_chosen gwy_vector_layer_set_editable gwy_vector_layer_set_focus gwy_vector_layer_set_selection_key gwy_version_major gwy_version_minor gwy_version_string gwy_visibility_reset_type_get_type gwy_volume_func_current gwy_volume_func_exists gwy_volume_func_foreach gwy_volume_func_get_menu_path gwy_volume_func_get_run_types gwy_volume_func_get_sensitivity_mask gwy_volume_func_get_stock_id gwy_volume_func_get_tooltip gwy_volume_func_register gwy_volume_func_run gwy_vruler_get_type gwy_vruler_new gwy_watershed_state_type_get_type gwy_widget_get_activate_on_unfocus gwy_widget_set_activate_on_unfocus gwy_widget_sync_sensitivity gwy_widgets_get_gl_config gwy_widgets_gl_init gwy_widgets_type_init gwy_windowing_type_get_enum gwy_windowing_type_get_type gwy_xlnx_int gwy_xy_copy gwy_xy_free gwy_xy_get_type gwy_xy_new gwy_xyz_copy gwy_xyz_free gwy_xyz_func_current gwy_xyz_func_exists gwy_xyz_func_foreach gwy_xyz_func_get_menu_path gwy_xyz_func_get_run_types gwy_xyz_func_get_sensitivity_mask gwy_xyz_func_get_stock_id gwy_xyz_func_get_tooltip gwy_xyz_func_register gwy_xyz_func_run gwy_xyz_get_type gwy_xyz_new +syn keyword gwyddionFunction gwy_2d_cwt_wavelet_type_get_enum gwy_2d_cwt_wavelet_type_get_type gwy_3d_label_expand_text gwy_3d_label_get_text gwy_3d_label_get_type gwy_3d_label_new gwy_3d_label_reset gwy_3d_label_reset_text gwy_3d_label_set_text gwy_3d_label_user_size gwy_3d_movement_get_type gwy_3d_projection_get_type gwy_3d_setup_get_type gwy_3d_setup_new gwy_3d_view_class_disable_axis_drawing gwy_3d_view_get_data gwy_3d_view_get_data_key gwy_3d_view_get_gradient_key gwy_3d_view_get_label gwy_3d_view_get_mask_key gwy_3d_view_get_material_key gwy_3d_view_get_movement_type gwy_3d_view_get_pixbuf gwy_3d_view_get_pixbuf_with_alpha gwy_3d_view_get_reduced_size gwy_3d_view_get_scale_range gwy_3d_view_get_setup gwy_3d_view_get_setup_prefix gwy_3d_view_get_type gwy_3d_view_label_get_type gwy_3d_view_new gwy_3d_view_set_data_key gwy_3d_view_set_gradient_key gwy_3d_view_set_mask_key gwy_3d_view_set_material_key gwy_3d_view_set_movement_type gwy_3d_view_set_ovlay gwy_3d_view_set_reduced_size gwy_3d_view_set_scale_range gwy_3d_view_set_setup_prefix gwy_3d_visualization_get_type gwy_3d_window_add_action_widget gwy_3d_window_add_small_toolbar_button gwy_3d_window_get_3d_view gwy_3d_window_get_type gwy_3d_window_new gwy_3d_window_set_overlay_chooser gwy_adjust_bar_get_adjustment gwy_adjust_bar_get_bar_sensitive gwy_adjust_bar_get_check_button gwy_adjust_bar_get_has_check_button gwy_adjust_bar_get_label gwy_adjust_bar_get_mapping gwy_adjust_bar_get_snap_to_ticks gwy_adjust_bar_get_type gwy_adjust_bar_new gwy_adjust_bar_set_adjustment gwy_adjust_bar_set_bar_sensitive gwy_adjust_bar_set_has_check_button gwy_adjust_bar_set_mapping gwy_adjust_bar_set_snap_to_ticks gwy_affine_scaling_type_get_type gwy_app_add_graph_or_curves gwy_app_add_main_accel_group gwy_app_build_curve_map_menu gwy_app_build_graph_menu gwy_app_build_process_menu gwy_app_build_volume_menu gwy_app_build_xyz_menu gwy_app_channel_check_nonsquare gwy_app_channel_log_add gwy_app_channel_log_add_proc gwy_app_channel_mask_of_nans gwy_app_channel_remove_bad_data gwy_app_channel_title_fall_back gwy_app_current_tool gwy_app_current_tool_name gwy_app_curve_map_log_add gwy_app_curve_map_log_add_curve_map gwy_app_data_browser_add gwy_app_data_browser_add_brick gwy_app_data_browser_add_channel_watch gwy_app_data_browser_add_curve_map_watch gwy_app_data_browser_add_data_field gwy_app_data_browser_add_graph_model gwy_app_data_browser_add_graph_watch gwy_app_data_browser_add_lawn gwy_app_data_browser_add_spectra gwy_app_data_browser_add_surface gwy_app_data_browser_add_volume_watch gwy_app_data_browser_add_xyz_watch gwy_app_data_browser_copy_channel gwy_app_data_browser_copy_curve_map gwy_app_data_browser_copy_volume gwy_app_data_browser_copy_xyz gwy_app_data_browser_find_curve_map_by_title gwy_app_data_browser_find_data_by_title gwy_app_data_browser_find_graphs_by_title gwy_app_data_browser_find_spectra_by_title gwy_app_data_browser_find_volume_by_title gwy_app_data_browser_find_xyz_by_title gwy_app_data_browser_foreach gwy_app_data_browser_get gwy_app_data_browser_get_current gwy_app_data_browser_get_curve_map_ids gwy_app_data_browser_get_data_ids gwy_app_data_browser_get_graph_ids gwy_app_data_browser_get_gui_enabled gwy_app_data_browser_get_keep_invisible gwy_app_data_browser_get_number gwy_app_data_browser_get_spectra_ids gwy_app_data_browser_get_volume_ids gwy_app_data_browser_get_xyz_ids gwy_app_data_browser_merge gwy_app_data_browser_remove gwy_app_data_browser_remove_channel_watch gwy_app_data_browser_remove_curve_map_watch gwy_app_data_browser_remove_graph_watch gwy_app_data_browser_remove_volume_watch gwy_app_data_browser_remove_xyz_watch gwy_app_data_browser_reset_visibility gwy_app_data_browser_restore gwy_app_data_browser_select_brick gwy_app_data_browser_select_curve_map gwy_app_data_browser_select_data_field gwy_app_data_browser_select_data_view gwy_app_data_browser_select_graph gwy_app_data_browser_select_graph_model gwy_app_data_browser_select_lawn gwy_app_data_browser_select_spectra gwy_app_data_browser_select_surface gwy_app_data_browser_select_volume gwy_app_data_browser_select_xyz gwy_app_data_browser_set_gui_enabled gwy_app_data_browser_set_keep_invisible gwy_app_data_browser_show gwy_app_data_browser_show_3d gwy_app_data_browser_shut_down gwy_app_data_clear_selections gwy_app_data_id_copy gwy_app_data_id_free gwy_app_data_id_get_type gwy_app_data_id_new gwy_app_data_id_verify_channel gwy_app_data_id_verify_curve_map gwy_app_data_id_verify_graph gwy_app_data_id_verify_spectra gwy_app_data_id_verify_volume gwy_app_data_id_verify_xyz gwy_app_data_view_change_mask_color gwy_app_file_close gwy_app_file_confirm_overwrite gwy_app_file_load gwy_app_file_merge gwy_app_file_open gwy_app_file_save gwy_app_file_save_as gwy_app_file_write gwy_app_find_window_for_channel gwy_app_find_window_for_curve_map gwy_app_find_window_for_graph gwy_app_find_window_for_volume gwy_app_find_window_for_xyz gwy_app_get_brick_key_for_id gwy_app_get_brick_meta_key_for_id gwy_app_get_brick_palette_key_for_id gwy_app_get_brick_preview_key_for_id gwy_app_get_brick_title gwy_app_get_brick_title_key_for_id gwy_app_get_channel_thumbnail gwy_app_get_current_directory gwy_app_get_curve_map_thumbnail gwy_app_get_data_base_key_for_id gwy_app_get_data_field_title gwy_app_get_data_key_for_id gwy_app_get_data_meta_key_for_id gwy_app_get_data_palette_key_for_id gwy_app_get_data_range_max_key_for_id gwy_app_get_data_range_min_key_for_id gwy_app_get_data_range_type_key_for_id gwy_app_get_data_real_square_key_for_id gwy_app_get_data_title_key_for_id gwy_app_get_graph_key_for_id gwy_app_get_graph_thumbnail gwy_app_get_lawn_key_for_id gwy_app_get_lawn_meta_key_for_id gwy_app_get_lawn_palette_key_for_id gwy_app_get_lawn_preview_key_for_id gwy_app_get_lawn_real_square_key_for_id gwy_app_get_lawn_title gwy_app_get_lawn_title_key_for_id gwy_app_get_log_text_buffer gwy_app_get_mask_key_for_id gwy_app_get_show_key_for_id gwy_app_get_spectra_key_for_id gwy_app_get_surface_key_for_id gwy_app_get_surface_meta_key_for_id gwy_app_get_surface_palette_key_for_id gwy_app_get_surface_preview_key_for_id gwy_app_get_surface_title gwy_app_get_surface_title_key_for_id gwy_app_get_volume_thumbnail gwy_app_get_xyz_thumbnail gwy_app_gl_init gwy_app_gl_is_ok gwy_app_gl_material_editor gwy_app_gradient_editor gwy_app_init_common gwy_app_init_i18n gwy_app_init_nongui gwy_app_init_widget_styles gwy_app_log_browser_for_channel gwy_app_log_browser_for_curve_map gwy_app_log_browser_for_volume gwy_app_log_browser_for_xyz gwy_app_logging_flags_get_type gwy_app_main_window_get gwy_app_main_window_set gwy_app_menu_recent_files_get gwy_app_menu_recent_files_update gwy_app_metadata_browser_for_channel gwy_app_metadata_browser_for_curve_map gwy_app_metadata_browser_for_volume gwy_app_metadata_browser_for_xyz gwy_app_page_get_type gwy_app_process_func_get_use gwy_app_process_func_save_use gwy_app_process_menu_add_run_last gwy_app_quit gwy_app_recent_file_get_thumbnail gwy_app_recent_file_list_free gwy_app_recent_file_list_load gwy_app_recent_file_list_new gwy_app_recent_file_list_save gwy_app_recent_file_list_update gwy_app_restore_window_position gwy_app_run_curve_map_func gwy_app_run_curve_map_func_in_mode gwy_app_run_graph_func gwy_app_run_process_func gwy_app_run_process_func_in_mode gwy_app_run_volume_func gwy_app_run_volume_func_in_mode gwy_app_run_xyz_func gwy_app_run_xyz_func_in_mode gwy_app_save_window_position gwy_app_sensitivity_add_widget gwy_app_sensitivity_get_group gwy_app_sensitivity_set_state gwy_app_set_brick_title gwy_app_set_current_directory gwy_app_set_data_field_title gwy_app_set_lawn_title gwy_app_set_surface_title gwy_app_settings_create_config_dir gwy_app_settings_error_get_type gwy_app_settings_error_quark gwy_app_settings_free gwy_app_settings_get gwy_app_settings_get_log_filename gwy_app_settings_get_module_dirs gwy_app_settings_get_recent_file_list_filename gwy_app_settings_get_settings_filename gwy_app_settings_load gwy_app_settings_merge_string gwy_app_settings_save gwy_app_setup_logging gwy_app_switch_tool gwy_app_sync_curve_map_items gwy_app_sync_curve_map_itemsv gwy_app_sync_data_items gwy_app_sync_data_itemsv gwy_app_sync_volume_items gwy_app_sync_volume_itemsv gwy_app_sync_xyz_items gwy_app_sync_xyz_itemsv gwy_app_undo_checkpoint gwy_app_undo_checkpointv gwy_app_undo_container_remove gwy_app_undo_qcheckpoint gwy_app_undo_qcheckpointv gwy_app_undo_redo_container gwy_app_undo_undo_container gwy_app_volume_log_add gwy_app_volume_log_add_volume gwy_app_wait_cursor_finish gwy_app_wait_cursor_start gwy_app_wait_finish gwy_app_wait_get_enabled gwy_app_wait_preview_data_field gwy_app_wait_set_enabled gwy_app_wait_set_fraction gwy_app_wait_set_message gwy_app_wait_set_message_prefix gwy_app_wait_set_preview_widget gwy_app_wait_start gwy_app_wait_was_canceled gwy_app_what_get_type gwy_app_xyz_log_add gwy_app_xyz_log_add_xyz gwy_app_xyz_title_fall_back gwy_append_doubles_to_gstring gwy_ascii_strcase_equal gwy_ascii_strcase_hash gwy_assign_string gwy_axis_draw_on_drawable gwy_axis_enable_label_edit gwy_axis_export_vector gwy_axis_get_label gwy_axis_get_magnification gwy_axis_get_magnification_string gwy_axis_get_major_ticks gwy_axis_get_orientation gwy_axis_get_range gwy_axis_get_requested_range gwy_axis_get_type gwy_axis_is_logarithmic gwy_axis_is_visible gwy_axis_new gwy_axis_request_range gwy_axis_scale_format_get_type gwy_axis_set_auto gwy_axis_set_label gwy_axis_set_logarithmic gwy_axis_set_si_unit gwy_axis_set_visible gwy_brick_add gwy_brick_add_to_xy_planes gwy_brick_add_to_z_lines gwy_brick_check_compatibility gwy_brick_clear gwy_brick_copy gwy_brick_copy_units gwy_brick_copy_zcalibration gwy_brick_data_changed gwy_brick_extract_line gwy_brick_extract_plane gwy_brick_extract_xy_plane gwy_brick_extract_z_line gwy_brick_fill gwy_brick_get_data gwy_brick_get_data_const gwy_brick_get_dval gwy_brick_get_dval_real gwy_brick_get_dx gwy_brick_get_dy gwy_brick_get_dz gwy_brick_get_max gwy_brick_get_min gwy_brick_get_si_unit_w gwy_brick_get_si_unit_x gwy_brick_get_si_unit_y gwy_brick_get_si_unit_z gwy_brick_get_type gwy_brick_get_val gwy_brick_get_val_real gwy_brick_get_value_format_w gwy_brick_get_value_format_x gwy_brick_get_value_format_y gwy_brick_get_value_format_z gwy_brick_get_xoffset gwy_brick_get_xreal gwy_brick_get_xres gwy_brick_get_yoffset gwy_brick_get_yreal gwy_brick_get_yres gwy_brick_get_zcalibration gwy_brick_get_zoffset gwy_brick_get_zreal gwy_brick_get_zres gwy_brick_invert gwy_brick_itor gwy_brick_jtor gwy_brick_ktor gwy_brick_ktor_cal gwy_brick_max_plane gwy_brick_max_xy_plane gwy_brick_maxpos_plane gwy_brick_maxpos_xy_plane gwy_brick_mean_plane gwy_brick_mean_xy_plane gwy_brick_min_plane gwy_brick_min_xy_plane gwy_brick_minpos_plane gwy_brick_minpos_xy_plane gwy_brick_multiply gwy_brick_new gwy_brick_new_alike gwy_brick_new_part gwy_brick_resample gwy_brick_rms_plane gwy_brick_rms_xy_plane gwy_brick_rtoi gwy_brick_rtoj gwy_brick_rtok gwy_brick_rtok_cal gwy_brick_set_plane gwy_brick_set_si_unit_w gwy_brick_set_si_unit_x gwy_brick_set_si_unit_y gwy_brick_set_si_unit_z gwy_brick_set_val gwy_brick_set_val_real gwy_brick_set_xoffset gwy_brick_set_xreal gwy_brick_set_xy_plane gwy_brick_set_yoffset gwy_brick_set_yreal gwy_brick_set_zcalibration gwy_brick_set_zoffset gwy_brick_set_zreal gwy_brick_sum_plane gwy_brick_sum_xy_plane gwy_brick_transpose gwy_brick_transpose_type_get_type gwy_byte_order_get_type gwy_caldata_append gwy_caldata_get_ndata gwy_caldata_get_range gwy_caldata_get_si_unit_x gwy_caldata_get_si_unit_y gwy_caldata_get_si_unit_z gwy_caldata_get_type gwy_caldata_get_x gwy_caldata_get_xerr gwy_caldata_get_xunc gwy_caldata_get_y gwy_caldata_get_yerr gwy_caldata_get_yunc gwy_caldata_get_z gwy_caldata_get_zerr gwy_caldata_get_zunc gwy_caldata_inside gwy_caldata_interpolate gwy_caldata_new gwy_caldata_resize gwy_caldata_save_data gwy_caldata_set_range gwy_caldata_set_si_unit_x gwy_caldata_set_si_unit_y gwy_caldata_set_si_unit_z gwy_caldata_setup_interpolation gwy_calibration_get_data gwy_calibration_get_filename gwy_calibration_get_ndata gwy_calibration_get_type gwy_calibration_new gwy_calibrations gwy_calibrations_get_calibration gwy_canonicalize_angle gwy_canonicalize_path gwy_cdline_fit gwy_cdline_fit_with_caldata gwy_cdline_get_definition gwy_cdline_get_name gwy_cdline_get_nparams gwy_cdline_get_param_name gwy_cdline_get_param_units gwy_cdline_get_type gwy_cdline_get_value gwy_cdlines gwy_check_box_get_group gwy_check_box_get_value gwy_check_boxes_attach_to_table gwy_check_boxes_create gwy_check_boxes_createl gwy_check_boxes_find gwy_check_boxes_get_selected gwy_check_boxes_set_selected gwy_check_boxes_set_sensitive gwy_check_regular_2d_grid gwy_color_axis_get_gradient gwy_color_axis_get_labels_visible gwy_color_axis_get_range gwy_color_axis_get_si_unit gwy_color_axis_get_ticks_style gwy_color_axis_get_type gwy_color_axis_new gwy_color_axis_new_with_range gwy_color_axis_set_gradient gwy_color_axis_set_labels_visible gwy_color_axis_set_range gwy_color_axis_set_si_unit gwy_color_axis_set_tick_map_func gwy_color_axis_set_ticks_style gwy_color_button_get_color gwy_color_button_get_type gwy_color_button_get_use_alpha gwy_color_button_new gwy_color_button_new_with_color gwy_color_button_set_color gwy_color_button_set_use_alpha gwy_color_selector_for_mask gwy_combo_box_graph_curve_new gwy_combo_box_lawn_curve_new gwy_combo_box_lawn_segment_new gwy_combo_box_metric_unit_new gwy_combo_box_metric_unit_set_unit gwy_compare_double gwy_computation_state_get_fraction gwy_computation_state_get_state gwy_computation_state_get_type gwy_computation_state_type_get_type gwy_container_contains gwy_container_deserialize_from_text gwy_container_duplicate_by_prefix gwy_container_duplicate_by_prefixv gwy_container_foreach gwy_container_get_boolean gwy_container_get_double gwy_container_get_enum gwy_container_get_int32 gwy_container_get_int64 gwy_container_get_n_items gwy_container_get_object gwy_container_get_string gwy_container_get_type gwy_container_get_uchar gwy_container_get_value gwy_container_gis_boolean gwy_container_gis_double gwy_container_gis_enum gwy_container_gis_int32 gwy_container_gis_int64 gwy_container_gis_object gwy_container_gis_string gwy_container_gis_uchar gwy_container_gis_value gwy_container_keys gwy_container_keys_by_name gwy_container_keys_with_prefix gwy_container_keys_with_prefix_by_name gwy_container_new gwy_container_remove gwy_container_remove_by_prefix gwy_container_rename gwy_container_serialize_to_text gwy_container_set_boolean gwy_container_set_const_string gwy_container_set_double gwy_container_set_enum gwy_container_set_int32 gwy_container_set_int64 gwy_container_set_object gwy_container_set_string gwy_container_set_uchar gwy_container_set_value gwy_container_set_value_by_name gwy_container_transfer gwy_container_value_type gwy_convert_raw_data gwy_corr_search_type_get_type gwy_correlation_type_get_enum gwy_correlation_type_get_type gwy_create_dialog_preview_hbox gwy_create_expander_with_param gwy_create_graph_xrange_with_params gwy_create_inventory_model_without_default gwy_create_preview gwy_create_preview_vector_layer gwy_curve_channel_get_type gwy_curve_get_control_points gwy_curve_get_type gwy_curve_map_func_current gwy_curve_map_func_exists gwy_curve_map_func_foreach gwy_curve_map_func_get_menu_path gwy_curve_map_func_get_run_types gwy_curve_map_func_get_sensitivity_mask gwy_curve_map_func_get_stock_id gwy_curve_map_func_get_tooltip gwy_curve_map_func_register gwy_curve_map_func_run gwy_curve_new gwy_curve_reset gwy_curve_set_channels gwy_curve_set_control_points gwy_curve_set_curve_type gwy_curve_set_range gwy_curve_type_get_type gwy_cwt_wfunc_2d gwy_data_chooser_get_active gwy_data_chooser_get_active_id gwy_data_chooser_get_filter gwy_data_chooser_get_none gwy_data_chooser_get_type gwy_data_chooser_new_channels gwy_data_chooser_new_curve_maps gwy_data_chooser_new_graphs gwy_data_chooser_new_volumes gwy_data_chooser_new_xyzs gwy_data_chooser_refilter gwy_data_chooser_set_active gwy_data_chooser_set_active_id gwy_data_chooser_set_filter gwy_data_chooser_set_none gwy_data_compatibility_flags_get_type gwy_data_error_desrcibe gwy_data_error_get_type gwy_data_field_1dfft gwy_data_field_1dfft_raw gwy_data_field_2dacf gwy_data_field_2dfft gwy_data_field_2dfft_dehumanize gwy_data_field_2dfft_humanize gwy_data_field_2dfft_raw gwy_data_field_2dpsdf gwy_data_field_abs gwy_data_field_acf gwy_data_field_acf_uncertainty gwy_data_field_add gwy_data_field_affine gwy_data_field_affine_prepare gwy_data_field_angular_average gwy_data_field_area_1dfft gwy_data_field_area_2dacf gwy_data_field_area_2dacf_mask gwy_data_field_area_2dfft gwy_data_field_area_2dpsdf_mask gwy_data_field_area_abs gwy_data_field_area_acf gwy_data_field_area_acf_uncertainty gwy_data_field_area_add gwy_data_field_area_cda gwy_data_field_area_cda_mask gwy_data_field_area_cdh gwy_data_field_area_cdh_uncertainty gwy_data_field_area_clamp gwy_data_field_area_clear gwy_data_field_area_convolve gwy_data_field_area_convolve_1d gwy_data_field_area_copy gwy_data_field_area_count_in_range gwy_data_field_area_da gwy_data_field_area_da_mask gwy_data_field_area_dh gwy_data_field_area_dh_uncertainty gwy_data_field_area_ext_convolve gwy_data_field_area_ext_row_convolve gwy_data_field_area_extract gwy_data_field_area_fill gwy_data_field_area_fill_mask gwy_data_field_area_filter_conservative gwy_data_field_area_filter_dechecker gwy_data_field_area_filter_disc_asf gwy_data_field_area_filter_gaussian gwy_data_field_area_filter_kth_rank gwy_data_field_area_filter_kuwahara gwy_data_field_area_filter_laplacian gwy_data_field_area_filter_laplacian_of_gaussians gwy_data_field_area_filter_maximum gwy_data_field_area_filter_mean gwy_data_field_area_filter_median gwy_data_field_area_filter_min_max gwy_data_field_area_filter_minimum gwy_data_field_area_filter_prewitt gwy_data_field_area_filter_rms gwy_data_field_area_filter_sobel gwy_data_field_area_filter_trimmed_mean gwy_data_field_area_fit_legendre gwy_data_field_area_fit_local_planes gwy_data_field_area_fit_plane gwy_data_field_area_fit_plane_mask gwy_data_field_area_fit_poly gwy_data_field_area_fit_poly_max gwy_data_field_area_fit_polynom gwy_data_field_area_flip_xy gwy_data_field_area_gather gwy_data_field_area_get_autorange gwy_data_field_area_get_avg_mask gwy_data_field_area_get_avg_uncertainty gwy_data_field_area_get_avg_uncertainty_mask gwy_data_field_area_get_dispersion gwy_data_field_area_get_entropy gwy_data_field_area_get_entropy_at_scales gwy_data_field_area_get_grainwise_rms gwy_data_field_area_get_inclination gwy_data_field_area_get_inclination_uncertainty gwy_data_field_area_get_line_stats gwy_data_field_area_get_max gwy_data_field_area_get_max_uncertainty gwy_data_field_area_get_mean_square gwy_data_field_area_get_median_mask gwy_data_field_area_get_median_uncertainty gwy_data_field_area_get_median_uncertainty_mask gwy_data_field_area_get_min gwy_data_field_area_get_min_max_mask gwy_data_field_area_get_min_max_uncertainty gwy_data_field_area_get_min_max_uncertainty_mask gwy_data_field_area_get_min_uncertainty gwy_data_field_area_get_normal_coeffs gwy_data_field_area_get_normal_coeffs_uncertainty gwy_data_field_area_get_projected_area_uncertainty gwy_data_field_area_get_rms_mask gwy_data_field_area_get_rms_uncertainty gwy_data_field_area_get_rms_uncertainty_mask gwy_data_field_area_get_stats_mask gwy_data_field_area_get_stats_uncertainties gwy_data_field_area_get_stats_uncertainties_mask gwy_data_field_area_get_sum_mask gwy_data_field_area_get_surface_area_mask gwy_data_field_area_get_surface_area_mask_uncertainty gwy_data_field_area_get_surface_area_uncertainty gwy_data_field_area_get_surface_slope_mask gwy_data_field_area_get_variation gwy_data_field_area_get_volume gwy_data_field_area_grains_tgnd gwy_data_field_area_grains_tgnd_range gwy_data_field_area_hhcf gwy_data_field_area_hhcf_uncertainty gwy_data_field_area_local_plane_quantity gwy_data_field_area_minkowski_boundary gwy_data_field_area_minkowski_euler gwy_data_field_area_minkowski_volume gwy_data_field_area_multiply gwy_data_field_area_psdf gwy_data_field_area_racf gwy_data_field_area_renormalize gwy_data_field_area_row_acf gwy_data_field_area_row_asg gwy_data_field_area_row_hhcf gwy_data_field_area_row_psdf gwy_data_field_area_rpsdf gwy_data_field_area_subtract_legendre gwy_data_field_area_subtract_poly gwy_data_field_area_subtract_poly_max gwy_data_field_area_subtract_polynom gwy_data_field_area_threshold gwy_data_field_average_xyz gwy_data_field_bin gwy_data_field_cached_get_type gwy_data_field_cda gwy_data_field_cdh gwy_data_field_cdh_uncertainty gwy_data_field_check_compatibility gwy_data_field_check_compatibility_with_brick_xy gwy_data_field_check_compatibility_with_lawn gwy_data_field_circular_area_extract gwy_data_field_circular_area_extract_with_pos gwy_data_field_circular_area_fill gwy_data_field_circular_area_unextract gwy_data_field_clamp gwy_data_field_clear gwy_data_field_column_gaussian gwy_data_field_convolve gwy_data_field_convolve_1d gwy_data_field_copy gwy_data_field_copy_units gwy_data_field_copy_units_to_data_line gwy_data_field_copy_units_to_surface gwy_data_field_correct_average gwy_data_field_correct_average_unmasked gwy_data_field_correct_laplace_iteration gwy_data_field_correlate gwy_data_field_correlate_finalize gwy_data_field_correlate_init gwy_data_field_correlate_iteration gwy_data_field_correlation_search gwy_data_field_count_maxima gwy_data_field_count_minima gwy_data_field_crosscorrelate gwy_data_field_crosscorrelate_finalize gwy_data_field_crosscorrelate_init gwy_data_field_crosscorrelate_iteration gwy_data_field_crosscorrelate_set_weights gwy_data_field_cwt gwy_data_field_da gwy_data_field_data_changed gwy_data_field_deconvolve_psf_leastsq gwy_data_field_deconvolve_regularized gwy_data_field_dh gwy_data_field_dh_uncertainty gwy_data_field_distort gwy_data_field_divide_fields gwy_data_field_dwt gwy_data_field_dwt_mark_anisotropy gwy_data_field_elliptic_area_extract gwy_data_field_elliptic_area_fill gwy_data_field_elliptic_area_unextract gwy_data_field_extend gwy_data_field_fft_convolve gwy_data_field_fft_filter_1d gwy_data_field_fft_postprocess gwy_data_field_fft_window gwy_data_field_fft_window_1d gwy_data_field_fill gwy_data_field_fill_voids gwy_data_field_filter_canny gwy_data_field_filter_conservative gwy_data_field_filter_dechecker gwy_data_field_filter_gauss_step gwy_data_field_filter_gaussian gwy_data_field_filter_harris gwy_data_field_filter_kuwahara gwy_data_field_filter_laplacian gwy_data_field_filter_laplacian_of_gaussians gwy_data_field_filter_maximum gwy_data_field_filter_mean gwy_data_field_filter_median gwy_data_field_filter_minimum gwy_data_field_filter_prewitt gwy_data_field_filter_prewitt_total gwy_data_field_filter_rms gwy_data_field_filter_slope gwy_data_field_filter_sobel gwy_data_field_filter_sobel_total gwy_data_field_find_regularization_sigma_for_psf gwy_data_field_find_regularization_sigma_leastsq gwy_data_field_find_row_shifts_trimmed_diff gwy_data_field_find_row_shifts_trimmed_mean gwy_data_field_fit_facet_plane gwy_data_field_fit_legendre gwy_data_field_fit_lines gwy_data_field_fit_local_planes gwy_data_field_fit_plane gwy_data_field_fit_poly gwy_data_field_fit_poly_max gwy_data_field_fit_polynom gwy_data_field_flip_xy gwy_data_field_fractal_correction gwy_data_field_fractal_cubecounting gwy_data_field_fractal_cubecounting_dim gwy_data_field_fractal_partitioning gwy_data_field_fractal_partitioning_dim gwy_data_field_fractal_psdf gwy_data_field_fractal_psdf_dim gwy_data_field_fractal_triangulation gwy_data_field_fractal_triangulation_dim gwy_data_field_get_angder gwy_data_field_get_autorange gwy_data_field_get_avg gwy_data_field_get_avg_uncertainty gwy_data_field_get_circular_area_size gwy_data_field_get_column gwy_data_field_get_column_part gwy_data_field_get_correlation_score gwy_data_field_get_data gwy_data_field_get_data_const gwy_data_field_get_dispersion gwy_data_field_get_dval gwy_data_field_get_dval_real gwy_data_field_get_dx gwy_data_field_get_dy gwy_data_field_get_elliptic_area_size gwy_data_field_get_elliptic_intersection gwy_data_field_get_entropy gwy_data_field_get_entropy_2d gwy_data_field_get_entropy_2d_at_scales gwy_data_field_get_grain_bounding_boxes gwy_data_field_get_grain_bounding_boxes_periodic gwy_data_field_get_grain_inscribed_boxes gwy_data_field_get_grain_sizes gwy_data_field_get_inclination gwy_data_field_get_inclination_uncertainty gwy_data_field_get_line_stats gwy_data_field_get_line_stats_mask gwy_data_field_get_local_maxima_list gwy_data_field_get_local_minima_list gwy_data_field_get_max gwy_data_field_get_max_uncertainty gwy_data_field_get_mean_square gwy_data_field_get_median gwy_data_field_get_median_uncertainty gwy_data_field_get_min gwy_data_field_get_min_max gwy_data_field_get_min_max_uncertainty gwy_data_field_get_min_uncertainty gwy_data_field_get_normal_coeffs gwy_data_field_get_normal_coeffs_uncertainty gwy_data_field_get_profile gwy_data_field_get_profile_mask gwy_data_field_get_rms gwy_data_field_get_rms_uncertainty gwy_data_field_get_row gwy_data_field_get_row_part gwy_data_field_get_si_unit_xy gwy_data_field_get_si_unit_z gwy_data_field_get_stats gwy_data_field_get_stats_uncertainties gwy_data_field_get_sum gwy_data_field_get_surface_area gwy_data_field_get_surface_area_uncertainty gwy_data_field_get_surface_slope gwy_data_field_get_type gwy_data_field_get_val gwy_data_field_get_value_format_xy gwy_data_field_get_value_format_z gwy_data_field_get_variation gwy_data_field_get_weighted_correlation_score gwy_data_field_get_xder gwy_data_field_get_xder_uncertainty gwy_data_field_get_xoffset gwy_data_field_get_xreal gwy_data_field_get_xres gwy_data_field_get_yder gwy_data_field_get_yder_uncertainty gwy_data_field_get_yoffset gwy_data_field_get_yreal gwy_data_field_get_yres gwy_data_field_grain_distance_transform gwy_data_field_grain_simple_dist_trans gwy_data_field_grains_add gwy_data_field_grains_autocrop gwy_data_field_grains_extract_grain gwy_data_field_grains_find_boundaries gwy_data_field_grains_get_distribution gwy_data_field_grains_get_quantities gwy_data_field_grains_get_values gwy_data_field_grains_grow gwy_data_field_grains_intersect gwy_data_field_grains_invert gwy_data_field_grains_mark_curvature gwy_data_field_grains_mark_height gwy_data_field_grains_mark_slope gwy_data_field_grains_mark_watershed gwy_data_field_grains_remove_by_height gwy_data_field_grains_remove_by_number gwy_data_field_grains_remove_by_size gwy_data_field_grains_remove_grain gwy_data_field_grains_remove_touching_border gwy_data_field_grains_shrink gwy_data_field_grains_splash_water gwy_data_field_grains_thin gwy_data_field_grains_watershed_finalize gwy_data_field_grains_watershed_init gwy_data_field_grains_watershed_iteration gwy_data_field_hhcf gwy_data_field_hhcf_uncertainty gwy_data_field_hough_circle gwy_data_field_hough_circle_strenghten gwy_data_field_hough_datafield_line_to_polar gwy_data_field_hough_line gwy_data_field_hough_line_strenghten gwy_data_field_hough_polar_line_to_datafield gwy_data_field_hypot_of_fields gwy_data_field_invalidate gwy_data_field_invert gwy_data_field_itor gwy_data_field_jtor gwy_data_field_laplace_solve gwy_data_field_linear_combination gwy_data_field_local_maximum gwy_data_field_local_plane_quantity gwy_data_field_mark_extrema gwy_data_field_mark_scars gwy_data_field_mask_outliers gwy_data_field_mask_outliers2 gwy_data_field_max_of_fields gwy_data_field_measure_lattice_acf gwy_data_field_measure_lattice_psdf gwy_data_field_mfm_current_line gwy_data_field_mfm_find_shift_z gwy_data_field_mfm_parallel_medium gwy_data_field_mfm_perpendicular_medium_force gwy_data_field_mfm_perpendicular_stray_field gwy_data_field_mfm_perpendicular_stray_field_angle_correction gwy_data_field_mfm_shift_z gwy_data_field_min_of_fields gwy_data_field_minkowski_boundary gwy_data_field_minkowski_euler gwy_data_field_minkowski_volume gwy_data_field_multiply gwy_data_field_multiply_fields gwy_data_field_new gwy_data_field_new_alike gwy_data_field_new_binned gwy_data_field_new_resampled gwy_data_field_new_rotated gwy_data_field_new_rotated_90 gwy_data_field_normalize gwy_data_field_number_grains gwy_data_field_number_grains_periodic gwy_data_field_otsu_threshold gwy_data_field_plane_level gwy_data_field_plane_rotate gwy_data_field_psdf gwy_data_field_psdf_to_angular_spectrum gwy_data_field_racf gwy_data_field_renormalize gwy_data_field_resample gwy_data_field_resize gwy_data_field_rotate gwy_data_field_row_gaussian gwy_data_field_rpsdf gwy_data_field_rtoi gwy_data_field_rtoj gwy_data_field_sample_distorted gwy_data_field_set_column gwy_data_field_set_column_part gwy_data_field_set_row gwy_data_field_set_row_part gwy_data_field_set_si_unit_xy gwy_data_field_set_si_unit_z gwy_data_field_set_val gwy_data_field_set_xoffset gwy_data_field_set_xreal gwy_data_field_set_yoffset gwy_data_field_set_yreal gwy_data_field_shade gwy_data_field_slope_distribution gwy_data_field_subtract_fields gwy_data_field_subtract_legendre gwy_data_field_subtract_poly gwy_data_field_subtract_poly_max gwy_data_field_subtract_polynom gwy_data_field_subtract_row_shifts gwy_data_field_sum_fields gwy_data_field_synth_gaussian_displacement gwy_data_field_threshold gwy_data_field_unrotate_find_corrections gwy_data_field_waterpour gwy_data_field_xdwt gwy_data_field_ydwt gwy_data_field_zoom_fft gwy_data_item_get_type gwy_data_line_acf gwy_data_line_acf_uncertainty gwy_data_line_add gwy_data_line_cda gwy_data_line_cdh gwy_data_line_check_compatibility gwy_data_line_check_compatibility_with_brick_z gwy_data_line_clear gwy_data_line_copy gwy_data_line_copy_units gwy_data_line_copy_units_to_data_field gwy_data_line_correct_laplace gwy_data_line_count_peaks gwy_data_line_cumulate gwy_data_line_cumulate_uncertainty gwy_data_line_da gwy_data_line_data_changed gwy_data_line_dh gwy_data_line_distribution gwy_data_line_dwt gwy_data_line_fft gwy_data_line_fft_raw gwy_data_line_fft_window gwy_data_line_fill gwy_data_line_filter_slope gwy_data_line_fit_polynom gwy_data_line_get_avg gwy_data_line_get_data gwy_data_line_get_data_const gwy_data_line_get_der gwy_data_line_get_dval gwy_data_line_get_dval_real gwy_data_line_get_dx gwy_data_line_get_kth_peaks gwy_data_line_get_kurtosis gwy_data_line_get_length gwy_data_line_get_line_coeffs gwy_data_line_get_max gwy_data_line_get_median gwy_data_line_get_min gwy_data_line_get_min_max gwy_data_line_get_modus gwy_data_line_get_offset gwy_data_line_get_ra gwy_data_line_get_real gwy_data_line_get_res gwy_data_line_get_rms gwy_data_line_get_si_unit_x gwy_data_line_get_si_unit_y gwy_data_line_get_skew gwy_data_line_get_sum gwy_data_line_get_tan_beta0 gwy_data_line_get_type gwy_data_line_get_val gwy_data_line_get_value_format_x gwy_data_line_get_value_format_y gwy_data_line_get_variation gwy_data_line_get_xpm gwy_data_line_get_xtm gwy_data_line_get_xvm gwy_data_line_hhcf gwy_data_line_hhcf_uncertainty gwy_data_line_invert gwy_data_line_itor gwy_data_line_line_level gwy_data_line_linear_combination gwy_data_line_max_pos_i gwy_data_line_max_pos_r gwy_data_line_min_pos_i gwy_data_line_min_pos_r gwy_data_line_multiply gwy_data_line_multiply_lines gwy_data_line_new gwy_data_line_new_alike gwy_data_line_new_resampled gwy_data_line_part_add gwy_data_line_part_clear gwy_data_line_part_extract gwy_data_line_part_fft gwy_data_line_part_fill gwy_data_line_part_filter_kth_rank gwy_data_line_part_fit_polynom gwy_data_line_part_get_avg gwy_data_line_part_get_kurtosis gwy_data_line_part_get_max gwy_data_line_part_get_median gwy_data_line_part_get_min gwy_data_line_part_get_min_max gwy_data_line_part_get_modus gwy_data_line_part_get_ra gwy_data_line_part_get_rms gwy_data_line_part_get_skew gwy_data_line_part_get_sum gwy_data_line_part_get_tan_beta0 gwy_data_line_part_get_variation gwy_data_line_part_multiply gwy_data_line_part_subtract_polynom gwy_data_line_part_threshold gwy_data_line_psdf gwy_data_line_resample gwy_data_line_resize gwy_data_line_rotate gwy_data_line_rtoi gwy_data_line_set_offset gwy_data_line_set_real gwy_data_line_set_si_unit_x gwy_data_line_set_si_unit_y gwy_data_line_set_val gwy_data_line_sqrt gwy_data_line_subtract_lines gwy_data_line_subtract_polynom gwy_data_line_sum_lines gwy_data_line_threshold gwy_data_line_zoom_fft gwy_data_validate gwy_data_validate_flags_get_type gwy_data_validation_failure_list_free gwy_data_view_coords_real_to_xy gwy_data_view_coords_real_to_xy_float gwy_data_view_coords_xy_clamp gwy_data_view_coords_xy_cut_line gwy_data_view_coords_xy_to_real gwy_data_view_export_pixbuf gwy_data_view_get_alpha_layer gwy_data_view_get_base_layer gwy_data_view_get_data gwy_data_view_get_data_prefix gwy_data_view_get_hexcess gwy_data_view_get_metric gwy_data_view_get_pixbuf gwy_data_view_get_pixel_data_sizes gwy_data_view_get_real_data_offsets gwy_data_view_get_real_data_sizes gwy_data_view_get_real_zoom gwy_data_view_get_top_layer gwy_data_view_get_type gwy_data_view_get_vexcess gwy_data_view_get_xmeasure gwy_data_view_get_ymeasure gwy_data_view_get_zoom gwy_data_view_layer_get_type gwy_data_view_layer_plugged gwy_data_view_layer_realize gwy_data_view_layer_type_get_type gwy_data_view_layer_unplugged gwy_data_view_layer_unrealize gwy_data_view_layer_updated gwy_data_view_new gwy_data_view_set_alpha_layer gwy_data_view_set_base_layer gwy_data_view_set_data_prefix gwy_data_view_set_top_layer gwy_data_view_set_zoom gwy_data_watch_event_type_get_type gwy_data_window_fit_to_screen gwy_data_window_get_color_axis gwy_data_window_get_data gwy_data_window_get_data_name gwy_data_window_get_data_view gwy_data_window_get_type gwy_data_window_get_ul_corner_widget gwy_data_window_new gwy_data_window_set_data_name gwy_data_window_set_ul_corner_widget gwy_data_window_set_zoom gwy_debug_gnu gwy_debug_objects_clear gwy_debug_objects_creation_detailed gwy_debug_objects_dump_to_file gwy_debug_objects_enable gwy_deserialize_object_hash gwy_dialog_add_buttons gwy_dialog_add_content gwy_dialog_add_param_table gwy_dialog_get_type gwy_dialog_have_result gwy_dialog_invalidate gwy_dialog_new gwy_dialog_outcome_get_type gwy_dialog_remove_param_table gwy_dialog_run gwy_dialog_set_instant_updates_param gwy_dialog_set_preview_func gwy_distance_transform_type_get_enum gwy_distance_transform_type_get_type gwy_draw_data_field_map_adaptive gwy_draw_type_init gwy_dwt_denoise_type_get_enum gwy_dwt_denoise_type_get_type gwy_dwt_set_coefficients gwy_dwt_type_get_enum gwy_dwt_type_get_type gwy_entities gwy_entities_entity_to_utf8 gwy_entities_text_to_utf8 gwy_enum_combo_box_get_active gwy_enum_combo_box_new gwy_enum_combo_box_newl gwy_enum_combo_box_set_active gwy_enum_combo_box_update_int gwy_enum_fill_from_struct gwy_enum_freev gwy_enum_get_type gwy_enum_inventory_new gwy_enum_sanitize_value gwy_enum_to_string gwy_enuml_to_string gwy_expr_compile gwy_expr_define_constant gwy_expr_error_get_type gwy_expr_error_quark gwy_expr_evaluate gwy_expr_execute gwy_expr_free gwy_expr_get_expression gwy_expr_get_variables gwy_expr_new gwy_expr_resolve_variables gwy_expr_undefine_constant gwy_expr_vector_execute gwy_exterior_type_get_type gwy_fd_curve_preset_get_type gwy_fd_curve_presets gwy_fft_find_nice_size gwy_fft_simple gwy_fft_window gwy_fft_window_data_field gwy_file_abandon_contents gwy_file_channel_import_log_add gwy_file_curve_map_import_log_add gwy_file_detect gwy_file_detect_with_score gwy_file_func_current gwy_file_func_exists gwy_file_func_foreach gwy_file_func_get_description gwy_file_func_get_is_detectable gwy_file_func_get_operations gwy_file_func_register gwy_file_func_run_detect gwy_file_func_run_export gwy_file_func_run_load gwy_file_func_run_save gwy_file_func_set_is_detectable gwy_file_get_contents gwy_file_get_data_info gwy_file_get_filename_sys gwy_file_load gwy_file_load_with_func gwy_file_operation_type_get_type gwy_file_save gwy_file_save_with_func gwy_file_volume_import_log_add gwy_file_xyz_import_log_add gwy_filename_ignore gwy_find_self_dir gwy_flags_to_string gwy_fopen gwy_format_result_table_mixed gwy_format_result_table_row gwy_format_result_table_rowv gwy_format_result_table_strings gwy_format_result_table_stringsv gwy_fprintf gwy_func_use_add gwy_func_use_free gwy_func_use_get gwy_func_use_get_filename gwy_func_use_load gwy_func_use_new gwy_func_use_save gwy_get_decimal_separator gwy_get_gboolean8 gwy_get_gdouble_be gwy_get_gdouble_le gwy_get_gfloat_be gwy_get_gfloat_le gwy_get_gint16_be gwy_get_gint16_le gwy_get_gint32_be gwy_get_gint32_le gwy_get_gint64_be gwy_get_gint64_le gwy_get_guint16_be gwy_get_guint16_le gwy_get_guint32_be gwy_get_guint32_le gwy_get_guint64_be gwy_get_guint64_le gwy_get_home_dir gwy_get_pascal_real_be gwy_get_pascal_real_le gwy_get_user_dir gwy_gl_material_get_ambient gwy_gl_material_get_diffuse gwy_gl_material_get_emission gwy_gl_material_get_shininess gwy_gl_material_get_specular gwy_gl_material_get_type gwy_gl_material_reset gwy_gl_material_sample_to_pixbuf gwy_gl_material_selection_get_active gwy_gl_material_selection_new gwy_gl_material_selection_set_active gwy_gl_material_set_ambient gwy_gl_material_set_diffuse gwy_gl_material_set_emission gwy_gl_material_set_shininess gwy_gl_material_set_specular gwy_gl_material_tree_view_new gwy_gl_material_tree_view_set_active gwy_gl_materials gwy_gl_materials_get_gl_material gwy_gradient_delete_point gwy_gradient_get_color gwy_gradient_get_npoints gwy_gradient_get_point gwy_gradient_get_points gwy_gradient_get_samples gwy_gradient_get_type gwy_gradient_insert_point gwy_gradient_insert_point_sorted gwy_gradient_reset gwy_gradient_sample gwy_gradient_sample_to_pixbuf gwy_gradient_selection_get_active gwy_gradient_selection_new gwy_gradient_selection_set_active gwy_gradient_set_from_samples gwy_gradient_set_point gwy_gradient_set_point_color gwy_gradient_set_points gwy_gradient_tree_view_new gwy_gradient_tree_view_set_active gwy_gradients gwy_gradients_get_gradient gwy_grain_quantity_get_type gwy_grain_quantity_get_units gwy_grain_quantity_needs_same_units gwy_grain_value_flags_get_type gwy_grain_value_get_expression gwy_grain_value_get_flags gwy_grain_value_get_group gwy_grain_value_get_power_xy gwy_grain_value_get_power_z gwy_grain_value_get_quantity gwy_grain_value_get_symbol gwy_grain_value_get_symbol_markup gwy_grain_value_get_type gwy_grain_value_group_get_type gwy_grain_value_group_name gwy_grain_value_set_expression gwy_grain_value_set_flags gwy_grain_value_set_power_xy gwy_grain_value_set_power_z gwy_grain_value_set_symbol gwy_grain_value_set_symbol_markup gwy_grain_value_store_column_get_type gwy_grain_value_tree_view_get_enabled gwy_grain_value_tree_view_get_expanded_groups gwy_grain_value_tree_view_n_enabled gwy_grain_value_tree_view_new gwy_grain_value_tree_view_select gwy_grain_value_tree_view_set_enabled gwy_grain_value_tree_view_set_expanded_groups gwy_grain_value_tree_view_set_same_units gwy_grain_values gwy_grain_values_calculate gwy_grain_values_get_builtin_grain_value gwy_grain_values_get_grain_value gwy_grain_values_get_grain_value_by_symbol gwy_graph_area_draw_on_drawable gwy_graph_area_edit_curve gwy_graph_area_enable_user_input gwy_graph_area_export_vector gwy_graph_area_get_cursor gwy_graph_area_get_label gwy_graph_area_get_model gwy_graph_area_get_selection gwy_graph_area_get_status gwy_graph_area_get_type gwy_graph_area_get_x_grid_data gwy_graph_area_get_y_grid_data gwy_graph_area_new gwy_graph_area_set_model gwy_graph_area_set_selection_editable gwy_graph_area_set_status gwy_graph_area_set_x_grid_data gwy_graph_area_set_x_range gwy_graph_area_set_y_grid_data gwy_graph_area_set_y_range gwy_graph_corner_get_type gwy_graph_corner_new gwy_graph_curve_model_enforce_order gwy_graph_curve_model_get_calibration_data gwy_graph_curve_model_get_ndata gwy_graph_curve_model_get_ranges gwy_graph_curve_model_get_type gwy_graph_curve_model_get_x_range gwy_graph_curve_model_get_xdata gwy_graph_curve_model_get_y_range gwy_graph_curve_model_get_ydata gwy_graph_curve_model_is_ordered gwy_graph_curve_model_new gwy_graph_curve_model_new_alike gwy_graph_curve_model_set_calibration_data gwy_graph_curve_model_set_data gwy_graph_curve_model_set_data_from_dataline gwy_graph_curve_model_set_data_interleaved gwy_graph_curve_type_get_enum gwy_graph_curve_type_get_type gwy_graph_curves_get_model gwy_graph_curves_get_type gwy_graph_curves_new gwy_graph_curves_set_model gwy_graph_data_get_model gwy_graph_data_get_type gwy_graph_data_new gwy_graph_data_set_model gwy_graph_draw_curve gwy_graph_draw_grid gwy_graph_draw_line gwy_graph_draw_point gwy_graph_draw_selection_areas gwy_graph_draw_selection_lines gwy_graph_draw_selection_points gwy_graph_draw_selection_xareas gwy_graph_draw_selection_yareas gwy_graph_enable_user_input gwy_graph_export_pixmap gwy_graph_export_postscript gwy_graph_func_current gwy_graph_func_exists gwy_graph_func_foreach gwy_graph_func_get_menu_path gwy_graph_func_get_sensitivity_mask gwy_graph_func_get_stock_id gwy_graph_func_get_tooltip gwy_graph_func_register gwy_graph_func_run gwy_graph_get_area gwy_graph_get_axis gwy_graph_get_model gwy_graph_get_n_preset_colors gwy_graph_get_preset_color gwy_graph_get_status gwy_graph_get_type gwy_graph_grid_type_get_type gwy_graph_label_draw_on_drawable gwy_graph_label_enable_user_input gwy_graph_label_export_vector gwy_graph_label_get_model gwy_graph_label_get_type gwy_graph_label_new gwy_graph_label_position_get_type gwy_graph_label_set_model gwy_graph_model_add_curve gwy_graph_model_append_curves gwy_graph_model_export_ascii gwy_graph_model_export_style_get_type gwy_graph_model_get_axis_label gwy_graph_model_get_curve gwy_graph_model_get_curve_by_description gwy_graph_model_get_curve_index gwy_graph_model_get_n_curves gwy_graph_model_get_ranges gwy_graph_model_get_type gwy_graph_model_get_x_range gwy_graph_model_get_y_range gwy_graph_model_new gwy_graph_model_new_alike gwy_graph_model_remove_all_curves gwy_graph_model_remove_curve gwy_graph_model_remove_curve_by_description gwy_graph_model_replace_curve gwy_graph_model_set_axis_label gwy_graph_model_set_units_from_data_field gwy_graph_model_set_units_from_data_line gwy_graph_model_units_are_compatible gwy_graph_model_x_data_can_be_logarithmed gwy_graph_model_y_data_can_be_logarithmed gwy_graph_new gwy_graph_point_type_get_type gwy_graph_set_axis_visible gwy_graph_set_model gwy_graph_set_status gwy_graph_status_type_get_type gwy_graph_window_get_graph gwy_graph_window_get_graph_curves gwy_graph_window_get_graph_data gwy_graph_window_get_type gwy_graph_window_new gwy_gstring_replace gwy_gstring_to_native_eol gwy_guint_sort gwy_hash_table_to_list_cb gwy_hash_table_to_slist_cb gwy_hbox_new gwy_help_add_to_cmap_dialog gwy_help_add_to_file_dialog gwy_help_add_to_graph_dialog gwy_help_add_to_proc_dialog gwy_help_add_to_tool_dialog gwy_help_add_to_volume_dialog gwy_help_add_to_window gwy_help_add_to_window_uri gwy_help_add_to_xyz_dialog gwy_help_flags_get_type gwy_help_is_available gwy_help_show gwy_hmarker_box_get_type gwy_hmarker_box_new gwy_hold_selection_flags_get_type gwy_hruler_get_type gwy_hruler_new gwy_hscale_style_get_type gwy_interpolation_get_dval gwy_interpolation_get_dval_of_equidists gwy_interpolation_get_support_size gwy_interpolation_has_interpolating_basis gwy_interpolation_interpolate_1d gwy_interpolation_interpolate_2d gwy_interpolation_resample_block_1d gwy_interpolation_resample_block_2d gwy_interpolation_resolve_coeffs_1d gwy_interpolation_resolve_coeffs_2d gwy_interpolation_shift_block_1d gwy_interpolation_type_get_enum gwy_interpolation_type_get_type gwy_inventory_can_make_copies gwy_inventory_delete_item gwy_inventory_delete_nth_item gwy_inventory_find gwy_inventory_foreach gwy_inventory_forget_order gwy_inventory_get_default_item gwy_inventory_get_default_item_name gwy_inventory_get_item gwy_inventory_get_item_or_default gwy_inventory_get_item_position gwy_inventory_get_item_type gwy_inventory_get_n_items gwy_inventory_get_nth_item gwy_inventory_get_type gwy_inventory_insert_item gwy_inventory_insert_nth_item gwy_inventory_is_const gwy_inventory_item_updated gwy_inventory_new gwy_inventory_new_filled gwy_inventory_new_from_array gwy_inventory_new_item gwy_inventory_nth_item_updated gwy_inventory_rename_item gwy_inventory_restore_order gwy_inventory_set_default_item_name gwy_inventory_store_get_column_by_name gwy_inventory_store_get_inventory gwy_inventory_store_get_iter gwy_inventory_store_get_type gwy_inventory_store_iter_is_valid gwy_inventory_store_new gwy_label_new_header gwy_lawn_area_reduce_to_plane gwy_lawn_check_compatibility gwy_lawn_clear gwy_lawn_copy gwy_lawn_copy_units gwy_lawn_curve_set_segments gwy_lawn_data_changed gwy_lawn_get_curve_data gwy_lawn_get_curve_data_const gwy_lawn_get_curve_label gwy_lawn_get_curve_length gwy_lawn_get_curves_data_const gwy_lawn_get_dx gwy_lawn_get_dy gwy_lawn_get_n_curves gwy_lawn_get_n_segments gwy_lawn_get_segment_label gwy_lawn_get_segments gwy_lawn_get_si_unit_curve gwy_lawn_get_si_unit_xy gwy_lawn_get_type gwy_lawn_get_value_format_curve gwy_lawn_get_value_format_xy gwy_lawn_get_xoffset gwy_lawn_get_xreal gwy_lawn_get_xres gwy_lawn_get_yoffset gwy_lawn_get_yreal gwy_lawn_get_yres gwy_lawn_invert gwy_lawn_new gwy_lawn_new_alike gwy_lawn_new_part gwy_lawn_new_rotated_90 gwy_lawn_reduce_to_plane gwy_lawn_set_curve_data gwy_lawn_set_curve_label gwy_lawn_set_curves gwy_lawn_set_segment_label gwy_lawn_set_segments gwy_lawn_set_si_unit_curve gwy_lawn_set_si_unit_xy gwy_lawn_set_xoffset gwy_lawn_set_xreal gwy_lawn_set_yoffset gwy_lawn_set_yreal gwy_layer_basic_get_gradient_key gwy_layer_basic_get_has_presentation gwy_layer_basic_get_min_max_key gwy_layer_basic_get_presentation_key gwy_layer_basic_get_range gwy_layer_basic_get_range_type gwy_layer_basic_get_range_type_key gwy_layer_basic_get_type gwy_layer_basic_new gwy_layer_basic_range_type_get_type gwy_layer_basic_set_gradient_key gwy_layer_basic_set_min_max_key gwy_layer_basic_set_presentation_key gwy_layer_basic_set_range_type_key gwy_layer_func_foreach gwy_layer_func_register gwy_layer_mask_get_color gwy_layer_mask_get_color_key gwy_layer_mask_get_type gwy_layer_mask_new gwy_layer_mask_set_color_key gwy_line_stat_quantity_get_type gwy_list_store_row_changed gwy_log_get_enabled gwy_log_set_enabled gwy_marker_box_add_marker gwy_marker_box_get_flipped gwy_marker_box_get_highlight_selected gwy_marker_box_get_marker_position gwy_marker_box_get_markers gwy_marker_box_get_nmarkers gwy_marker_box_get_selected_marker gwy_marker_box_get_type gwy_marker_box_get_validator gwy_marker_box_remove_marker gwy_marker_box_set_flipped gwy_marker_box_set_highlight_selected gwy_marker_box_set_marker_position gwy_marker_box_set_markers gwy_marker_box_set_selected_marker gwy_marker_box_set_validator gwy_marker_operation_type_get_type gwy_mask_color_selector_run gwy_masking_type_get_enum gwy_masking_type_get_type gwy_math_choleski_decompose gwy_math_choleski_invert gwy_math_choleski_solve gwy_math_curvature gwy_math_curvature_at_apex gwy_math_curvature_at_origin gwy_math_fallback_acosh gwy_math_fallback_asinh gwy_math_fallback_atanh gwy_math_fallback_cbrt gwy_math_fallback_hypot gwy_math_fallback_isinf gwy_math_fallback_isnan gwy_math_fallback_pow10 gwy_math_fallback_powi gwy_math_find_minimum_1d gwy_math_find_nearest_line gwy_math_find_nearest_point gwy_math_fit_polynom gwy_math_histogram gwy_math_humanize_numbers gwy_math_is_in_polygon gwy_math_kth_rank gwy_math_kth_ranks gwy_math_lin_solve gwy_math_lin_solve_rewrite gwy_math_median gwy_math_median_uncertainty gwy_math_nlfit_copy gwy_math_nlfit_derive gwy_math_nlfit_diff gwy_math_nlfit_diff_idx gwy_math_nlfit_fit gwy_math_nlfit_fit_full gwy_math_nlfit_fit_idx gwy_math_nlfit_fit_idx_full gwy_math_nlfit_free gwy_math_nlfit_get_approx_geometric gwy_math_nlfit_get_correlations gwy_math_nlfit_get_covar gwy_math_nlfit_get_dispersion gwy_math_nlfit_get_eval gwy_math_nlfit_get_max_iterations gwy_math_nlfit_get_nparam gwy_math_nlfit_get_sigma gwy_math_nlfit_map_free_params gwy_math_nlfit_new gwy_math_nlfit_new_idx gwy_math_nlfit_set_approx_geometric gwy_math_nlfit_set_callbacks gwy_math_nlfit_set_max_iterations gwy_math_nlfit_succeeded gwy_math_percentiles gwy_math_refine_maximum gwy_math_refine_maximum_1d gwy_math_refine_maximum_2d gwy_math_sort gwy_math_sort_with_index gwy_math_tridiag_solve_rewrite gwy_math_trimmed_mean gwy_md5_get_digest gwy_memcpy_byte_swap gwy_memmem gwy_menu_gl_material gwy_menu_gradient gwy_menu_sens_flags_get_type gwy_merge_type_get_enum gwy_merge_type_get_type gwy_mfm_component_type_get_type gwy_mfm_gradient_type_get_type gwy_mfm_probe_type_get_type gwy_min_max_filter_type_get_type gwy_module_browser gwy_module_data_fopen gwy_module_data_load gwy_module_data_save gwy_module_disable_registration gwy_module_enable_registration gwy_module_error_get_type gwy_module_error_quark gwy_module_failure_foreach gwy_module_file_error_get_type gwy_module_file_error_quark gwy_module_foreach gwy_module_get_filename gwy_module_get_functions gwy_module_is_enabled gwy_module_lookup gwy_module_register_module gwy_module_register_modules gwy_nl_fit_param_flags_get_type gwy_nlfit_preset_create_fitter gwy_nlfit_preset_fit gwy_nlfit_preset_get_formula gwy_nlfit_preset_get_nparams gwy_nlfit_preset_get_param_name gwy_nlfit_preset_get_param_units gwy_nlfit_preset_get_type gwy_nlfit_preset_get_value gwy_nlfit_preset_guess gwy_nlfit_presets gwy_null_store_get_model gwy_null_store_get_n_rows gwy_null_store_get_type gwy_null_store_iter_is_valid gwy_null_store_new gwy_null_store_row_changed gwy_null_store_rows_changed gwy_null_store_set_model gwy_null_store_set_n_rows gwy_object_set_or_reset gwy_orientation_get_enum gwy_orientation_get_type gwy_param_active_page_link_to_notebook gwy_param_def_add_active_page gwy_param_def_add_angle gwy_param_def_add_boolean gwy_param_def_add_curve_map_id gwy_param_def_add_double gwy_param_def_add_enum gwy_param_def_add_grain_groups gwy_param_def_add_graph_curve gwy_param_def_add_graph_id gwy_param_def_add_gwyenum gwy_param_def_add_gwyflags gwy_param_def_add_hold_selection gwy_param_def_add_image_id gwy_param_def_add_instant_updates gwy_param_def_add_int gwy_param_def_add_lawn_curve gwy_param_def_add_lawn_segment gwy_param_def_add_mask_color gwy_param_def_add_percentage gwy_param_def_add_randomize gwy_param_def_add_report_type gwy_param_def_add_resource gwy_param_def_add_seed gwy_param_def_add_string gwy_param_def_add_target_graph gwy_param_def_add_unit gwy_param_def_add_volume_id gwy_param_def_add_xyz_id gwy_param_def_get_function_name gwy_param_def_get_param_label gwy_param_def_get_param_name gwy_param_def_get_type gwy_param_def_make_resource_type gwy_param_def_new gwy_param_def_set_function_name gwy_param_resource_get_params gwy_param_resource_get_type gwy_param_table_add_enabler gwy_param_table_alt_set_brick_pixel_x gwy_param_table_alt_set_brick_pixel_y gwy_param_table_alt_set_brick_pixel_z gwy_param_table_alt_set_calibration gwy_param_table_alt_set_field_frac_z gwy_param_table_alt_set_field_pixel_x gwy_param_table_alt_set_field_pixel_y gwy_param_table_alt_set_lawn_pixel_x gwy_param_table_alt_set_lawn_pixel_y gwy_param_table_alt_set_linear gwy_param_table_append_button gwy_param_table_append_checkbox gwy_param_table_append_checkboxes gwy_param_table_append_combo gwy_param_table_append_curve_map_id gwy_param_table_append_entry gwy_param_table_append_foreign gwy_param_table_append_graph_curve gwy_param_table_append_graph_id gwy_param_table_append_header gwy_param_table_append_hold_selection gwy_param_table_append_image_id gwy_param_table_append_info gwy_param_table_append_lawn_curve gwy_param_table_append_lawn_segment gwy_param_table_append_mask_color gwy_param_table_append_message gwy_param_table_append_radio gwy_param_table_append_radio_buttons gwy_param_table_append_radio_header gwy_param_table_append_radio_item gwy_param_table_append_radio_row gwy_param_table_append_range gwy_param_table_append_report gwy_param_table_append_results gwy_param_table_append_resultsv gwy_param_table_append_seed gwy_param_table_append_separator gwy_param_table_append_slider gwy_param_table_append_target_graph gwy_param_table_append_unit_chooser gwy_param_table_append_volume_id gwy_param_table_append_xyz_id gwy_param_table_checkboxes_set_sensitive gwy_param_table_combo_refilter gwy_param_table_combo_set_filter gwy_param_table_data_id_refilter gwy_param_table_data_id_set_filter gwy_param_table_entry_set_instant_changes gwy_param_table_entry_set_value_format gwy_param_table_entry_set_width gwy_param_table_exists gwy_param_table_get_type gwy_param_table_graph_curve_set_model gwy_param_table_info_set_add_punctuation gwy_param_table_info_set_valuestr gwy_param_table_message_set_type gwy_param_table_new gwy_param_table_param_changed gwy_param_table_params gwy_param_table_radio_set_sensitive gwy_param_table_report_set_formatter gwy_param_table_report_set_results gwy_param_table_reset gwy_param_table_results_clear gwy_param_table_results_fill gwy_param_table_set_boolean gwy_param_table_set_curve gwy_param_table_set_data_id gwy_param_table_set_double gwy_param_table_set_enum gwy_param_table_set_flags gwy_param_table_set_from_params gwy_param_table_set_int gwy_param_table_set_label gwy_param_table_set_no_reset gwy_param_table_set_no_resetv gwy_param_table_set_sensitive gwy_param_table_set_string gwy_param_table_set_unitstr gwy_param_table_slider_add_alt gwy_param_table_slider_restrict_range gwy_param_table_slider_set_digits gwy_param_table_slider_set_factor gwy_param_table_slider_set_mapping gwy_param_table_slider_set_snapping gwy_param_table_slider_set_steps gwy_param_table_slider_set_transform gwy_param_table_widget gwy_params_assign gwy_params_data_id_is_none gwy_params_duplicate gwy_params_get_boolean gwy_params_get_color gwy_params_get_curve_map gwy_params_get_data_id gwy_params_get_def gwy_params_get_double gwy_params_get_enum gwy_params_get_flags gwy_params_get_graph gwy_params_get_image gwy_params_get_int gwy_params_get_mask gwy_params_get_masking gwy_params_get_report_type gwy_params_get_resource gwy_params_get_string gwy_params_get_type gwy_params_get_unit gwy_params_get_volume gwy_params_get_xyz gwy_params_load_from_settings gwy_params_new gwy_params_new_from_settings gwy_params_randomize_seed gwy_params_reset gwy_params_reset_all gwy_params_save_to_settings gwy_params_set_boolean gwy_params_set_color gwy_params_set_curve gwy_params_set_curve_map_id gwy_params_set_def gwy_params_set_double gwy_params_set_enum gwy_params_set_flag gwy_params_set_flags gwy_params_set_graph_id gwy_params_set_image_id gwy_params_set_int gwy_params_set_report_type gwy_params_set_resource gwy_params_set_string gwy_params_set_unit gwy_params_set_volume_id gwy_params_set_xyz_id gwy_peak_background_type_get_type gwy_peak_order_type_get_type gwy_peak_quantity_get_type gwy_peaks_analyze gwy_peaks_analyze_dataline gwy_peaks_analyze_xy gwy_peaks_copy gwy_peaks_free gwy_peaks_get_quantity gwy_peaks_get_type gwy_peaks_n_peaks gwy_peaks_new gwy_peaks_set_background gwy_peaks_set_order gwy_percentile_interpolation_type_get_type gwy_pixbuf_draw_data_field gwy_pixbuf_draw_data_field_adaptive gwy_pixbuf_draw_data_field_as_mask gwy_pixbuf_draw_data_field_with_range gwy_pixmap_layer_get_data_key gwy_pixmap_layer_get_type gwy_pixmap_layer_make_pixbuf gwy_pixmap_layer_paint gwy_pixmap_layer_set_data_key gwy_pixmap_layer_wants_repaint gwy_plain_tool_add_clear_button gwy_plain_tool_add_param_table gwy_plain_tool_changed_get_type gwy_plain_tool_check_layer_type gwy_plain_tool_connect_selection gwy_plain_tool_enable_object_deletion gwy_plain_tool_enable_selection_holding gwy_plain_tool_ensure_layer gwy_plain_tool_get_type gwy_plain_tool_get_z_average gwy_plain_tool_hold_selection gwy_plain_tool_log_add gwy_plain_tool_set_selection_key gwy_plane_fit_quantity_get_type gwy_plane_symmetry_get_enum gwy_plane_symmetry_get_type gwy_preview_surface_flags_get_type gwy_preview_surface_to_datafield gwy_preview_type_get_type gwy_process_func_current gwy_process_func_exists gwy_process_func_foreach gwy_process_func_get_menu_path gwy_process_func_get_run_types gwy_process_func_get_sensitivity_mask gwy_process_func_get_stock_id gwy_process_func_get_tooltip gwy_process_func_register gwy_process_func_run gwy_process_type_init gwy_radio_button_get_value gwy_radio_button_set_value gwy_radio_buttons_attach_to_table gwy_radio_buttons_create gwy_radio_buttons_createl gwy_radio_buttons_find gwy_radio_buttons_get_current gwy_radio_buttons_set_current gwy_radio_buttons_set_sensitive gwy_rand_gen_set_choose_shuffle gwy_rand_gen_set_double gwy_rand_gen_set_exponential gwy_rand_gen_set_fill_doubles gwy_rand_gen_set_fill_ints gwy_rand_gen_set_free gwy_rand_gen_set_gaussian gwy_rand_gen_set_init gwy_rand_gen_set_int gwy_rand_gen_set_multiplier gwy_rand_gen_set_new gwy_rand_gen_set_range gwy_rand_gen_set_rng gwy_rand_gen_set_triangular gwy_rand_gen_set_uniform gwy_raw_data_size gwy_raw_data_type_get_type gwy_rect_selection_labels_fill gwy_rect_selection_labels_get_table gwy_rect_selection_labels_new gwy_rect_selection_labels_select gwy_rendering_target_get_type gwy_require_image_same_units gwy_require_square_image gwy_resource_build_filename gwy_resource_class_get_inventory gwy_resource_class_get_item_type gwy_resource_class_get_name gwy_resource_class_load gwy_resource_class_mkdir gwy_resource_class_save_modified gwy_resource_classes_finalize gwy_resource_data_changed gwy_resource_data_saved gwy_resource_delete gwy_resource_dump gwy_resource_editor_class_setup gwy_resource_editor_commit gwy_resource_editor_get_edited gwy_resource_editor_get_type gwy_resource_editor_queue_commit gwy_resource_editor_setup gwy_resource_get_is_modifiable gwy_resource_get_is_preferred gwy_resource_get_name gwy_resource_get_type gwy_resource_is_used gwy_resource_parse gwy_resource_release gwy_resource_rename gwy_resource_save gwy_resource_set_is_preferred gwy_resource_tree_view_set_active gwy_resource_use gwy_response_type_get_type gwy_results_add_covariance_matrix gwy_results_add_covariance_matrixv gwy_results_add_format gwy_results_add_header gwy_results_add_separator gwy_results_add_value gwy_results_add_value_angle gwy_results_add_value_int gwy_results_add_value_percents gwy_results_add_value_plain gwy_results_add_value_str gwy_results_add_value_x gwy_results_add_value_y gwy_results_add_value_yesno gwy_results_add_value_z gwy_results_bind_formats gwy_results_copy gwy_results_create_report gwy_results_export_get_format gwy_results_export_get_results gwy_results_export_get_style gwy_results_export_get_type gwy_results_export_new gwy_results_export_set_actions_sensitive gwy_results_export_set_format gwy_results_export_set_format_func gwy_results_export_set_results gwy_results_export_set_style gwy_results_export_set_title gwy_results_export_style_get_type gwy_results_fill_channel gwy_results_fill_covariance_matrix gwy_results_fill_curve_map gwy_results_fill_filename gwy_results_fill_format gwy_results_fill_graph gwy_results_fill_graph_curve gwy_results_fill_lawn_curve gwy_results_fill_values gwy_results_fill_values_with_errors gwy_results_fill_volume gwy_results_fill_xyz gwy_results_get_error gwy_results_get_full gwy_results_get_label gwy_results_get_label_with_symbol gwy_results_get_symbol gwy_results_get_type gwy_results_get_units gwy_results_get_value gwy_results_get_value_with_error gwy_results_new gwy_results_report_type_get_type gwy_results_set_na gwy_results_set_nav gwy_results_set_unit gwy_results_set_unit_str gwy_results_unbind_formats gwy_results_value_is_na gwy_results_value_type_get_type gwy_rgba_copy gwy_rgba_free gwy_rgba_from_gdk_color gwy_rgba_from_gdk_color_and_alpha gwy_rgba_from_pixbuf_pixel gwy_rgba_get_from_container gwy_rgba_get_type gwy_rgba_interpolate gwy_rgba_new gwy_rgba_remove_from_container gwy_rgba_set_gdk_gc_bg gwy_rgba_set_gdk_gc_fg gwy_rgba_store_to_container gwy_rgba_to_gdk_alpha gwy_rgba_to_gdk_color gwy_rgba_to_hex6 gwy_rgba_to_hex8 gwy_rgba_to_pixbuf_pixel gwy_rotate_resize_type_get_type gwy_ruler_draw_pos gwy_ruler_get_range gwy_ruler_get_si_unit gwy_ruler_get_type gwy_ruler_get_units_placement gwy_ruler_set_range gwy_ruler_set_si_unit gwy_ruler_set_units_placement gwy_run_subdialog gwy_run_type_get_type gwy_save_auxiliary_data gwy_save_auxiliary_with_callback gwy_scale_mapping_type_get_type gwy_sci_text_get_entry gwy_sci_text_get_has_preview gwy_sci_text_get_text gwy_sci_text_get_type gwy_sci_text_new gwy_sci_text_set_has_preview gwy_sci_text_set_text gwy_select_in_filtered_inventory_treeeview gwy_selection_changed gwy_selection_clear gwy_selection_crop gwy_selection_delete_object gwy_selection_filter gwy_selection_finished gwy_selection_get_data gwy_selection_get_max_objects gwy_selection_get_object gwy_selection_get_object_size gwy_selection_get_type gwy_selection_graph_1darea_get_type gwy_selection_graph_1darea_new gwy_selection_graph_area_get_type gwy_selection_graph_area_new gwy_selection_graph_line_get_type gwy_selection_graph_line_new gwy_selection_graph_point_get_type gwy_selection_graph_point_new gwy_selection_graph_zoom_get_type gwy_selection_graph_zoom_new gwy_selection_is_full gwy_selection_move gwy_selection_set_data gwy_selection_set_max_objects gwy_selection_set_object gwy_sensitivity_group_add_widget gwy_sensitivity_group_contains_widget gwy_sensitivity_group_get_state gwy_sensitivity_group_get_type gwy_sensitivity_group_get_widget_mask gwy_sensitivity_group_new gwy_sensitivity_group_release_widget gwy_sensitivity_group_set_state gwy_sensitivity_group_set_widget_mask gwy_serializable_clone gwy_serializable_clone_with_type gwy_serializable_deserialize gwy_serializable_duplicate gwy_serializable_get_size gwy_serializable_get_type gwy_serializable_serialize gwy_serialize_check_string gwy_serialize_get_items_size gwy_serialize_get_struct_size gwy_serialize_object_items gwy_serialize_pack_object_struct gwy_serialize_unpack_object_struct gwy_set_data_preview_size gwy_set_member_object gwy_sgettext gwy_shader_get_gradient gwy_shader_get_phi gwy_shader_get_theta gwy_shader_get_type gwy_shader_get_update_policy gwy_shader_new gwy_shader_set_angle gwy_shader_set_gradient gwy_shader_set_phi gwy_shader_set_theta gwy_shader_set_update_policy gwy_shape_fit_preset_calculate_xyz gwy_shape_fit_preset_calculate_z gwy_shape_fit_preset_create_fitter gwy_shape_fit_preset_fit gwy_shape_fit_preset_get_nparams gwy_shape_fit_preset_get_nsecondary gwy_shape_fit_preset_get_param_description gwy_shape_fit_preset_get_param_flags gwy_shape_fit_preset_get_param_name gwy_shape_fit_preset_get_param_power_xy gwy_shape_fit_preset_get_param_power_z gwy_shape_fit_preset_get_param_units gwy_shape_fit_preset_get_secondary_description gwy_shape_fit_preset_get_secondary_error gwy_shape_fit_preset_get_secondary_flags gwy_shape_fit_preset_get_secondary_name gwy_shape_fit_preset_get_secondary_power_xy gwy_shape_fit_preset_get_secondary_power_z gwy_shape_fit_preset_get_secondary_units gwy_shape_fit_preset_get_secondary_value gwy_shape_fit_preset_get_type gwy_shape_fit_preset_get_value gwy_shape_fit_preset_guess gwy_shape_fit_preset_needs_same_units gwy_shape_fit_preset_quick_fit gwy_shape_fit_preset_setup gwy_shape_fit_presets gwy_si_unit_divide gwy_si_unit_equal gwy_si_unit_equal_string gwy_si_unit_factor_to_base gwy_si_unit_format_style_get_type gwy_si_unit_get_format gwy_si_unit_get_format_for_power10 gwy_si_unit_get_format_with_digits gwy_si_unit_get_format_with_resolution gwy_si_unit_get_string gwy_si_unit_get_type gwy_si_unit_multiply gwy_si_unit_new gwy_si_unit_new_parse gwy_si_unit_nth_root gwy_si_unit_power gwy_si_unit_power_multiply gwy_si_unit_set_from_string gwy_si_unit_set_from_string_parse gwy_si_unit_value_format_clone gwy_si_unit_value_format_copy gwy_si_unit_value_format_free gwy_si_unit_value_format_new gwy_si_unit_value_format_set_units gwy_si_value_format_get_type gwy_sinc gwy_spectra_add_spectrum gwy_spectra_clear gwy_spectra_data_changed gwy_spectra_find_nearest gwy_spectra_get_n_spectra gwy_spectra_get_si_unit_xy gwy_spectra_get_spectrum gwy_spectra_get_spectrum_selected gwy_spectra_get_spectrum_x_label gwy_spectra_get_spectrum_y_label gwy_spectra_get_title gwy_spectra_get_type gwy_spectra_itoxy gwy_spectra_new gwy_spectra_new_alike gwy_spectra_remove_spectrum gwy_spectra_set_si_unit_xy gwy_spectra_set_spectrum gwy_spectra_set_spectrum_selected gwy_spectra_set_spectrum_x_label gwy_spectra_set_spectrum_y_label gwy_spectra_set_title gwy_spectra_setpos gwy_spectra_xytoi gwy_spline_copy gwy_spline_free gwy_spline_get_closed gwy_spline_get_npoints gwy_spline_get_points gwy_spline_get_slackness gwy_spline_get_tangents gwy_spline_get_type gwy_spline_length gwy_spline_new gwy_spline_new_from_points gwy_spline_sample_naturally gwy_spline_sample_uniformly gwy_spline_set_closed gwy_spline_set_points gwy_spline_set_slackness gwy_statusbar_get_type gwy_statusbar_new gwy_statusbar_set_markup gwy_stock_like_button_new gwy_stock_register_stock_items gwy_str_fixed_font_width gwy_str_next_line gwy_stramong gwy_strdiffpos gwy_string_list_append gwy_string_list_append_take gwy_string_list_clear gwy_string_list_get gwy_string_list_get_length gwy_string_list_get_type gwy_string_list_new gwy_string_to_enum gwy_string_to_flags gwy_strisident gwy_strkill gwy_strreplace gwy_surface_copy gwy_surface_copy_units gwy_surface_copy_units_to_data_field gwy_surface_data_changed gwy_surface_get gwy_surface_get_data gwy_surface_get_data_const gwy_surface_get_data_full gwy_surface_get_min_max gwy_surface_get_npoints gwy_surface_get_si_unit_xy gwy_surface_get_si_unit_z gwy_surface_get_type gwy_surface_get_value_format_xy gwy_surface_get_value_format_z gwy_surface_get_xrange gwy_surface_get_yrange gwy_surface_invalidate gwy_surface_new gwy_surface_new_alike gwy_surface_new_from_data gwy_surface_new_part gwy_surface_new_sized gwy_surface_reduce_points gwy_surface_resize gwy_surface_set gwy_surface_set_data_full gwy_surface_set_from_data_field gwy_surface_set_from_data_field_mask gwy_surface_set_si_unit_xy gwy_surface_set_si_unit_z gwy_surface_xy_is_compatible gwy_synth_add_result_to_file gwy_synth_append_dimensions_to_param_table gwy_synth_define_dimensions_params gwy_synth_dims_flags_get_type gwy_synth_dims_param_get_type gwy_synth_handle_param_changed gwy_synth_make_preview_data_field gwy_synth_make_result_data_field gwy_synth_response_type_get_type gwy_synth_sanitise_params gwy_synth_update_lateral_alts gwy_synth_update_like_current_button_sensitivity gwy_synth_update_progress gwy_synth_update_type_get_type gwy_synth_update_value_unitstrs gwy_synth_use_dimensions_template gwy_table_attach_adjbar gwy_table_attach_hscale gwy_table_attach_row gwy_table_attach_spinbutton gwy_table_get_child_widget gwy_table_hscale_get_check gwy_table_hscale_get_label gwy_table_hscale_get_middle_widget gwy_table_hscale_get_scale gwy_table_hscale_get_units gwy_table_hscale_set_sensitive gwy_text_header_context_get_lineno gwy_text_header_context_get_section gwy_text_header_error_get_type gwy_text_header_error_quark gwy_text_header_parse gwy_threads_are_enabled gwy_threads_set_enabled gwy_ticks_style_get_type gwy_tip_cmap gwy_tip_dilation gwy_tip_erosion gwy_tip_estimate_full gwy_tip_estimate_partial gwy_tip_model_get_npresets gwy_tip_model_get_preset gwy_tip_model_get_preset_by_name gwy_tip_model_get_preset_group_name gwy_tip_model_get_preset_id gwy_tip_model_get_preset_nparams gwy_tip_model_get_preset_params gwy_tip_model_get_preset_tip_name gwy_tip_model_preset_create gwy_tip_model_preset_create_for_zrange gwy_tip_model_preset_get_type gwy_tip_param_type_get_type gwy_tip_type_get_type gwy_tool_add_hide_button gwy_tool_class_get_stock_id gwy_tool_class_get_title gwy_tool_class_get_tooltip gwy_tool_data_switched gwy_tool_func_foreach gwy_tool_func_register gwy_tool_get_type gwy_tool_hide gwy_tool_is_visible gwy_tool_like_button_new gwy_tool_response_type_get_type gwy_tool_restore_screen_position gwy_tool_show gwy_tool_spectra_switched gwy_tool_switch_event_get_type gwy_transform_direction_get_type gwy_triangulation_boundary gwy_triangulation_data_free gwy_triangulation_delaunay gwy_triangulation_get_type gwy_triangulation_interpolate gwy_triangulation_new gwy_triangulation_triangulate gwy_triangulation_triangulate_iterative gwy_triangulation_voronoi gwy_type_init gwy_undo_checkpoint gwy_undo_checkpointv gwy_undo_container_get_modified gwy_undo_container_has_redo gwy_undo_container_has_undo gwy_undo_container_remove gwy_undo_container_set_unmodified gwy_undo_get_enabled gwy_undo_qcheckpoint gwy_undo_qcheckpointv gwy_undo_redo_container gwy_undo_set_enabled gwy_undo_undo_container gwy_units_placement_get_type gwy_utf16_to_utf8 gwy_utf8_strescape gwy_vbox_new gwy_vector_layer_button_press gwy_vector_layer_button_release gwy_vector_layer_class_get_selection_type gwy_vector_layer_draw gwy_vector_layer_ensure_selection gwy_vector_layer_get_editable gwy_vector_layer_get_focus gwy_vector_layer_get_selection_key gwy_vector_layer_get_type gwy_vector_layer_key_press gwy_vector_layer_key_release gwy_vector_layer_motion_notify gwy_vector_layer_object_chosen gwy_vector_layer_set_editable gwy_vector_layer_set_focus gwy_vector_layer_set_selection_key gwy_version_major gwy_version_minor gwy_version_string gwy_visibility_reset_type_get_type gwy_volume_func_current gwy_volume_func_exists gwy_volume_func_foreach gwy_volume_func_get_menu_path gwy_volume_func_get_run_types gwy_volume_func_get_sensitivity_mask gwy_volume_func_get_stock_id gwy_volume_func_get_tooltip gwy_volume_func_register gwy_volume_func_run gwy_vruler_get_type gwy_vruler_new gwy_watershed_state_type_get_type gwy_widget_get_activate_on_unfocus gwy_widget_set_activate_on_unfocus gwy_widget_sync_sensitivity gwy_widgets_get_gl_config gwy_widgets_gl_init gwy_widgets_type_init gwy_windowing_type_get_enum gwy_windowing_type_get_type gwy_xlnx_int gwy_xy_copy gwy_xy_free gwy_xy_get_type gwy_xy_new gwy_xyz_copy gwy_xyz_free gwy_xyz_func_current gwy_xyz_func_exists gwy_xyz_func_foreach gwy_xyz_func_get_menu_path gwy_xyz_func_get_run_types gwy_xyz_func_get_sensitivity_mask gwy_xyz_func_get_stock_id gwy_xyz_func_get_tooltip gwy_xyz_func_register gwy_xyz_func_run gwy_xyz_get_type gwy_xyz_new syn keyword gwyddionTypedef GdkGLConfig GwyPoint GwyTriangulationPointXY GwyTriangulationPointXYZ -syn keyword gwyddionConstant GWY_2DCWT_GAUSS GWY_2DCWT_HAT GWY_3D_MOVEMENT_DEFORMATION GWY_3D_MOVEMENT_LIGHT GWY_3D_MOVEMENT_NONE GWY_3D_MOVEMENT_ROTATION GWY_3D_MOVEMENT_SCALE GWY_3D_PROJECTION_ORTHOGRAPHIC GWY_3D_PROJECTION_PERSPECTIVE GWY_3D_VIEW_LABEL_MAX GWY_3D_VIEW_LABEL_MIN GWY_3D_VIEW_LABEL_X GWY_3D_VIEW_LABEL_Y GWY_3D_VIEW_NLABELS GWY_3D_VISUALIZATION_GRADIENT GWY_3D_VISUALIZATION_LIGHTING GWY_3D_VISUALIZATION_OVERLAY GWY_3D_VISUALIZATION_OVERLAY_NO_LIGHT GWY_AFFINE_SCALING_AS_GIVEN GWY_AFFINE_SCALING_PRESERVE_AREA GWY_AFFINE_SCALING_PRESERVE_X GWY_APP_BRICK GWY_APP_BRICK_ID GWY_APP_BRICK_KEY GWY_APP_CONTAINER GWY_APP_CONTAINER_ID GWY_APP_CURVE_MAP_VIEW GWY_APP_DATA_FIELD GWY_APP_DATA_FIELD_ID GWY_APP_DATA_FIELD_KEY GWY_APP_DATA_VIEW GWY_APP_GRAPH GWY_APP_GRAPH_MODEL GWY_APP_GRAPH_MODEL_ID GWY_APP_GRAPH_MODEL_KEY GWY_APP_LAWN GWY_APP_LAWN_ID GWY_APP_LAWN_KEY GWY_APP_LOGGING_TO_CONSOLE GWY_APP_LOGGING_TO_FILE GWY_APP_MASK_FIELD GWY_APP_MASK_FIELD_KEY GWY_APP_PAGE GWY_APP_SETTINGS_ERROR_CFGDIR GWY_APP_SETTINGS_ERROR_CORRUPT GWY_APP_SETTINGS_ERROR_EMPTY GWY_APP_SETTINGS_ERROR_FILE GWY_APP_SHOW_FIELD GWY_APP_SHOW_FIELD_KEY GWY_APP_SPECTRA GWY_APP_SPECTRA_ID GWY_APP_SPECTRA_KEY GWY_APP_SURFACE GWY_APP_SURFACE_ID GWY_APP_SURFACE_KEY GWY_APP_VOLUME_VIEW GWY_APP_XYZ_VIEW GWY_AXIS_SCALE_FORMAT_AUTO GWY_AXIS_SCALE_FORMAT_EXP GWY_AXIS_SCALE_FORMAT_INT GWY_BRICK_TRANSPOSE_XYZ GWY_BRICK_TRANSPOSE_XZY GWY_BRICK_TRANSPOSE_YXZ GWY_BRICK_TRANSPOSE_YZX GWY_BRICK_TRANSPOSE_ZXY GWY_BRICK_TRANSPOSE_ZYX GWY_BYTE_ORDER_BIG_ENDIAN GWY_BYTE_ORDER_IMPLICIT GWY_BYTE_ORDER_LITTLE_ENDIAN GWY_BYTE_ORDER_NATIVE GWY_COMPUTATION_STATE_FINISHED GWY_COMPUTATION_STATE_INIT GWY_COMPUTATION_STATE_ITERATE GWY_CORRELATION_FFT GWY_CORRELATION_NORMAL GWY_CORRELATION_POC GWY_CORR_SEARCH_COVARIANCE GWY_CORR_SEARCH_COVARIANCE_RAW GWY_CORR_SEARCH_COVARIANCE_SCORE GWY_CORR_SEARCH_HEIGHT_DIFF GWY_CORR_SEARCH_HEIGHT_DIFF_RAW GWY_CORR_SEARCH_HEIGHT_DIFF_SCORE GWY_CURVE_CHANNEL_BLUE GWY_CURVE_CHANNEL_GREEN GWY_CURVE_CHANNEL_RED GWY_CURVE_TYPE_FREE GWY_CURVE_TYPE_LINEAR GWY_CURVE_TYPE_SPLINE GWY_DATA_COMPATIBILITY_ALL GWY_DATA_COMPATIBILITY_AXISCAL GWY_DATA_COMPATIBILITY_CURVELEN GWY_DATA_COMPATIBILITY_LATERAL GWY_DATA_COMPATIBILITY_MEASURE GWY_DATA_COMPATIBILITY_NCURVES GWY_DATA_COMPATIBILITY_REAL GWY_DATA_COMPATIBILITY_RES GWY_DATA_COMPATIBILITY_VALUE GWY_DATA_ERROR_ITEM_TYPE GWY_DATA_ERROR_KEY_CHARACTERS GWY_DATA_ERROR_KEY_FORMAT GWY_DATA_ERROR_KEY_ID GWY_DATA_ERROR_KEY_UNKNOWN GWY_DATA_ERROR_NON_UTF8_STRING GWY_DATA_ERROR_REF_COUNT GWY_DATA_ERROR_STRAY_SECONDARY_DATA GWY_DATA_FIELD_CACHE_ARE GWY_DATA_FIELD_CACHE_ARF GWY_DATA_FIELD_CACHE_ART GWY_DATA_FIELD_CACHE_ENT GWY_DATA_FIELD_CACHE_MAX GWY_DATA_FIELD_CACHE_MED GWY_DATA_FIELD_CACHE_MIN GWY_DATA_FIELD_CACHE_MSQ GWY_DATA_FIELD_CACHE_RMS GWY_DATA_FIELD_CACHE_SIZE GWY_DATA_FIELD_CACHE_SUM GWY_DATA_FIELD_CACHE_VAR GWY_DATA_ITEM_CALDATA GWY_DATA_ITEM_GRADIENT GWY_DATA_ITEM_MASK_COLOR GWY_DATA_ITEM_META GWY_DATA_ITEM_PALETTE GWY_DATA_ITEM_PREVIEW GWY_DATA_ITEM_RANGE GWY_DATA_ITEM_RANGE_TYPE GWY_DATA_ITEM_REAL_SQUARE GWY_DATA_ITEM_SELECTIONS GWY_DATA_ITEM_TITLE GWY_DATA_VALIDATE_ALL GWY_DATA_VALIDATE_CORRECT GWY_DATA_VALIDATE_NO_REPORT GWY_DATA_VALIDATE_REF_COUNT GWY_DATA_VALIDATE_UNKNOWN GWY_DATA_VIEW_LAYER_ALPHA GWY_DATA_VIEW_LAYER_BASE GWY_DATA_VIEW_LAYER_TOP GWY_DATA_WATCH_EVENT_ADDED GWY_DATA_WATCH_EVENT_CHANGED GWY_DATA_WATCH_EVENT_REMOVED GWY_DEBUG_OBJECTS_DUMP_ONLY_ALIVE GWY_DIALOG_CANCEL GWY_DIALOG_HAVE_RESULT GWY_DIALOG_PROCEED GWY_DIMS_BUTTON_TAKE GWY_DIMS_HEADER_CURRENT_IMAGE GWY_DIMS_HEADER_PHYSICAL GWY_DIMS_HEADER_PIXEL GWY_DIMS_HEADER_UNITS GWY_DIMS_PARAM_INITIALIZE GWY_DIMS_PARAM_REPLACE GWY_DIMS_PARAM_SQUARE_IMAGE GWY_DIMS_PARAM_SQUARE_PIXELS GWY_DIMS_PARAM_XREAL GWY_DIMS_PARAM_XRES GWY_DIMS_PARAM_XYUNIT GWY_DIMS_PARAM_YREAL GWY_DIMS_PARAM_YRES GWY_DIMS_PARAM_ZUNIT GWY_DISTANCE_TRANSFORM_CHESS GWY_DISTANCE_TRANSFORM_CITYBLOCK GWY_DISTANCE_TRANSFORM_CONN4 GWY_DISTANCE_TRANSFORM_CONN8 GWY_DISTANCE_TRANSFORM_EUCLIDEAN GWY_DISTANCE_TRANSFORM_OCTAGONAL GWY_DISTANCE_TRANSFORM_OCTAGONAL48 GWY_DISTANCE_TRANSFORM_OCTAGONAL84 GWY_DWT_DAUB12 GWY_DWT_DAUB20 GWY_DWT_DAUB4 GWY_DWT_DAUB6 GWY_DWT_DAUB8 GWY_DWT_DENOISE_SCALE_ADAPTIVE GWY_DWT_DENOISE_SPACE_ADAPTIVE GWY_DWT_DENOISE_UNIVERSAL GWY_DWT_HAAR GWY_EXPR_ERROR_CLOSING_PARENTHESIS GWY_EXPR_ERROR_CONSTANT_NAME GWY_EXPR_ERROR_EMPTY GWY_EXPR_ERROR_EMPTY_PARENTHESES GWY_EXPR_ERROR_GARBAGE GWY_EXPR_ERROR_INVALID_ARGUMENT GWY_EXPR_ERROR_INVALID_TOKEN GWY_EXPR_ERROR_MISSING_ARGUMENT GWY_EXPR_ERROR_NOT_EXECUTABLE GWY_EXPR_ERROR_OPENING_PARENTHESIS GWY_EXPR_ERROR_STRAY_COMMA GWY_EXPR_ERROR_UNRESOLVED_IDENTIFIERS GWY_EXTERIOR_BORDER_EXTEND GWY_EXTERIOR_FIXED_VALUE GWY_EXTERIOR_LAPLACE GWY_EXTERIOR_MIRROR_EXTEND GWY_EXTERIOR_PERIODIC GWY_EXTERIOR_UNDEFINED GWY_FILE_OPERATION_DETECT GWY_FILE_OPERATION_EXPORT GWY_FILE_OPERATION_LOAD GWY_FILE_OPERATION_MASK GWY_FILE_OPERATION_SAVE GWY_GRAIN_VALUE_BOUNDARY_MAXIMUM GWY_GRAIN_VALUE_BOUNDARY_MINIMUM GWY_GRAIN_VALUE_CENTER_X GWY_GRAIN_VALUE_CENTER_Y GWY_GRAIN_VALUE_CIRCUMCIRCLE_R GWY_GRAIN_VALUE_CIRCUMCIRCLE_X GWY_GRAIN_VALUE_CIRCUMCIRCLE_Y GWY_GRAIN_VALUE_CONVEX_HULL_AREA GWY_GRAIN_VALUE_CURVATURE1 GWY_GRAIN_VALUE_CURVATURE2 GWY_GRAIN_VALUE_CURVATURE_ANGLE1 GWY_GRAIN_VALUE_CURVATURE_ANGLE2 GWY_GRAIN_VALUE_CURVATURE_CENTER_X GWY_GRAIN_VALUE_CURVATURE_CENTER_Y GWY_GRAIN_VALUE_CURVATURE_CENTER_Z GWY_GRAIN_VALUE_EQUIV_DISC_RADIUS GWY_GRAIN_VALUE_EQUIV_ELLIPSE_ANGLE GWY_GRAIN_VALUE_EQUIV_ELLIPSE_MAJOR GWY_GRAIN_VALUE_EQUIV_ELLIPSE_MINOR GWY_GRAIN_VALUE_EQUIV_SQUARE_SIDE GWY_GRAIN_VALUE_FLAT_BOUNDARY_LENGTH GWY_GRAIN_VALUE_GROUP_AREA GWY_GRAIN_VALUE_GROUP_BOUNDARY GWY_GRAIN_VALUE_GROUP_CURVATURE GWY_GRAIN_VALUE_GROUP_ID GWY_GRAIN_VALUE_GROUP_MOMENT GWY_GRAIN_VALUE_GROUP_POSITION GWY_GRAIN_VALUE_GROUP_SLOPE GWY_GRAIN_VALUE_GROUP_USER GWY_GRAIN_VALUE_GROUP_VALUE GWY_GRAIN_VALUE_GROUP_VOLUME GWY_GRAIN_VALUE_HALF_HEIGHT_AREA GWY_GRAIN_VALUE_INSCRIBED_DISC_R GWY_GRAIN_VALUE_INSCRIBED_DISC_X GWY_GRAIN_VALUE_INSCRIBED_DISC_Y GWY_GRAIN_VALUE_IS_ANGLE GWY_GRAIN_VALUE_MAXIMUM GWY_GRAIN_VALUE_MAXIMUM_BOUND_ANGLE GWY_GRAIN_VALUE_MAXIMUM_BOUND_SIZE GWY_GRAIN_VALUE_MAXIMUM_MARTIN_ANGLE GWY_GRAIN_VALUE_MAXIMUM_MARTIN_DIAMETER GWY_GRAIN_VALUE_MEAN GWY_GRAIN_VALUE_MEAN_RADIUS GWY_GRAIN_VALUE_MEDIAN GWY_GRAIN_VALUE_MINIMUM GWY_GRAIN_VALUE_MINIMUM_BOUND_ANGLE GWY_GRAIN_VALUE_MINIMUM_BOUND_SIZE GWY_GRAIN_VALUE_MINIMUM_MARTIN_ANGLE GWY_GRAIN_VALUE_MINIMUM_MARTIN_DIAMETER GWY_GRAIN_VALUE_PIXEL_AREA GWY_GRAIN_VALUE_PROJECTED_AREA GWY_GRAIN_VALUE_RMS GWY_GRAIN_VALUE_SAME_UNITS GWY_GRAIN_VALUE_SLOPE_PHI GWY_GRAIN_VALUE_SLOPE_THETA GWY_GRAIN_VALUE_STORE_COLUMN_ENABLED GWY_GRAIN_VALUE_STORE_COLUMN_GROUP GWY_GRAIN_VALUE_STORE_COLUMN_ITEM GWY_GRAIN_VALUE_SURFACE_AREA GWY_GRAIN_VALUE_VOLUME_0 GWY_GRAIN_VALUE_VOLUME_LAPLACE GWY_GRAIN_VALUE_VOLUME_MIN GWY_GRAPH_CURVE_HIDDEN GWY_GRAPH_CURVE_LINE GWY_GRAPH_CURVE_LINE_POINTS GWY_GRAPH_CURVE_POINTS GWY_GRAPH_GRID_AUTO GWY_GRAPH_GRID_NONE GWY_GRAPH_GRID_USER GWY_GRAPH_LABEL_NORTHEAST GWY_GRAPH_LABEL_NORTHWEST GWY_GRAPH_LABEL_SOUTHEAST GWY_GRAPH_LABEL_SOUTHWEST GWY_GRAPH_LABEL_USER GWY_GRAPH_MODEL_EXPORT_ASCII_CSV GWY_GRAPH_MODEL_EXPORT_ASCII_GNUPLOT GWY_GRAPH_MODEL_EXPORT_ASCII_IGORPRO GWY_GRAPH_MODEL_EXPORT_ASCII_MERGED GWY_GRAPH_MODEL_EXPORT_ASCII_ORIGIN GWY_GRAPH_MODEL_EXPORT_ASCII_PLAIN GWY_GRAPH_MODEL_EXPORT_ASCII_POSIX GWY_GRAPH_POINT_ASTERISK GWY_GRAPH_POINT_CIRCLE GWY_GRAPH_POINT_CROSS GWY_GRAPH_POINT_DIAMOND GWY_GRAPH_POINT_DISC GWY_GRAPH_POINT_FILLED_CIRCLE GWY_GRAPH_POINT_FILLED_DIAMOND GWY_GRAPH_POINT_FILLED_SQUARE GWY_GRAPH_POINT_FILLED_TRIANGLE_DOWN GWY_GRAPH_POINT_FILLED_TRIANGLE_LEFT GWY_GRAPH_POINT_FILLED_TRIANGLE_RIGHT GWY_GRAPH_POINT_FILLED_TRIANGLE_UP GWY_GRAPH_POINT_SQUARE GWY_GRAPH_POINT_STAR GWY_GRAPH_POINT_TIMES GWY_GRAPH_POINT_TRIANGLE_DOWN GWY_GRAPH_POINT_TRIANGLE_LEFT GWY_GRAPH_POINT_TRIANGLE_RIGHT GWY_GRAPH_POINT_TRIANGLE_UP GWY_GRAPH_STATUS_PLAIN GWY_GRAPH_STATUS_POINTS GWY_GRAPH_STATUS_XLINES GWY_GRAPH_STATUS_XSEL GWY_GRAPH_STATUS_YLINES GWY_GRAPH_STATUS_YSEL GWY_GRAPH_STATUS_ZOOM GWY_HELP_DEFAULT GWY_HELP_NO_BUTTON GWY_HSCALE_CHECK GWY_HSCALE_DEFAULT GWY_HSCALE_LINEAR GWY_HSCALE_LOG GWY_HSCALE_NO_SCALE GWY_HSCALE_SNAP GWY_HSCALE_SQRT GWY_HSCALE_WIDGET GWY_HSCALE_WIDGET_NO_EXPAND GWY_INTERPOLATION_BILINEAR GWY_INTERPOLATION_BSPLINE GWY_INTERPOLATION_KEY GWY_INTERPOLATION_LINEAR GWY_INTERPOLATION_NNA GWY_INTERPOLATION_NONE GWY_INTERPOLATION_OMOMS GWY_INTERPOLATION_ROUND GWY_INTERPOLATION_SCHAUM GWY_LAYER_BASIC_RANGE_ADAPT GWY_LAYER_BASIC_RANGE_AUTO GWY_LAYER_BASIC_RANGE_FIXED GWY_LAYER_BASIC_RANGE_FULL GWY_LINE_STAT_KURTOSIS GWY_LINE_STAT_LENGTH GWY_LINE_STAT_MAXIMUM GWY_LINE_STAT_MAXPOS GWY_LINE_STAT_MEAN GWY_LINE_STAT_MEDIAN GWY_LINE_STAT_MINIMUM GWY_LINE_STAT_MINPOS GWY_LINE_STAT_RA GWY_LINE_STAT_RANGE GWY_LINE_STAT_RMS GWY_LINE_STAT_RT GWY_LINE_STAT_RZ GWY_LINE_STAT_SKEW GWY_LINE_STAT_SLOPE GWY_LINE_STAT_TAN_BETA0 GWY_LINE_STAT_VARIATION GWY_MARKER_OPERATION_ADD GWY_MARKER_OPERATION_MOVE GWY_MARKER_OPERATION_REMOVE GWY_MASK_EXCLUDE GWY_MASK_IGNORE GWY_MASK_INCLUDE GWY_MENU_FLAG_3D GWY_MENU_FLAG_CURVE_MAP GWY_MENU_FLAG_DATA GWY_MENU_FLAG_DATA_MASK GWY_MENU_FLAG_DATA_SHOW GWY_MENU_FLAG_FILE GWY_MENU_FLAG_GRAPH GWY_MENU_FLAG_GRAPH_CURVE GWY_MENU_FLAG_LAST_GRAPH GWY_MENU_FLAG_LAST_PROC GWY_MENU_FLAG_MASK GWY_MENU_FLAG_REDO GWY_MENU_FLAG_UNDO GWY_MENU_FLAG_VOLUME GWY_MENU_FLAG_XYZ GWY_MERGE_INTERSECTION GWY_MERGE_UNION GWY_MFM_COMPONENT_D2HZ_DZ2 GWY_MFM_COMPONENT_DHZ_DZ GWY_MFM_COMPONENT_HX GWY_MFM_COMPONENT_HY GWY_MFM_COMPONENT_HZ GWY_MFM_GRADIENT_FORCE GWY_MFM_GRADIENT_MFM GWY_MFM_GRADIENT_MFM_AREA GWY_MFM_PROBE_BAR GWY_MFM_PROBE_CHARGE GWY_MIN_MAX_FILTER_CLOSING GWY_MIN_MAX_FILTER_DILATION GWY_MIN_MAX_FILTER_EROSION GWY_MIN_MAX_FILTER_MAXIMUM GWY_MIN_MAX_FILTER_MINIMUM GWY_MIN_MAX_FILTER_NORMALIZATION GWY_MIN_MAX_FILTER_OPENING GWY_MIN_MAX_FILTER_RANGE GWY_MODULE_ERROR_ABI GWY_MODULE_ERROR_DUPLICATE GWY_MODULE_ERROR_INFO GWY_MODULE_ERROR_NAME GWY_MODULE_ERROR_NESTING GWY_MODULE_ERROR_OPEN GWY_MODULE_ERROR_QUERY GWY_MODULE_ERROR_REGISTER GWY_MODULE_FILE_ERROR_CANCELED GWY_MODULE_FILE_ERROR_CANCELLED GWY_MODULE_FILE_ERROR_DATA GWY_MODULE_FILE_ERROR_INTERACTIVE GWY_MODULE_FILE_ERROR_IO GWY_MODULE_FILE_ERROR_SPECIFIC GWY_MODULE_FILE_ERROR_UNIMPLEMENTED GWY_NLFIT_PARAM_ABSVAL GWY_NLFIT_PARAM_ANGLE GWY_ORIENTATION_HORIZONTAL GWY_ORIENTATION_VERTICAL GWY_PAGE_CHANNELS GWY_PAGE_CURVE_MAPS GWY_PAGE_GRAPHS GWY_PAGE_NOPAGE GWY_PAGE_SPECTRA GWY_PAGE_VOLUMES GWY_PAGE_XYZS GWY_PARAM_STRING_DO_NOT_STRIP GWY_PARAM_STRING_EMPTY_IS_NULL GWY_PARAM_STRING_NULL_IS_EMPTY GWY_PEAK_ABSCISSA GWY_PEAK_AREA GWY_PEAK_BACKGROUND_MMSTEP GWY_PEAK_BACKGROUND_ZERO GWY_PEAK_HEIGHT GWY_PEAK_ORDER_ABSCISSA GWY_PEAK_ORDER_PROMINENCE GWY_PEAK_PROMINENCE GWY_PEAK_WIDTH GWY_PERCENTILE_INTERPOLATION_HIGHER GWY_PERCENTILE_INTERPOLATION_LINEAR GWY_PERCENTILE_INTERPOLATION_LOWER GWY_PERCENTILE_INTERPOLATION_MIDPOINT GWY_PERCENTILE_INTERPOLATION_NEAREST GWY_PLAIN_TOOL_CHANGED_DATA GWY_PLAIN_TOOL_CHANGED_MASK GWY_PLAIN_TOOL_CHANGED_SELECTION GWY_PLAIN_TOOL_CHANGED_SHOW GWY_PLAIN_TOOL_FINISHED_SELECTION GWY_PLANE_FIT_A GWY_PLANE_FIT_ANGLE GWY_PLANE_FIT_BX GWY_PLANE_FIT_BY GWY_PLANE_FIT_S0 GWY_PLANE_FIT_S0_REDUCED GWY_PLANE_FIT_SLOPE GWY_PREVIEW_IMMEDIATE GWY_PREVIEW_NONE GWY_PREVIEW_SURFACE_DENSITY GWY_PREVIEW_SURFACE_FILL GWY_PREVIEW_UPON_REQUEST GWY_RAW_DATA_DOUBLE GWY_RAW_DATA_FLOAT GWY_RAW_DATA_HALF GWY_RAW_DATA_REAL GWY_RAW_DATA_SINT16 GWY_RAW_DATA_SINT32 GWY_RAW_DATA_SINT64 GWY_RAW_DATA_SINT8 GWY_RAW_DATA_UINT16 GWY_RAW_DATA_UINT32 GWY_RAW_DATA_UINT64 GWY_RAW_DATA_UINT8 GWY_RENDERING_TARGET_PIXMAP_IMAGE GWY_RENDERING_TARGET_SCREEN GWY_RESPONSE_CLEAR GWY_RESPONSE_RESET GWY_RESPONSE_SYNTH_INIT_Z GWY_RESPONSE_SYNTH_TAKE_DIMS GWY_RESPONSE_UPDATE GWY_RESULTS_EXPORT_FIXED_FORMAT GWY_RESULTS_EXPORT_PARAMETERS GWY_RESULTS_EXPORT_TABULAR_DATA GWY_RESULTS_REPORT_COLON GWY_RESULTS_REPORT_CSV GWY_RESULTS_REPORT_MACHINE GWY_RESULTS_REPORT_TABSEP GWY_RESULTS_VALUE_FLOAT GWY_RESULTS_VALUE_INT GWY_RESULTS_VALUE_STRING GWY_RESULTS_VALUE_YESNO GWY_ROTATE_RESIZE_CUT GWY_ROTATE_RESIZE_EXPAND GWY_ROTATE_RESIZE_SAME_SIZE GWY_RUN_IMMEDIATE GWY_RUN_INTERACTIVE GWY_RUN_MASK GWY_RUN_NONE GWY_RUN_NONINTERACTIVE GWY_SCALE_MAPPING_LINEAR GWY_SCALE_MAPPING_LOG GWY_SCALE_MAPPING_LOG1P GWY_SCALE_MAPPING_SQRT GWY_SI_UNIT_FORMAT_MARKUP GWY_SI_UNIT_FORMAT_NONE GWY_SI_UNIT_FORMAT_PLAIN GWY_SI_UNIT_FORMAT_TEX GWY_SI_UNIT_FORMAT_UNICODE GWY_SI_UNIT_FORMAT_VFMARKUP GWY_SI_UNIT_FORMAT_VFTEX GWY_SI_UNIT_FORMAT_VFUNICODE GWY_SYMMETRY_AUTO GWY_SYMMETRY_HEXAGONAL GWY_SYMMETRY_LAST GWY_SYMMETRY_PARALLEL GWY_SYMMETRY_RHOMBIC GWY_SYMMETRY_SQUARE GWY_SYMMETRY_TRIANGULAR GWY_SYNTH_FIXED_UNITS GWY_SYNTH_FIXED_XYUNIT GWY_SYNTH_FIXED_ZUNIT GWY_SYNTH_NO_INITIALIZE GWY_SYNTH_UPDATE_CANCELLED GWY_SYNTH_UPDATE_DO_PREVIEW GWY_SYNTH_UPDATE_NOTHING GWY_TEXT_HEADER_ERROR_GARBAGE GWY_TEXT_HEADER_ERROR_KEY GWY_TEXT_HEADER_ERROR_PREFIX GWY_TEXT_HEADER_ERROR_SECTION_END GWY_TEXT_HEADER_ERROR_SECTION_NAME GWY_TEXT_HEADER_ERROR_SECTION_START GWY_TEXT_HEADER_ERROR_TERMINATOR GWY_TEXT_HEADER_ERROR_VALUE GWY_TICKS_STYLE_AUTO GWY_TICKS_STYLE_CENTER GWY_TICKS_STYLE_NONE GWY_TICKS_STYLE_UNLABELED GWY_TICKS_STYLE_UNLABELLED GWY_TIP_BALL_ON_STICK GWY_TIP_CONE GWY_TIP_CONTACT GWY_TIP_DELTA GWY_TIP_ELLPARABOLA GWY_TIP_NONCONTACT GWY_TIP_PARABOLA GWY_TIP_PARAM_ANISOTROPY GWY_TIP_PARAM_HEIGHT GWY_TIP_PARAM_NSIDES GWY_TIP_PARAM_RADIUS GWY_TIP_PARAM_ROTATION GWY_TIP_PARAM_SLOPE GWY_TIP_PYRAMID GWY_TIP_PYRAMIDE GWY_TOOL_RESPONSE_CLEAR GWY_TOOL_RESPONSE_UPDATE GWY_TRANSFORM_DIRECTION_BACKWARD GWY_TRANSFORM_DIRECTION_FORWARD GWY_UNITS_PLACEMENT_AT_ZERO GWY_UNITS_PLACEMENT_NONE GWY_VISIBILITY_RESET_DEFAULT GWY_VISIBILITY_RESET_HIDE_ALL GWY_VISIBILITY_RESET_RESTORE GWY_VISIBILITY_RESET_SHOW_ALL GWY_WATERSHED_STATE_FINISHED GWY_WATERSHED_STATE_INIT GWY_WATERSHED_STATE_LOCATE GWY_WATERSHED_STATE_MARK GWY_WATERSHED_STATE_MIN GWY_WATERSHED_STATE_WATERSHED GWY_WINDOWING_BLACKMANN GWY_WINDOWING_FLAT_TOP GWY_WINDOWING_HAMMING GWY_WINDOWING_HANN GWY_WINDOWING_KAISER25 GWY_WINDOWING_LANCZOS GWY_WINDOWING_NONE GWY_WINDOWING_NUTTALL GWY_WINDOWING_RECT GWY_WINDOWING_WELCH -syn keyword gwyddionStruct Gwy3DLabel Gwy3DLabelClass Gwy3DSetup Gwy3DSetupClass Gwy3DView Gwy3DViewClass Gwy3DWindow Gwy3DWindowClass GwyAdjustBar GwyAdjustBarClass GwyAppDataId GwyAxis GwyAxisClass GwyAxisParams GwyBrick GwyBrickClass GwyBrickPart GwyCDLine GwyCDLineBuiltin GwyCDLineClass GwyCalData GwyCalDataClass GwyCalibration GwyCalibrationClass GwyChannelData GwyColorAxis GwyColorAxisClass GwyColorButton GwyColorButtonClass GwyComputationState GwyContainer GwyContainerClass GwyCurve GwyCurveCalibrationData GwyCurveClass GwyDataChooser GwyDataChooserClass GwyDataField GwyDataFieldClass GwyDataLine GwyDataLineClass GwyDataValidationFailure GwyDataView GwyDataViewClass GwyDataViewLayer GwyDataViewLayerClass GwyDataWindow GwyDataWindowClass GwyDialog GwyDialogClass GwyEnum GwyExpr GwyFDCurvePreset GwyFDCurvePresetBuiltin GwyFDCurvePresetClass GwyFileDetectInfo GwyFunctionUse GwyGLMaterial GwyGLMaterialClass GwyGradient GwyGradientClass GwyGradientPoint GwyGrainValue GwyGrainValueClass GwyGrainValueData GwyGraph GwyGraphActiveAreaSpecs GwyGraphArea GwyGraphAreaClass GwyGraphClass GwyGraphCorner GwyGraphCornerClass GwyGraphCurveModel GwyGraphCurveModelClass GwyGraphCurves GwyGraphCurvesClass GwyGraphData GwyGraphDataClass GwyGraphLabel GwyGraphLabelClass GwyGraphModel GwyGraphModelClass GwyGraphWindow GwyGraphWindowClass GwyHMarkerBox GwyHMarkerBoxClass GwyHRuler GwyHRulerClass GwyInventory GwyInventoryClass GwyInventoryItemType GwyInventoryStore GwyInventoryStoreClass GwyLawn GwyLawnClass GwyLayerBasic GwyLayerBasicClass GwyLayerMask GwyLayerMaskClass GwyMarkerBox GwyMarkerBoxClass GwyModuleFailureInfo GwyModuleInfo GwyModuleRecord GwyNLFitPreset GwyNLFitPresetBuiltin GwyNLFitPresetClass GwyNLFitter GwyNullStore GwyNullStoreClass GwyParamDef GwyParamDefClass GwyParamResource GwyParamResourceClass GwyParamTable GwyParamTableClass GwyParams GwyParamsClass GwyPeaks GwyPixmapLayer GwyPixmapLayerClass GwyPlainTool GwyPlainToolClass GwyRGBA GwyRandGenSet GwyRectSelectionLabels GwyResource GwyResourceClass GwyResourceEditor GwyResourceEditorClass GwyResults GwyResultsClass GwyResultsExport GwyResultsExportClass GwyRuler GwyRulerClass GwySIUnit GwySIUnitClass GwySIValueFormat GwySciText GwySciTextClass GwySelection GwySelectionClass GwySelectionGraph1DArea GwySelectionGraph1DAreaClass GwySelectionGraphArea GwySelectionGraphAreaClass GwySelectionGraphLine GwySelectionGraphLineClass GwySelectionGraphPoint GwySelectionGraphPointClass GwySelectionGraphZoom GwySelectionGraphZoomClass GwySensitivityGroup GwySensitivityGroupClass GwySerializable GwySerializableIface GwySerializeItem GwySerializeSpec GwyShader GwyShaderClass GwyShapeFitPreset GwyShapeFitPresetClass GwySpectra GwySpectraClass GwySpline GwyStatusbar GwyStatusbarClass GwyStringList GwyStringListClass GwySurface GwySurfaceClass GwyTextEntity GwyTextHeaderContext GwyTextHeaderParser GwyTool GwyToolClass GwyTriangulation GwyTriangulationClass GwyTriangulationData GwyVRuler GwyVRulerClass GwyVectorLayer GwyVectorLayerClass GwyXY GwyXYZ +syn keyword gwyddionConstant GWY_2DCWT_GAUSS GWY_2DCWT_HAT GWY_3D_MOVEMENT_DEFORMATION GWY_3D_MOVEMENT_LIGHT GWY_3D_MOVEMENT_NONE GWY_3D_MOVEMENT_ROTATION GWY_3D_MOVEMENT_SCALE GWY_3D_PROJECTION_ORTHOGRAPHIC GWY_3D_PROJECTION_PERSPECTIVE GWY_3D_VIEW_LABEL_MAX GWY_3D_VIEW_LABEL_MIN GWY_3D_VIEW_LABEL_X GWY_3D_VIEW_LABEL_Y GWY_3D_VIEW_NLABELS GWY_3D_VISUALIZATION_GRADIENT GWY_3D_VISUALIZATION_LIGHTING GWY_3D_VISUALIZATION_OVERLAY GWY_3D_VISUALIZATION_OVERLAY_NO_LIGHT GWY_AFFINE_SCALING_AS_GIVEN GWY_AFFINE_SCALING_PRESERVE_AREA GWY_AFFINE_SCALING_PRESERVE_X GWY_APP_BRICK GWY_APP_BRICK_ID GWY_APP_BRICK_KEY GWY_APP_CONTAINER GWY_APP_CONTAINER_ID GWY_APP_CURVE_MAP_VIEW GWY_APP_DATA_FIELD GWY_APP_DATA_FIELD_ID GWY_APP_DATA_FIELD_KEY GWY_APP_DATA_VIEW GWY_APP_GRAPH GWY_APP_GRAPH_MODEL GWY_APP_GRAPH_MODEL_ID GWY_APP_GRAPH_MODEL_KEY GWY_APP_LAWN GWY_APP_LAWN_ID GWY_APP_LAWN_KEY GWY_APP_LOGGING_TO_CONSOLE GWY_APP_LOGGING_TO_FILE GWY_APP_MASK_FIELD GWY_APP_MASK_FIELD_KEY GWY_APP_PAGE GWY_APP_SETTINGS_ERROR_CFGDIR GWY_APP_SETTINGS_ERROR_CORRUPT GWY_APP_SETTINGS_ERROR_EMPTY GWY_APP_SETTINGS_ERROR_FILE GWY_APP_SHOW_FIELD GWY_APP_SHOW_FIELD_KEY GWY_APP_SPECTRA GWY_APP_SPECTRA_ID GWY_APP_SPECTRA_KEY GWY_APP_SURFACE GWY_APP_SURFACE_ID GWY_APP_SURFACE_KEY GWY_APP_VOLUME_VIEW GWY_APP_XYZ_VIEW GWY_AXIS_SCALE_FORMAT_AUTO GWY_AXIS_SCALE_FORMAT_EXP GWY_AXIS_SCALE_FORMAT_INT GWY_BRICK_TRANSPOSE_XYZ GWY_BRICK_TRANSPOSE_XZY GWY_BRICK_TRANSPOSE_YXZ GWY_BRICK_TRANSPOSE_YZX GWY_BRICK_TRANSPOSE_ZXY GWY_BRICK_TRANSPOSE_ZYX GWY_BYTE_ORDER_BIG_ENDIAN GWY_BYTE_ORDER_IMPLICIT GWY_BYTE_ORDER_LITTLE_ENDIAN GWY_BYTE_ORDER_NATIVE GWY_COMPUTATION_STATE_FINISHED GWY_COMPUTATION_STATE_INIT GWY_COMPUTATION_STATE_ITERATE GWY_CORRELATION_FFT GWY_CORRELATION_NORMAL GWY_CORRELATION_POC GWY_CORR_SEARCH_COVARIANCE GWY_CORR_SEARCH_COVARIANCE_RAW GWY_CORR_SEARCH_COVARIANCE_SCORE GWY_CORR_SEARCH_HEIGHT_DIFF GWY_CORR_SEARCH_HEIGHT_DIFF_RAW GWY_CORR_SEARCH_HEIGHT_DIFF_SCORE GWY_CORR_SEARCH_PHASE_ONLY_SCORE GWY_CURVE_CHANNEL_BLUE GWY_CURVE_CHANNEL_GREEN GWY_CURVE_CHANNEL_RED GWY_CURVE_TYPE_FREE GWY_CURVE_TYPE_LINEAR GWY_CURVE_TYPE_SPLINE GWY_DATA_COMPATIBILITY_ALL GWY_DATA_COMPATIBILITY_AXISCAL GWY_DATA_COMPATIBILITY_CURVELEN GWY_DATA_COMPATIBILITY_LATERAL GWY_DATA_COMPATIBILITY_MEASURE GWY_DATA_COMPATIBILITY_NCURVES GWY_DATA_COMPATIBILITY_REAL GWY_DATA_COMPATIBILITY_RES GWY_DATA_COMPATIBILITY_VALUE GWY_DATA_ERROR_ITEM_TYPE GWY_DATA_ERROR_KEY_CHARACTERS GWY_DATA_ERROR_KEY_FORMAT GWY_DATA_ERROR_KEY_ID GWY_DATA_ERROR_KEY_UNKNOWN GWY_DATA_ERROR_NON_UTF8_STRING GWY_DATA_ERROR_REF_COUNT GWY_DATA_ERROR_STRAY_SECONDARY_DATA GWY_DATA_FIELD_CACHE_ARE GWY_DATA_FIELD_CACHE_ARF GWY_DATA_FIELD_CACHE_ART GWY_DATA_FIELD_CACHE_ENT GWY_DATA_FIELD_CACHE_MAX GWY_DATA_FIELD_CACHE_MED GWY_DATA_FIELD_CACHE_MIN GWY_DATA_FIELD_CACHE_MSQ GWY_DATA_FIELD_CACHE_RMS GWY_DATA_FIELD_CACHE_SIZE GWY_DATA_FIELD_CACHE_SUM GWY_DATA_FIELD_CACHE_VAR GWY_DATA_ITEM_CALDATA GWY_DATA_ITEM_GRADIENT GWY_DATA_ITEM_MASK_COLOR GWY_DATA_ITEM_META GWY_DATA_ITEM_PALETTE GWY_DATA_ITEM_PREVIEW GWY_DATA_ITEM_RANGE GWY_DATA_ITEM_RANGE_TYPE GWY_DATA_ITEM_REAL_SQUARE GWY_DATA_ITEM_SELECTIONS GWY_DATA_ITEM_TITLE GWY_DATA_VALIDATE_ALL GWY_DATA_VALIDATE_CORRECT GWY_DATA_VALIDATE_NO_REPORT GWY_DATA_VALIDATE_REF_COUNT GWY_DATA_VALIDATE_UNKNOWN GWY_DATA_VIEW_LAYER_ALPHA GWY_DATA_VIEW_LAYER_BASE GWY_DATA_VIEW_LAYER_TOP GWY_DATA_WATCH_EVENT_ADDED GWY_DATA_WATCH_EVENT_CHANGED GWY_DATA_WATCH_EVENT_REMOVED GWY_DEBUG_OBJECTS_DUMP_ONLY_ALIVE GWY_DIALOG_CANCEL GWY_DIALOG_HAVE_RESULT GWY_DIALOG_PROCEED GWY_DIMS_BUTTON_TAKE GWY_DIMS_HEADER_CURRENT_IMAGE GWY_DIMS_HEADER_PHYSICAL GWY_DIMS_HEADER_PIXEL GWY_DIMS_HEADER_UNITS GWY_DIMS_PARAM_INITIALIZE GWY_DIMS_PARAM_REPLACE GWY_DIMS_PARAM_SQUARE_IMAGE GWY_DIMS_PARAM_SQUARE_PIXELS GWY_DIMS_PARAM_XREAL GWY_DIMS_PARAM_XRES GWY_DIMS_PARAM_XYUNIT GWY_DIMS_PARAM_YREAL GWY_DIMS_PARAM_YRES GWY_DIMS_PARAM_ZUNIT GWY_DISTANCE_TRANSFORM_CHESS GWY_DISTANCE_TRANSFORM_CITYBLOCK GWY_DISTANCE_TRANSFORM_CONN4 GWY_DISTANCE_TRANSFORM_CONN8 GWY_DISTANCE_TRANSFORM_EUCLIDEAN GWY_DISTANCE_TRANSFORM_OCTAGONAL GWY_DISTANCE_TRANSFORM_OCTAGONAL48 GWY_DISTANCE_TRANSFORM_OCTAGONAL84 GWY_DWT_DAUB12 GWY_DWT_DAUB20 GWY_DWT_DAUB4 GWY_DWT_DAUB6 GWY_DWT_DAUB8 GWY_DWT_DENOISE_SCALE_ADAPTIVE GWY_DWT_DENOISE_SPACE_ADAPTIVE GWY_DWT_DENOISE_UNIVERSAL GWY_DWT_HAAR GWY_EXPR_ERROR_CLOSING_PARENTHESIS GWY_EXPR_ERROR_CONSTANT_NAME GWY_EXPR_ERROR_EMPTY GWY_EXPR_ERROR_EMPTY_PARENTHESES GWY_EXPR_ERROR_GARBAGE GWY_EXPR_ERROR_INVALID_ARGUMENT GWY_EXPR_ERROR_INVALID_TOKEN GWY_EXPR_ERROR_MISSING_ARGUMENT GWY_EXPR_ERROR_NOT_EXECUTABLE GWY_EXPR_ERROR_OPENING_PARENTHESIS GWY_EXPR_ERROR_STRAY_COMMA GWY_EXPR_ERROR_UNRESOLVED_IDENTIFIERS GWY_EXTERIOR_BORDER_EXTEND GWY_EXTERIOR_FIXED_VALUE GWY_EXTERIOR_LAPLACE GWY_EXTERIOR_MIRROR_EXTEND GWY_EXTERIOR_PERIODIC GWY_EXTERIOR_UNDEFINED GWY_FILE_OPERATION_DETECT GWY_FILE_OPERATION_EXPORT GWY_FILE_OPERATION_LOAD GWY_FILE_OPERATION_MASK GWY_FILE_OPERATION_SAVE GWY_GRAIN_VALUE_BOUNDARY_MAXIMUM GWY_GRAIN_VALUE_BOUNDARY_MINIMUM GWY_GRAIN_VALUE_CENTER_X GWY_GRAIN_VALUE_CENTER_Y GWY_GRAIN_VALUE_CIRCUMCIRCLE_R GWY_GRAIN_VALUE_CIRCUMCIRCLE_X GWY_GRAIN_VALUE_CIRCUMCIRCLE_Y GWY_GRAIN_VALUE_CONVEX_HULL_AREA GWY_GRAIN_VALUE_CURVATURE1 GWY_GRAIN_VALUE_CURVATURE2 GWY_GRAIN_VALUE_CURVATURE_ANGLE1 GWY_GRAIN_VALUE_CURVATURE_ANGLE2 GWY_GRAIN_VALUE_CURVATURE_CENTER_X GWY_GRAIN_VALUE_CURVATURE_CENTER_Y GWY_GRAIN_VALUE_CURVATURE_CENTER_Z GWY_GRAIN_VALUE_EQUIV_DISC_RADIUS GWY_GRAIN_VALUE_EQUIV_ELLIPSE_ANGLE GWY_GRAIN_VALUE_EQUIV_ELLIPSE_MAJOR GWY_GRAIN_VALUE_EQUIV_ELLIPSE_MINOR GWY_GRAIN_VALUE_EQUIV_SQUARE_SIDE GWY_GRAIN_VALUE_FLAT_BOUNDARY_LENGTH GWY_GRAIN_VALUE_GROUP_AREA GWY_GRAIN_VALUE_GROUP_BOUNDARY GWY_GRAIN_VALUE_GROUP_CURVATURE GWY_GRAIN_VALUE_GROUP_ID GWY_GRAIN_VALUE_GROUP_MOMENT GWY_GRAIN_VALUE_GROUP_POSITION GWY_GRAIN_VALUE_GROUP_SLOPE GWY_GRAIN_VALUE_GROUP_USER GWY_GRAIN_VALUE_GROUP_VALUE GWY_GRAIN_VALUE_GROUP_VOLUME GWY_GRAIN_VALUE_HALF_HEIGHT_AREA GWY_GRAIN_VALUE_INSCRIBED_DISC_R GWY_GRAIN_VALUE_INSCRIBED_DISC_X GWY_GRAIN_VALUE_INSCRIBED_DISC_Y GWY_GRAIN_VALUE_IS_ANGLE GWY_GRAIN_VALUE_MAXIMUM GWY_GRAIN_VALUE_MAXIMUM_BOUND_ANGLE GWY_GRAIN_VALUE_MAXIMUM_BOUND_SIZE GWY_GRAIN_VALUE_MAXIMUM_MARTIN_ANGLE GWY_GRAIN_VALUE_MAXIMUM_MARTIN_DIAMETER GWY_GRAIN_VALUE_MEAN GWY_GRAIN_VALUE_MEAN_RADIUS GWY_GRAIN_VALUE_MEDIAN GWY_GRAIN_VALUE_MINIMUM GWY_GRAIN_VALUE_MINIMUM_BOUND_ANGLE GWY_GRAIN_VALUE_MINIMUM_BOUND_SIZE GWY_GRAIN_VALUE_MINIMUM_MARTIN_ANGLE GWY_GRAIN_VALUE_MINIMUM_MARTIN_DIAMETER GWY_GRAIN_VALUE_PIXEL_AREA GWY_GRAIN_VALUE_PROJECTED_AREA GWY_GRAIN_VALUE_RMS GWY_GRAIN_VALUE_SAME_UNITS GWY_GRAIN_VALUE_SLOPE_PHI GWY_GRAIN_VALUE_SLOPE_THETA GWY_GRAIN_VALUE_STORE_COLUMN_ENABLED GWY_GRAIN_VALUE_STORE_COLUMN_GROUP GWY_GRAIN_VALUE_STORE_COLUMN_ITEM GWY_GRAIN_VALUE_SURFACE_AREA GWY_GRAIN_VALUE_VOLUME_0 GWY_GRAIN_VALUE_VOLUME_LAPLACE GWY_GRAIN_VALUE_VOLUME_MIN GWY_GRAPH_CURVE_HIDDEN GWY_GRAPH_CURVE_LINE GWY_GRAPH_CURVE_LINE_POINTS GWY_GRAPH_CURVE_POINTS GWY_GRAPH_GRID_AUTO GWY_GRAPH_GRID_NONE GWY_GRAPH_GRID_USER GWY_GRAPH_LABEL_NORTHEAST GWY_GRAPH_LABEL_NORTHWEST GWY_GRAPH_LABEL_SOUTHEAST GWY_GRAPH_LABEL_SOUTHWEST GWY_GRAPH_LABEL_USER GWY_GRAPH_MODEL_EXPORT_ASCII_CSV GWY_GRAPH_MODEL_EXPORT_ASCII_GNUPLOT GWY_GRAPH_MODEL_EXPORT_ASCII_IGORPRO GWY_GRAPH_MODEL_EXPORT_ASCII_MERGED GWY_GRAPH_MODEL_EXPORT_ASCII_ORIGIN GWY_GRAPH_MODEL_EXPORT_ASCII_PLAIN GWY_GRAPH_MODEL_EXPORT_ASCII_POSIX GWY_GRAPH_POINT_ASTERISK GWY_GRAPH_POINT_CIRCLE GWY_GRAPH_POINT_CROSS GWY_GRAPH_POINT_DIAMOND GWY_GRAPH_POINT_DISC GWY_GRAPH_POINT_FILLED_CIRCLE GWY_GRAPH_POINT_FILLED_DIAMOND GWY_GRAPH_POINT_FILLED_SQUARE GWY_GRAPH_POINT_FILLED_TRIANGLE_DOWN GWY_GRAPH_POINT_FILLED_TRIANGLE_LEFT GWY_GRAPH_POINT_FILLED_TRIANGLE_RIGHT GWY_GRAPH_POINT_FILLED_TRIANGLE_UP GWY_GRAPH_POINT_SQUARE GWY_GRAPH_POINT_STAR GWY_GRAPH_POINT_TIMES GWY_GRAPH_POINT_TRIANGLE_DOWN GWY_GRAPH_POINT_TRIANGLE_LEFT GWY_GRAPH_POINT_TRIANGLE_RIGHT GWY_GRAPH_POINT_TRIANGLE_UP GWY_GRAPH_STATUS_PLAIN GWY_GRAPH_STATUS_POINTS GWY_GRAPH_STATUS_XLINES GWY_GRAPH_STATUS_XSEL GWY_GRAPH_STATUS_YLINES GWY_GRAPH_STATUS_YSEL GWY_GRAPH_STATUS_ZOOM GWY_HELP_DEFAULT GWY_HELP_NO_BUTTON GWY_HOLD_SELECTION_CLEAR GWY_HOLD_SELECTION_HOLD GWY_HOLD_SELECTION_OVERWRITE GWY_HSCALE_CHECK GWY_HSCALE_DEFAULT GWY_HSCALE_LINEAR GWY_HSCALE_LOG GWY_HSCALE_NO_SCALE GWY_HSCALE_SNAP GWY_HSCALE_SQRT GWY_HSCALE_WIDGET GWY_HSCALE_WIDGET_NO_EXPAND GWY_INTERPOLATION_BILINEAR GWY_INTERPOLATION_BSPLINE GWY_INTERPOLATION_KEY GWY_INTERPOLATION_LINEAR GWY_INTERPOLATION_NNA GWY_INTERPOLATION_NONE GWY_INTERPOLATION_OMOMS GWY_INTERPOLATION_ROUND GWY_INTERPOLATION_SCHAUM GWY_LAYER_BASIC_RANGE_ADAPT GWY_LAYER_BASIC_RANGE_AUTO GWY_LAYER_BASIC_RANGE_FIXED GWY_LAYER_BASIC_RANGE_FULL GWY_LINE_STAT_KURTOSIS GWY_LINE_STAT_LENGTH GWY_LINE_STAT_MAXIMUM GWY_LINE_STAT_MAXPOS GWY_LINE_STAT_MEAN GWY_LINE_STAT_MEDIAN GWY_LINE_STAT_MINIMUM GWY_LINE_STAT_MINPOS GWY_LINE_STAT_RA GWY_LINE_STAT_RANGE GWY_LINE_STAT_RMS GWY_LINE_STAT_RT GWY_LINE_STAT_RZ GWY_LINE_STAT_SKEW GWY_LINE_STAT_SLOPE GWY_LINE_STAT_TAN_BETA0 GWY_LINE_STAT_VARIATION GWY_MARKER_OPERATION_ADD GWY_MARKER_OPERATION_MOVE GWY_MARKER_OPERATION_REMOVE GWY_MASK_EXCLUDE GWY_MASK_IGNORE GWY_MASK_INCLUDE GWY_MENU_FLAG_3D GWY_MENU_FLAG_CURVE_MAP GWY_MENU_FLAG_DATA GWY_MENU_FLAG_DATA_MASK GWY_MENU_FLAG_DATA_SHOW GWY_MENU_FLAG_FILE GWY_MENU_FLAG_GRAPH GWY_MENU_FLAG_GRAPH_CURVE GWY_MENU_FLAG_LAST_GRAPH GWY_MENU_FLAG_LAST_PROC GWY_MENU_FLAG_MASK GWY_MENU_FLAG_REDO GWY_MENU_FLAG_UNDO GWY_MENU_FLAG_VOLUME GWY_MENU_FLAG_XYZ GWY_MERGE_INTERSECTION GWY_MERGE_UNION GWY_MFM_COMPONENT_D2HZ_DZ2 GWY_MFM_COMPONENT_DHZ_DZ GWY_MFM_COMPONENT_HX GWY_MFM_COMPONENT_HY GWY_MFM_COMPONENT_HZ GWY_MFM_GRADIENT_FORCE GWY_MFM_GRADIENT_MFM GWY_MFM_GRADIENT_MFM_AREA GWY_MFM_PROBE_BAR GWY_MFM_PROBE_CHARGE GWY_MIN_MAX_FILTER_CLOSING GWY_MIN_MAX_FILTER_DILATION GWY_MIN_MAX_FILTER_EROSION GWY_MIN_MAX_FILTER_MAXIMUM GWY_MIN_MAX_FILTER_MINIMUM GWY_MIN_MAX_FILTER_NORMALIZATION GWY_MIN_MAX_FILTER_OPENING GWY_MIN_MAX_FILTER_RANGE GWY_MODULE_ERROR_ABI GWY_MODULE_ERROR_DUPLICATE GWY_MODULE_ERROR_INFO GWY_MODULE_ERROR_NAME GWY_MODULE_ERROR_NESTING GWY_MODULE_ERROR_OPEN GWY_MODULE_ERROR_QUERY GWY_MODULE_ERROR_REGISTER GWY_MODULE_FILE_ERROR_CANCELED GWY_MODULE_FILE_ERROR_CANCELLED GWY_MODULE_FILE_ERROR_DATA GWY_MODULE_FILE_ERROR_INTERACTIVE GWY_MODULE_FILE_ERROR_IO GWY_MODULE_FILE_ERROR_SPECIFIC GWY_MODULE_FILE_ERROR_UNIMPLEMENTED GWY_NLFIT_PARAM_ABSVAL GWY_NLFIT_PARAM_ANGLE GWY_ORIENTATION_HORIZONTAL GWY_ORIENTATION_VERTICAL GWY_PAGE_CHANNELS GWY_PAGE_CURVE_MAPS GWY_PAGE_GRAPHS GWY_PAGE_NOPAGE GWY_PAGE_SPECTRA GWY_PAGE_VOLUMES GWY_PAGE_XYZS GWY_PARAM_STRING_DO_NOT_STRIP GWY_PARAM_STRING_EMPTY_IS_NULL GWY_PARAM_STRING_NULL_IS_EMPTY GWY_PEAK_ABSCISSA GWY_PEAK_AREA GWY_PEAK_BACKGROUND_MMSTEP GWY_PEAK_BACKGROUND_ZERO GWY_PEAK_HEIGHT GWY_PEAK_ORDER_ABSCISSA GWY_PEAK_ORDER_PROMINENCE GWY_PEAK_PROMINENCE GWY_PEAK_WIDTH GWY_PERCENTILE_INTERPOLATION_HIGHER GWY_PERCENTILE_INTERPOLATION_LINEAR GWY_PERCENTILE_INTERPOLATION_LOWER GWY_PERCENTILE_INTERPOLATION_MIDPOINT GWY_PERCENTILE_INTERPOLATION_NEAREST GWY_PLAIN_TOOL_CHANGED_DATA GWY_PLAIN_TOOL_CHANGED_MASK GWY_PLAIN_TOOL_CHANGED_SELECTION GWY_PLAIN_TOOL_CHANGED_SHOW GWY_PLAIN_TOOL_FINISHED_SELECTION GWY_PLANE_FIT_A GWY_PLANE_FIT_ANGLE GWY_PLANE_FIT_BX GWY_PLANE_FIT_BY GWY_PLANE_FIT_S0 GWY_PLANE_FIT_S0_REDUCED GWY_PLANE_FIT_SLOPE GWY_PREVIEW_IMMEDIATE GWY_PREVIEW_NONE GWY_PREVIEW_SURFACE_DENSITY GWY_PREVIEW_SURFACE_FILL GWY_PREVIEW_UPON_REQUEST GWY_RAW_DATA_DOUBLE GWY_RAW_DATA_FLOAT GWY_RAW_DATA_HALF GWY_RAW_DATA_REAL GWY_RAW_DATA_SINT16 GWY_RAW_DATA_SINT32 GWY_RAW_DATA_SINT64 GWY_RAW_DATA_SINT8 GWY_RAW_DATA_UINT16 GWY_RAW_DATA_UINT32 GWY_RAW_DATA_UINT64 GWY_RAW_DATA_UINT8 GWY_RENDERING_TARGET_PIXMAP_IMAGE GWY_RENDERING_TARGET_SCREEN GWY_RESPONSE_CLEAR GWY_RESPONSE_RESET GWY_RESPONSE_SYNTH_INIT_Z GWY_RESPONSE_SYNTH_TAKE_DIMS GWY_RESPONSE_UPDATE GWY_RESULTS_EXPORT_FIXED_FORMAT GWY_RESULTS_EXPORT_PARAMETERS GWY_RESULTS_EXPORT_TABULAR_DATA GWY_RESULTS_REPORT_COLON GWY_RESULTS_REPORT_CSV GWY_RESULTS_REPORT_MACHINE GWY_RESULTS_REPORT_TABSEP GWY_RESULTS_VALUE_FLOAT GWY_RESULTS_VALUE_INT GWY_RESULTS_VALUE_STRING GWY_RESULTS_VALUE_YESNO GWY_ROTATE_RESIZE_CUT GWY_ROTATE_RESIZE_EXPAND GWY_ROTATE_RESIZE_SAME_SIZE GWY_RUN_IMMEDIATE GWY_RUN_INTERACTIVE GWY_RUN_MASK GWY_RUN_NONE GWY_RUN_NONINTERACTIVE GWY_SCALE_MAPPING_LINEAR GWY_SCALE_MAPPING_LOG GWY_SCALE_MAPPING_LOG1P GWY_SCALE_MAPPING_SQRT GWY_SI_UNIT_FORMAT_MARKUP GWY_SI_UNIT_FORMAT_NONE GWY_SI_UNIT_FORMAT_PLAIN GWY_SI_UNIT_FORMAT_TEX GWY_SI_UNIT_FORMAT_UNICODE GWY_SI_UNIT_FORMAT_VFMARKUP GWY_SI_UNIT_FORMAT_VFTEX GWY_SI_UNIT_FORMAT_VFUNICODE GWY_SYMMETRY_AUTO GWY_SYMMETRY_HEXAGONAL GWY_SYMMETRY_LAST GWY_SYMMETRY_PARALLEL GWY_SYMMETRY_RHOMBIC GWY_SYMMETRY_SQUARE GWY_SYMMETRY_TRIANGULAR GWY_SYNTH_FIXED_UNITS GWY_SYNTH_FIXED_XYUNIT GWY_SYNTH_FIXED_ZUNIT GWY_SYNTH_NO_INITIALIZE GWY_SYNTH_UPDATE_CANCELLED GWY_SYNTH_UPDATE_DO_PREVIEW GWY_SYNTH_UPDATE_NOTHING GWY_TEXT_HEADER_ERROR_GARBAGE GWY_TEXT_HEADER_ERROR_KEY GWY_TEXT_HEADER_ERROR_PREFIX GWY_TEXT_HEADER_ERROR_SECTION_END GWY_TEXT_HEADER_ERROR_SECTION_NAME GWY_TEXT_HEADER_ERROR_SECTION_START GWY_TEXT_HEADER_ERROR_TERMINATOR GWY_TEXT_HEADER_ERROR_VALUE GWY_TICKS_STYLE_AUTO GWY_TICKS_STYLE_CENTER GWY_TICKS_STYLE_NONE GWY_TICKS_STYLE_UNLABELED GWY_TICKS_STYLE_UNLABELLED GWY_TIP_BALL_ON_STICK GWY_TIP_CONE GWY_TIP_CONTACT GWY_TIP_DELTA GWY_TIP_ELLPARABOLA GWY_TIP_NONCONTACT GWY_TIP_PARABOLA GWY_TIP_PARAM_ANISOTROPY GWY_TIP_PARAM_HEIGHT GWY_TIP_PARAM_NSIDES GWY_TIP_PARAM_RADIUS GWY_TIP_PARAM_ROTATION GWY_TIP_PARAM_SLOPE GWY_TIP_PYRAMID GWY_TIP_PYRAMIDE GWY_TOOL_RESPONSE_CLEAR GWY_TOOL_RESPONSE_UPDATE GWY_TRANSFORM_DIRECTION_BACKWARD GWY_TRANSFORM_DIRECTION_FORWARD GWY_UNITS_PLACEMENT_AT_ZERO GWY_UNITS_PLACEMENT_NONE GWY_VISIBILITY_RESET_DEFAULT GWY_VISIBILITY_RESET_HIDE_ALL GWY_VISIBILITY_RESET_RESTORE GWY_VISIBILITY_RESET_SHOW_ALL GWY_WATERSHED_STATE_FINISHED GWY_WATERSHED_STATE_INIT GWY_WATERSHED_STATE_LOCATE GWY_WATERSHED_STATE_MARK GWY_WATERSHED_STATE_MIN GWY_WATERSHED_STATE_WATERSHED GWY_WINDOWING_BLACKMANN GWY_WINDOWING_FLAT_TOP GWY_WINDOWING_HAMMING GWY_WINDOWING_HANN GWY_WINDOWING_KAISER25 GWY_WINDOWING_LANCZOS GWY_WINDOWING_NONE GWY_WINDOWING_NUTTALL GWY_WINDOWING_RECT GWY_WINDOWING_WELCH +syn keyword gwyddionStruct Gwy3DLabel Gwy3DLabelClass Gwy3DSetup Gwy3DSetupClass Gwy3DView Gwy3DViewClass Gwy3DWindow Gwy3DWindowClass GwyAdjustBar GwyAdjustBarClass GwyAppDataId GwyAxis GwyAxisClass GwyAxisParams GwyBrick GwyBrickClass GwyBrickPart GwyCDLine GwyCDLineBuiltin GwyCDLineClass GwyCalData GwyCalDataClass GwyCalibration GwyCalibrationClass GwyChannelData GwyColorAxis GwyColorAxisClass GwyColorButton GwyColorButtonClass GwyComputationState GwyContainer GwyContainerClass GwyCurve GwyCurveCalibrationData GwyCurveClass GwyDataChooser GwyDataChooserClass GwyDataField GwyDataFieldClass GwyDataLine GwyDataLineClass GwyDataValidationFailure GwyDataView GwyDataViewClass GwyDataViewLayer GwyDataViewLayerClass GwyDataWindow GwyDataWindowClass GwyDialog GwyDialogClass GwyEnum GwyExpr GwyFDCurvePreset GwyFDCurvePresetBuiltin GwyFDCurvePresetClass GwyFileDetectInfo GwyFunctionUse GwyGLMaterial GwyGLMaterialClass GwyGradient GwyGradientClass GwyGradientPoint GwyGrainValue GwyGrainValueClass GwyGrainValueData GwyGraph GwyGraphActiveAreaSpecs GwyGraphArea GwyGraphAreaClass GwyGraphClass GwyGraphCorner GwyGraphCornerClass GwyGraphCurveModel GwyGraphCurveModelClass GwyGraphCurves GwyGraphCurvesClass GwyGraphData GwyGraphDataClass GwyGraphLabel GwyGraphLabelClass GwyGraphModel GwyGraphModelClass GwyGraphWindow GwyGraphWindowClass GwyHMarkerBox GwyHMarkerBoxClass GwyHRuler GwyHRulerClass GwyInventory GwyInventoryClass GwyInventoryItemType GwyInventoryStore GwyInventoryStoreClass GwyLawn GwyLawnClass GwyLayerBasic GwyLayerBasicClass GwyLayerMask GwyLayerMaskClass GwyMarkerBox GwyMarkerBoxClass GwyModuleFailureInfo GwyModuleInfo GwyModuleRecord GwyNLFitPreset GwyNLFitPresetBuiltin GwyNLFitPresetClass GwyNLFitter GwyNullStore GwyNullStoreClass GwyParamDef GwyParamDefClass GwyParamResource GwyParamResourceClass GwyParamTable GwyParamTableClass GwyParams GwyParamsClass GwyPeaks GwyPixmapLayer GwyPixmapLayerClass GwyPlainTool GwyPlainToolClass GwyRGBA GwyRandGenSet GwyRectSelectionLabels GwyResource GwyResourceClass GwyResourceEditor GwyResourceEditorClass GwyResults GwyResultsClass GwyResultsExport GwyResultsExportClass GwyRuler GwyRulerClass GwySIUnit GwySIUnitClass GwySIValueFormat GwySciText GwySciTextClass GwySelection GwySelectionClass GwySelectionGraph1DArea GwySelectionGraph1DAreaClass GwySelectionGraphArea GwySelectionGraphAreaClass GwySelectionGraphLine GwySelectionGraphLineClass GwySelectionGraphPoint GwySelectionGraphPointClass GwySelectionGraphZoom GwySelectionGraphZoomClass GwySensitivityGroup GwySensitivityGroupClass GwySerializable GwySerializableIface GwySerializeItem GwySerializeSpec GwyShader GwyShaderClass GwyShapeFitPreset GwyShapeFitPresetClass GwySpectra GwySpectraClass GwySpline GwyStatusbar GwyStatusbarClass GwyStringList GwyStringListClass GwySurface GwySurfaceClass GwyTextEntity GwyTextHeaderContext GwyTextHeaderParser GwyTool GwyToolClass GwyToolHeldSelection GwyTriangulation GwyTriangulationClass GwyTriangulationData GwyVRuler GwyVRulerClass GwyVectorLayer GwyVectorLayerClass GwyXY GwyXYZ syn keyword gwyddionUnion GwySerializeValue syn keyword gwyddionMacro GWY_3D_LABEL GWY_3D_LABEL_CLASS GWY_3D_LABEL_GET_CLASS GWY_3D_SETUP GWY_3D_SETUP_CLASS GWY_3D_SETUP_GET_CLASS GWY_3D_VIEW GWY_3D_VIEW_CLASS GWY_3D_VIEW_GET_CLASS GWY_3D_WINDOW GWY_3D_WINDOW_CLASS GWY_3D_WINDOW_GET_CLASS GWY_ADJUST_BAR GWY_ADJUST_BAR_CLASS GWY_ADJUST_BAR_GET_CLASS GWY_AXIS GWY_AXIS_CLASS GWY_AXIS_GET_CLASS GWY_BRICK GWY_BRICK_CLASS GWY_BRICK_GET_CLASS GWY_CALDATA GWY_CALDATA_CLASS GWY_CALDATA_GET_CLASS GWY_CALIBRATION GWY_CALIBRATION_CLASS GWY_CALIBRATION_GET_CLASS GWY_CDLINE GWY_CDLINE_CLASS GWY_CDLINE_GET_CLASS GWY_CLAMP GWY_COLOR_AXIS GWY_COLOR_AXIS_CLASS GWY_COLOR_AXIS_GET_CLASS GWY_COLOR_BUTTON GWY_COLOR_BUTTON_CLASS GWY_COLOR_BUTTON_GET_CLASS GWY_CONTAINER GWY_CONTAINER_CLASS GWY_CONTAINER_GET_CLASS GWY_CURVE GWY_CURVE_CLASS GWY_CURVE_GET_CLASS GWY_DATA_CHOOSER GWY_DATA_CHOOSER_CLASS GWY_DATA_CHOOSER_GET_CLASS GWY_DATA_FIELD GWY_DATA_FIELD_CLASS GWY_DATA_FIELD_GET_CLASS GWY_DATA_LINE GWY_DATA_LINE_CLASS GWY_DATA_LINE_GET_CLASS GWY_DATA_VIEW GWY_DATA_VIEW_CLASS GWY_DATA_VIEW_GET_CLASS GWY_DATA_VIEW_LAYER GWY_DATA_VIEW_LAYER_CLASS GWY_DATA_VIEW_LAYER_GET_CLASS GWY_DATA_WINDOW GWY_DATA_WINDOW_CLASS GWY_DATA_WINDOW_GET_CLASS GWY_DIALOG GWY_DIALOG_CLASS GWY_DIALOG_GET_CLASS GWY_FD_CURVE_PRESET GWY_FD_CURVE_PRESET_CLASS GWY_FD_CURVE_PRESET_GET_CLASS GWY_FIND_PSPEC GWY_FREE GWY_GL_MATERIAL GWY_GL_MATERIAL_CLASS GWY_GL_MATERIAL_GET_CLASS GWY_GRADIENT GWY_GRADIENT_CLASS GWY_GRADIENT_GET_CLASS GWY_GRAIN_VALUE GWY_GRAIN_VALUE_CLASS GWY_GRAIN_VALUE_GET_CLASS GWY_GRAPH GWY_GRAPH_AREA GWY_GRAPH_AREA_CLASS GWY_GRAPH_AREA_GET_CLASS GWY_GRAPH_CLASS GWY_GRAPH_CORNER GWY_GRAPH_CORNER_CLASS GWY_GRAPH_CORNER_GET_CLASS GWY_GRAPH_CURVES GWY_GRAPH_CURVES_CLASS GWY_GRAPH_CURVES_GET_CLASS GWY_GRAPH_CURVE_MODEL GWY_GRAPH_CURVE_MODEL_CLASS GWY_GRAPH_CURVE_MODEL_GET_CLASS GWY_GRAPH_DATA GWY_GRAPH_DATA_CLASS GWY_GRAPH_DATA_GET_CLASS GWY_GRAPH_GET_CLASS GWY_GRAPH_LABEL GWY_GRAPH_LABEL_CLASS GWY_GRAPH_LABEL_GET_CLASS GWY_GRAPH_MODEL GWY_GRAPH_MODEL_CLASS GWY_GRAPH_MODEL_GET_CLASS GWY_GRAPH_WINDOW GWY_GRAPH_WINDOW_CLASS GWY_GRAPH_WINDOW_GET_CLASS GWY_HMARKER_BOX GWY_HMARKER_BOX_CLASS GWY_HMARKER_BOX_GET_CLASS GWY_HRULER GWY_HRULER_CLASS GWY_HRULER_GET_CLASS GWY_IMPLEMENT_SERIALIZABLE GWY_INVENTORY GWY_INVENTORY_CLASS GWY_INVENTORY_GET_CLASS GWY_INVENTORY_STORE GWY_INVENTORY_STORE_CLASS GWY_INVENTORY_STORE_GET_CLASS GWY_IS_3D_LABEL GWY_IS_3D_LABEL_CLASS GWY_IS_3D_SETUP GWY_IS_3D_SETUP_CLASS GWY_IS_3D_VIEW GWY_IS_3D_VIEW_CLASS GWY_IS_3D_WINDOW GWY_IS_3D_WINDOW_CLASS GWY_IS_ADJUST_BAR GWY_IS_ADJUST_BAR_CLASS GWY_IS_AXIS GWY_IS_AXIS_CLASS GWY_IS_BRICK GWY_IS_BRICK_CLASS GWY_IS_CALDATA GWY_IS_CALDATA_CLASS GWY_IS_CALIBRATION GWY_IS_CALIBRATION_CLASS GWY_IS_CDLINE GWY_IS_CDLINE_CLASS GWY_IS_COLOR_AXIS GWY_IS_COLOR_AXIS_CLASS GWY_IS_COLOR_BUTTON GWY_IS_COLOR_BUTTON_CLASS GWY_IS_CONTAINER GWY_IS_CONTAINER_CLASS GWY_IS_CURVE GWY_IS_CURVE_CLASS GWY_IS_DATA_CHOOSER GWY_IS_DATA_CHOOSER_CLASS GWY_IS_DATA_FIELD GWY_IS_DATA_FIELD_CLASS GWY_IS_DATA_LINE GWY_IS_DATA_LINE_CLASS GWY_IS_DATA_VIEW GWY_IS_DATA_VIEW_CLASS GWY_IS_DATA_VIEW_LAYER GWY_IS_DATA_VIEW_LAYER_CLASS GWY_IS_DATA_WINDOW GWY_IS_DATA_WINDOW_CLASS GWY_IS_DIALOG GWY_IS_DIALOG_CLASS GWY_IS_FD_CURVE_PRESET GWY_IS_FD_CURVE_PRESET_CLASS GWY_IS_GL_MATERIAL GWY_IS_GL_MATERIAL_CLASS GWY_IS_GRADIENT GWY_IS_GRADIENT_CLASS GWY_IS_GRAIN_VALUE GWY_IS_GRAIN_VALUE_CLASS GWY_IS_GRAPH GWY_IS_GRAPH_AREA GWY_IS_GRAPH_AREA_CLASS GWY_IS_GRAPH_CLASS GWY_IS_GRAPH_CORNER GWY_IS_GRAPH_CORNER_CLASS GWY_IS_GRAPH_CURVES GWY_IS_GRAPH_CURVES_CLASS GWY_IS_GRAPH_CURVE_MODEL GWY_IS_GRAPH_CURVE_MODEL_CLASS GWY_IS_GRAPH_DATA GWY_IS_GRAPH_DATA_CLASS GWY_IS_GRAPH_LABEL GWY_IS_GRAPH_LABEL_CLASS GWY_IS_GRAPH_MODEL GWY_IS_GRAPH_MODEL_CLASS GWY_IS_GRAPH_WINDOW GWY_IS_GRAPH_WINDOW_CLASS GWY_IS_HMARKER_BOX GWY_IS_HMARKER_BOX_CLASS GWY_IS_HRULER GWY_IS_HRULER_CLASS GWY_IS_INVENTORY GWY_IS_INVENTORY_CLASS GWY_IS_INVENTORY_STORE GWY_IS_INVENTORY_STORE_CLASS GWY_IS_LAWN GWY_IS_LAWN_CLASS GWY_IS_LAYER_BASIC GWY_IS_LAYER_BASIC_CLASS GWY_IS_LAYER_MASK GWY_IS_LAYER_MASK_CLASS GWY_IS_MARKER_BOX GWY_IS_MARKER_BOX_CLASS GWY_IS_NLFIT_PRESET GWY_IS_NLFIT_PRESET_CLASS GWY_IS_NULL_STORE GWY_IS_NULL_STORE_CLASS GWY_IS_PARAMS GWY_IS_PARAMS_CLASS GWY_IS_PARAM_DEF GWY_IS_PARAM_DEF_CLASS GWY_IS_PARAM_RESOURCE GWY_IS_PARAM_RESOURCE_CLASS GWY_IS_PARAM_TABLE GWY_IS_PARAM_TABLE_CLASS GWY_IS_PIXMAP_LAYER GWY_IS_PIXMAP_LAYER_CLASS GWY_IS_PLAIN_TOOL GWY_IS_PLAIN_TOOL_CLASS GWY_IS_RESOURCE GWY_IS_RESOURCE_CLASS GWY_IS_RESOURCE_EDITOR GWY_IS_RESOURCE_EDITOR_CLASS GWY_IS_RESULTS GWY_IS_RESULTS_CLASS GWY_IS_RESULTS_EXPORT GWY_IS_RESULTS_EXPORT_CLASS GWY_IS_RULER GWY_IS_RULER_CLASS GWY_IS_SCI_TEXT GWY_IS_SCI_TEXT_CLASS GWY_IS_SELECTION GWY_IS_SELECTION_CLASS GWY_IS_SELECTION_GRAPH_1DAREA GWY_IS_SELECTION_GRAPH_1DAREA_CLASS GWY_IS_SELECTION_GRAPH_AREA GWY_IS_SELECTION_GRAPH_AREA_CLASS GWY_IS_SELECTION_GRAPH_LINE GWY_IS_SELECTION_GRAPH_LINE_CLASS GWY_IS_SELECTION_GRAPH_POINT GWY_IS_SELECTION_GRAPH_POINT_CLASS GWY_IS_SELECTION_GRAPH_ZOOM GWY_IS_SELECTION_GRAPH_ZOOM_CLASS GWY_IS_SENSITIVITY_GROUP GWY_IS_SENSITIVITY_GROUP_CLASS GWY_IS_SERIALIZABLE GWY_IS_SHADER GWY_IS_SHADER_CLASS GWY_IS_SHAPE_FIT_PRESET GWY_IS_SHAPE_FIT_PRESET_CLASS GWY_IS_SI_UNIT GWY_IS_SI_UNIT_CLASS GWY_IS_SPECTRA GWY_IS_SPECTRA_CLASS GWY_IS_STATUSBAR GWY_IS_STATUSBAR_CLASS GWY_IS_STRING_LIST GWY_IS_STRING_LIST_CLASS GWY_IS_SURFACE GWY_IS_SURFACE_CLASS GWY_IS_TOOL GWY_IS_TOOL_CLASS GWY_IS_TRIANGULATION GWY_IS_TRIANGULATION_CLASS GWY_IS_VECTOR_LAYER GWY_IS_VECTOR_LAYER_CLASS GWY_IS_VRULER GWY_IS_VRULER_CLASS GWY_LAWN GWY_LAWN_CLASS GWY_LAWN_GET_CLASS GWY_LAYER_BASIC GWY_LAYER_BASIC_CLASS GWY_LAYER_BASIC_GET_CLASS GWY_LAYER_MASK GWY_LAYER_MASK_CLASS GWY_LAYER_MASK_GET_CLASS GWY_MARKER_BOX GWY_MARKER_BOX_CLASS GWY_MARKER_BOX_GET_CLASS GWY_MODULE_QUERY GWY_MODULE_QUERY2 GWY_NLFIT_PRESET GWY_NLFIT_PRESET_CLASS GWY_NLFIT_PRESET_GET_CLASS GWY_NULL_STORE GWY_NULL_STORE_CLASS GWY_NULL_STORE_GET_CLASS GWY_OBJECT_UNREF GWY_ORDER GWY_PARAMS GWY_PARAMS_CLASS GWY_PARAMS_GET_CLASS GWY_PARAM_DEF GWY_PARAM_DEF_CLASS GWY_PARAM_DEF_GET_CLASS GWY_PARAM_RESOURCE GWY_PARAM_RESOURCE_CLASS GWY_PARAM_RESOURCE_GET_CLASS GWY_PARAM_TABLE GWY_PARAM_TABLE_CLASS GWY_PARAM_TABLE_GET_CLASS GWY_PIXMAP_LAYER GWY_PIXMAP_LAYER_CLASS GWY_PIXMAP_LAYER_GET_CLASS GWY_PLAIN_TOOL GWY_PLAIN_TOOL_CLASS GWY_PLAIN_TOOL_GET_CLASS GWY_RESOURCE GWY_RESOURCE_CLASS GWY_RESOURCE_EDITOR GWY_RESOURCE_EDITOR_CLASS GWY_RESOURCE_EDITOR_GET_CLASS GWY_RESOURCE_GET_CLASS GWY_RESULTS GWY_RESULTS_CLASS GWY_RESULTS_EXPORT GWY_RESULTS_EXPORT_CLASS GWY_RESULTS_EXPORT_GET_CLASS GWY_RESULTS_GET_CLASS GWY_ROUND GWY_RULER GWY_RULER_CLASS GWY_RULER_GET_CLASS GWY_SCI_TEXT GWY_SCI_TEXT_CLASS GWY_SCI_TEXT_GET_CLASS GWY_SELECTION GWY_SELECTION_CLASS GWY_SELECTION_GET_CLASS GWY_SELECTION_GRAPH_1DAREA GWY_SELECTION_GRAPH_1DAREA_CLASS GWY_SELECTION_GRAPH_1DAREA_GET_CLASS GWY_SELECTION_GRAPH_AREA GWY_SELECTION_GRAPH_AREA_CLASS GWY_SELECTION_GRAPH_AREA_GET_CLASS GWY_SELECTION_GRAPH_LINE GWY_SELECTION_GRAPH_LINE_CLASS GWY_SELECTION_GRAPH_LINE_GET_CLASS GWY_SELECTION_GRAPH_POINT GWY_SELECTION_GRAPH_POINT_CLASS GWY_SELECTION_GRAPH_POINT_GET_CLASS GWY_SELECTION_GRAPH_ZOOM GWY_SELECTION_GRAPH_ZOOM_CLASS GWY_SELECTION_GRAPH_ZOOM_GET_CLASS GWY_SENSITIVITY_GROUP GWY_SENSITIVITY_GROUP_CLASS GWY_SENSITIVITY_GROUP_GET_CLASS GWY_SERIALIZABLE GWY_SERIALIZABLE_GET_IFACE GWY_SHADER GWY_SHADER_CLASS GWY_SHADER_GET_CLASS GWY_SHAPE_FIT_PRESET GWY_SHAPE_FIT_PRESET_CLASS GWY_SHAPE_FIT_PRESET_GET_CLASS GWY_SIGNAL_HANDLER_DISCONNECT GWY_SI_UNIT GWY_SI_UNIT_CLASS GWY_SI_UNIT_GET_CLASS GWY_SI_VALUE_FORMAT_FREE GWY_SPECTRA GWY_SPECTRA_CLASS GWY_SPECTRA_GET_CLASS GWY_STATUSBAR GWY_STATUSBAR_CLASS GWY_STATUSBAR_GET_CLASS GWY_STRING_LIST GWY_STRING_LIST_CLASS GWY_STRING_LIST_GET_CLASS GWY_SURFACE GWY_SURFACE_CLASS GWY_SURFACE_GET_CLASS GWY_SWAP GWY_TOOL GWY_TOOL_CLASS GWY_TOOL_GET_CLASS GWY_TRIANGULATION GWY_TRIANGULATION_CLASS GWY_TRIANGULATION_GET_CLASS GWY_VECTOR_LAYER GWY_VECTOR_LAYER_CLASS GWY_VECTOR_LAYER_GET_CLASS GWY_VRULER GWY_VRULER_CLASS GWY_VRULER_GET_CLASS N_ acosh asinh atanh cbrt gettext gwy_adjustment_get_int gwy_assign gwy_brick_assign gwy_brick_duplicate gwy_caldata_duplicate gwy_clear gwy_container_contains_by_name gwy_container_duplicate gwy_container_get_boolean_by_name gwy_container_get_double_by_name gwy_container_get_enum_by_name gwy_container_get_int32_by_name gwy_container_get_int64_by_name gwy_container_get_object_by_name gwy_container_get_string_by_name gwy_container_get_uchar_by_name gwy_container_get_value_by_name gwy_container_gis_boolean_by_name gwy_container_gis_double_by_name gwy_container_gis_enum_by_name gwy_container_gis_int32_by_name gwy_container_gis_int64_by_name gwy_container_gis_object_by_name gwy_container_gis_string_by_name gwy_container_gis_uchar_by_name gwy_container_gis_value_by_name gwy_container_remove_by_name gwy_container_rename_by_name gwy_container_set_boolean_by_name gwy_container_set_const_string_by_name gwy_container_set_double_by_name gwy_container_set_enum_by_name gwy_container_set_int32_by_name gwy_container_set_int64_by_name gwy_container_set_object_by_name gwy_container_set_string_by_name gwy_container_set_uchar_by_name gwy_container_value_type_by_name gwy_data_field_assign gwy_data_field_duplicate gwy_data_field_get_xmeasure gwy_data_field_get_ymeasure gwy_data_line_assign gwy_data_line_duplicate gwy_debug gwy_debug_objects_creation gwy_graph_curve_model_duplicate gwy_graph_model_duplicate gwy_info gwy_lawn_assign gwy_lawn_duplicate gwy_object_unref gwy_powi gwy_selection_assign gwy_selection_duplicate gwy_si_unit_assign gwy_si_unit_duplicate gwy_signal_handler_disconnect gwy_spectra_duplicate gwy_strequal gwy_string_list_duplicate gwy_surface_assign gwy_surface_duplicate gwy_vector_layer_get_selection_type hypot ngettext -syn keyword gwyddionEnum Gwy2DCWTWaveletType Gwy3DMovement Gwy3DProjection Gwy3DViewLabel Gwy3DVisualization GwyAffineScalingType GwyAppLoggingFlags GwyAppPage GwyAppSettingsError GwyAppWhat GwyAxisScaleFormat GwyBrickTransposeType GwyByteOrder GwyComputationStateType GwyCorrSearchType GwyCorrelationType GwyCurveChannel GwyCurveType GwyDWTDenoiseType GwyDWTType GwyDataCompatibilityFlags GwyDataError GwyDataFieldCached GwyDataItem GwyDataValidateFlags GwyDataViewLayerType GwyDataWatchEventType GwyDebugObjectsDumpFlags GwyDialogOutcome GwyDistanceTransformType GwyExprError GwyExteriorType GwyFileOperationType GwyGrainQuantity GwyGrainValueFlags GwyGrainValueGroup GwyGrainValueStoreColumn GwyGraphCurveType GwyGraphGridType GwyGraphLabelPosition GwyGraphModelExportStyle GwyGraphPointType GwyGraphStatusType GwyHScaleStyle GwyHelpFlags GwyInterpolationType GwyLayerBasicRangeType GwyLineStatQuantity GwyMFMComponentType GwyMFMGradientType GwyMFMProbeType GwyMarkerOperationType GwyMaskingType GwyMenuSensFlags GwyMergeType GwyMinMaxFilterType GwyModuleError GwyModuleFileError GwyNLFitParamFlags GwyOrientation GwyParamStringFlags GwyPeakBackgroundType GwyPeakOrderType GwyPeakQuantity GwyPercentileInterpolationType GwyPlainToolChanged GwyPlaneFitQuantity GwyPlaneSymmetry GwyPreviewSurfaceFlags GwyPreviewType GwyRawDataType GwyRenderingTarget GwyResponseType GwyResultsExportStyle GwyResultsReportType GwyResultsValueType GwyRotateResizeType GwyRunType GwySIUnitFormatStyle GwyScaleMappingType GwySynthDimsFlags GwySynthDimsParam GwySynthResponseType GwySynthUpdateType GwyTextHeaderError GwyTicksStyle GwyTipParamType GwyTipType GwyToolResponseType GwyTransformDirection GwyUnitsPlacement GwyVisibilityResetType GwyWatershedStateType GwyWindowingType +syn keyword gwyddionEnum Gwy2DCWTWaveletType Gwy3DMovement Gwy3DProjection Gwy3DViewLabel Gwy3DVisualization GwyAffineScalingType GwyAppLoggingFlags GwyAppPage GwyAppSettingsError GwyAppWhat GwyAxisScaleFormat GwyBrickTransposeType GwyByteOrder GwyComputationStateType GwyCorrSearchType GwyCorrelationType GwyCurveChannel GwyCurveType GwyDWTDenoiseType GwyDWTType GwyDataCompatibilityFlags GwyDataError GwyDataFieldCached GwyDataItem GwyDataValidateFlags GwyDataViewLayerType GwyDataWatchEventType GwyDebugObjectsDumpFlags GwyDialogOutcome GwyDistanceTransformType GwyExprError GwyExteriorType GwyFileOperationType GwyGrainQuantity GwyGrainValueFlags GwyGrainValueGroup GwyGrainValueStoreColumn GwyGraphCurveType GwyGraphGridType GwyGraphLabelPosition GwyGraphModelExportStyle GwyGraphPointType GwyGraphStatusType GwyHScaleStyle GwyHelpFlags GwyHoldSelectionFlags GwyInterpolationType GwyLayerBasicRangeType GwyLineStatQuantity GwyMFMComponentType GwyMFMGradientType GwyMFMProbeType GwyMarkerOperationType GwyMaskingType GwyMenuSensFlags GwyMergeType GwyMinMaxFilterType GwyModuleError GwyModuleFileError GwyNLFitParamFlags GwyOrientation GwyParamStringFlags GwyPeakBackgroundType GwyPeakOrderType GwyPeakQuantity GwyPercentileInterpolationType GwyPlainToolChanged GwyPlaneFitQuantity GwyPlaneSymmetry GwyPreviewSurfaceFlags GwyPreviewType GwyRawDataType GwyRenderingTarget GwyResponseType GwyResultsExportStyle GwyResultsReportType GwyResultsValueType GwyRotateResizeType GwyRunType GwySIUnitFormatStyle GwyScaleMappingType GwySynthDimsFlags GwySynthDimsParam GwySynthResponseType GwySynthUpdateType GwyTextHeaderError GwyTicksStyle GwyTipParamType GwyTipType GwyToolResponseType GwyTransformDirection GwyUnitsPlacement GwyVisibilityResetType GwyWatershedStateType GwyWindowingType syn keyword gwyddionUserFunction GwyAppDataForeachFunc GwyAppDataWatchFunc GwyColorAxisMapFunc GwyCoordTransform2DFunc GwyCreateTextFunc GwyCreateWidgetFunc GwyCurveMapFunc GwyCurveReduceFunction GwyDataChooserFilterFunc GwyDeserializeFunc GwyDialogPreviewFunc GwyEnumFilterFunc GwyFileDetectFunc GwyFileLoadFunc GwyFileSaveFunc GwyGraphFunc GwyMarkerValidateFunc GwyModuleBundleRegisterFunc GwyModuleQueryFunc GwyModuleRegisterFunc GwyNLFitDerFunc GwyNLFitFunc GwyNLFitIdxDiffFunc GwyNLFitIdxFunc GwyProcessFunc GwyRealFunc GwyRectifyStringFunc GwyResultsFormatFunc GwySaveAuxiliaryCreate GwySaveAuxiliaryDestroy GwySelectionFilterFunc GwySerializeFunc GwySetFractionFunc GwySetMessageFunc GwyVolumeFunc GwyXYZFunc -syn keyword gwyddionDefine GWY_APP_DATA_ID_NONE GWY_APP_SETTINGS_ERROR GWY_CONTAINER_PATHSEP GWY_CONTAINER_PATHSEP_STR GWY_EXPR_ERROR GWY_FILE_DETECT_BUFFER_SIZE GWY_GL_MATERIAL_DEFAULT GWY_GL_MATERIAL_NONE GWY_GRADIENT_DEFAULT GWY_ICON_SIZE_ABOUT GWY_MODULE_ABI_VERSION GWY_MODULE_BUNDLE_FLAG GWY_MODULE_ERROR GWY_MODULE_FILE_ERROR GWY_SQRT3 GWY_SQRT_PI GWY_STOCK_3D_BASE GWY_STOCK_ARITHMETIC GWY_STOCK_BINNING GWY_STOCK_BOLD GWY_STOCK_CANTILEVER GWY_STOCK_COLOR_RANGE GWY_STOCK_COLOR_RANGE_ADAPTIVE GWY_STOCK_COLOR_RANGE_AUTO GWY_STOCK_COLOR_RANGE_FIXED GWY_STOCK_COLOR_RANGE_FULL GWY_STOCK_CONVOLUTION GWY_STOCK_CONVOLVE GWY_STOCK_CORRECT_AFFINE GWY_STOCK_CORRELATION_LENGTH GWY_STOCK_CORRELATION_MASK GWY_STOCK_CROP GWY_STOCK_CROSS_PROFILE GWY_STOCK_CURVATURE GWY_STOCK_CWT GWY_STOCK_DATA_MEASURE GWY_STOCK_DECONVOLVE GWY_STOCK_DISCONNECTED GWY_STOCK_DISPLACEMENT_FIELD GWY_STOCK_DISTANCE GWY_STOCK_DISTANCE_TRANSFORM GWY_STOCK_DISTRIBUTION_ANGLE GWY_STOCK_DISTRIBUTION_SLOPE GWY_STOCK_DRIFT GWY_STOCK_DWT GWY_STOCK_EDGE GWY_STOCK_ENFORCE_DISTRIBUTION GWY_STOCK_ENTROPY GWY_STOCK_EXTEND GWY_STOCK_EXTRACT_PATH GWY_STOCK_FACET_ANALYSIS GWY_STOCK_FACET_LEVEL GWY_STOCK_FACET_MEASURE GWY_STOCK_FAVOURITE GWY_STOCK_FFT GWY_STOCK_FFT_2D GWY_STOCK_FFT_FILTER_1D GWY_STOCK_FFT_FILTER_2D GWY_STOCK_FILTER GWY_STOCK_FIND_PEAKS GWY_STOCK_FIT_SHAPE GWY_STOCK_FIX_ZERO GWY_STOCK_FLIP_DIAGONALLY GWY_STOCK_FLIP_HORIZONTALLY GWY_STOCK_FLIP_VERTICALLY GWY_STOCK_FRACTAL GWY_STOCK_FRACTAL_CORRECTION GWY_STOCK_FRACTAL_MEASURE GWY_STOCK_FREQUENCY_SPLIT GWY_STOCK_GL_MATERIAL GWY_STOCK_GRADIENT_HORIZONTAL GWY_STOCK_GRADIENT_VERTICAL GWY_STOCK_GRAINS GWY_STOCK_GRAINS_EDGE GWY_STOCK_GRAINS_EDGE_REMOVE GWY_STOCK_GRAINS_GRAPH GWY_STOCK_GRAINS_MEASURE GWY_STOCK_GRAINS_OTSU GWY_STOCK_GRAINS_REMOVE GWY_STOCK_GRAINS_STATISTICS GWY_STOCK_GRAINS_WATER GWY_STOCK_GRAIN_BOUNDING_BOX GWY_STOCK_GRAIN_CORRELATION GWY_STOCK_GRAIN_EXSCRIBED_CIRCLE GWY_STOCK_GRAIN_INSCRIBED_BOX GWY_STOCK_GRAIN_INSCRIBED_CIRCLE GWY_STOCK_GRAPH GWY_STOCK_GRAPH_ALIGN GWY_STOCK_GRAPH_CUT GWY_STOCK_GRAPH_DOS GWY_STOCK_GRAPH_EXPORT_ASCII GWY_STOCK_GRAPH_EXPORT_PNG GWY_STOCK_GRAPH_EXPORT_VECTOR GWY_STOCK_GRAPH_FD GWY_STOCK_GRAPH_FILTER GWY_STOCK_GRAPH_FUNCTION GWY_STOCK_GRAPH_HALFGAUSS GWY_STOCK_GRAPH_LEVEL GWY_STOCK_GRAPH_MEASURE GWY_STOCK_GRAPH_PALETTE GWY_STOCK_GRAPH_POINTER GWY_STOCK_GRAPH_RULER GWY_STOCK_GRAPH_STATISTICS GWY_STOCK_GRAPH_TERRACE_MEASURE GWY_STOCK_GRAPH_VERTICAL GWY_STOCK_GRAPH_ZOOM_FIT GWY_STOCK_GRAPH_ZOOM_IN GWY_STOCK_GRAPH_ZOOM_OUT GWY_STOCK_GWYDDION GWY_STOCK_HOUGH GWY_STOCK_IMAGE_RELATION GWY_STOCK_IMMERSE GWY_STOCK_ISO_ROUGHNESS GWY_STOCK_ITALIC GWY_STOCK_LESS GWY_STOCK_LEVEL GWY_STOCK_LEVEL_FLATTEN_BASE GWY_STOCK_LEVEL_MEDIAN GWY_STOCK_LEVEL_TRIANGLE GWY_STOCK_LIGHT_ROTATE GWY_STOCK_LIMIT_RANGE GWY_STOCK_LINE_LEVEL GWY_STOCK_LOAD_DEBUG GWY_STOCK_LOAD_INFO GWY_STOCK_LOAD_WARNING GWY_STOCK_LOCAL_SLOPE GWY_STOCK_LOGSCALE_HORIZONTAL GWY_STOCK_LOGSCALE_VERTICAL GWY_STOCK_MARK_OUTLIERS GWY_STOCK_MARK_SCARS GWY_STOCK_MARK_WITH GWY_STOCK_MASK GWY_STOCK_MASK_ADD GWY_STOCK_MASK_CIRCLE GWY_STOCK_MASK_CIRCLE_EXCLUSIVE GWY_STOCK_MASK_CIRCLE_INCLUSIVE GWY_STOCK_MASK_DISTRIBUTE GWY_STOCK_MASK_EDITOR GWY_STOCK_MASK_EXCLUDE GWY_STOCK_MASK_EXCLUDE_CIRCLE GWY_STOCK_MASK_EXTRACT GWY_STOCK_MASK_FILL_DRAW GWY_STOCK_MASK_FILL_ERASE GWY_STOCK_MASK_GROW GWY_STOCK_MASK_INTERSECT GWY_STOCK_MASK_INVERT GWY_STOCK_MASK_LINE GWY_STOCK_MASK_MORPH GWY_STOCK_MASK_NOISIFY GWY_STOCK_MASK_PAINT_DRAW GWY_STOCK_MASK_PAINT_ERASE GWY_STOCK_MASK_RECT_EXCLUSIVE GWY_STOCK_MASK_RECT_INCLUSIVE GWY_STOCK_MASK_REMOVE GWY_STOCK_MASK_SET GWY_STOCK_MASK_SHIFT GWY_STOCK_MASK_SHRINK GWY_STOCK_MASK_SUBTRACT GWY_STOCK_MASK_THIN GWY_STOCK_MEASURE_LATTICE GWY_STOCK_MERGE GWY_STOCK_MFM_CONVERT_TO_FORCE GWY_STOCK_MFM_CURRENT_LINE GWY_STOCK_MFM_FIELD_FIND_SHIFT GWY_STOCK_MFM_FIELD_SHIFT GWY_STOCK_MFM_PARALLEL GWY_STOCK_MFM_PERPENDICULAR GWY_STOCK_MORE GWY_STOCK_MUTUAL_CROP GWY_STOCK_NEURAL_APPLY GWY_STOCK_NEURAL_TRAIN GWY_STOCK_NEXT GWY_STOCK_NULL_OFFSETS GWY_STOCK_PALETTES GWY_STOCK_PATH_LEVEL GWY_STOCK_PERSPECTIVE_DISTORT GWY_STOCK_POINTER_MEASURE GWY_STOCK_POLYNOM GWY_STOCK_POLYNOM_LEVEL GWY_STOCK_POLY_DISTORT GWY_STOCK_PREVIOUS GWY_STOCK_PROFILE GWY_STOCK_PROFILE_MULTIPLE GWY_STOCK_PSDF_LOG_PHI GWY_STOCK_PSDF_SECTION GWY_STOCK_PYGWY GWY_STOCK_RADIAL_PROFILE GWY_STOCK_RANK_FILTER GWY_STOCK_RASTERIZE GWY_STOCK_REMOVE_UNDER_MASK GWY_STOCK_REVOLVE_ARC GWY_STOCK_REVOLVE_SPHERE GWY_STOCK_ROTATE GWY_STOCK_ROTATE_180 GWY_STOCK_ROTATE_3D GWY_STOCK_ROTATE_90_CCW GWY_STOCK_ROTATE_90_CW GWY_STOCK_SCALE GWY_STOCK_SCALE_HORIZONTALLY GWY_STOCK_SCALE_VERTICALLY GWY_STOCK_SCARS GWY_STOCK_SCIENTIFIC_NUMBER_FORMAT GWY_STOCK_SELECTIONS GWY_STOCK_SHADER GWY_STOCK_SPECTRUM GWY_STOCK_SPOT_REMOVE GWY_STOCK_SQUARE_SAMPLES GWY_STOCK_STAT_QUANTITIES GWY_STOCK_STITCH GWY_STOCK_STRAIGHTEN_PATH GWY_STOCK_SUBSCRIPT GWY_STOCK_SUPERSCRIPT GWY_STOCK_SYNTHETIC_ANNEAL GWY_STOCK_SYNTHETIC_BALLISTIC_DEPOSITION GWY_STOCK_SYNTHETIC_BROWNIAN_MOTION GWY_STOCK_SYNTHETIC_COLUMNAR GWY_STOCK_SYNTHETIC_DIFFUSION GWY_STOCK_SYNTHETIC_DISCS GWY_STOCK_SYNTHETIC_DOMAINS GWY_STOCK_SYNTHETIC_FIBRES GWY_STOCK_SYNTHETIC_LATTICE GWY_STOCK_SYNTHETIC_LINE_NOISE GWY_STOCK_SYNTHETIC_NOISE GWY_STOCK_SYNTHETIC_OBJECTS GWY_STOCK_SYNTHETIC_PARTICLES GWY_STOCK_SYNTHETIC_PATTERN GWY_STOCK_SYNTHETIC_PHASES GWY_STOCK_SYNTHETIC_PILEUP GWY_STOCK_SYNTHETIC_SPECTRAL GWY_STOCK_SYNTHETIC_TURING_PATTERN GWY_STOCK_SYNTHETIC_WAVES GWY_STOCK_TERRACE_MEASURE GWY_STOCK_TILT GWY_STOCK_TIP_DILATION GWY_STOCK_TIP_EROSION GWY_STOCK_TIP_ESTIMATION GWY_STOCK_TIP_INDENT_ANALYZE GWY_STOCK_TIP_LATERAL_FORCE GWY_STOCK_TIP_MAP GWY_STOCK_TIP_MODEL GWY_STOCK_TIP_PID GWY_STOCK_UNROTATE GWY_STOCK_VALUE_INVERT GWY_STOCK_VOLUME GWY_STOCK_VOLUME_ARITHMETIC GWY_STOCK_VOLUME_CALIBRATE GWY_STOCK_VOLUME_DIMENSIONS GWY_STOCK_VOLUME_FD GWY_STOCK_VOLUME_INVERT GWY_STOCK_VOLUME_KMEANS GWY_STOCK_VOLUME_KMEDIANS GWY_STOCK_VOLUME_LINE_STATS GWY_STOCK_VOLUME_PLANE_STATS GWY_STOCK_VOLUME_SLICE GWY_STOCK_VOLUME_SWAP_AXES GWY_STOCK_VOLUMIZE GWY_STOCK_VOLUMIZE_LAYERS GWY_STOCK_WRAP_VALUE GWY_STOCK_XYZIZE GWY_STOCK_XY_DENOISE GWY_STOCK_ZERO_MAXIMUM GWY_STOCK_ZERO_MEAN GWY_STOCK_ZERO_UNDER_MASK GWY_STOCK_ZOOM_1_1 GWY_STOCK_ZOOM_FIT GWY_STOCK_ZOOM_IN GWY_STOCK_ZOOM_OUT GWY_TEXT_HEADER_ERROR GWY_TRIANGULATION_NONE GWY_TYPE_2D_CWT_WAVELET_TYPE GWY_TYPE_3D_LABEL GWY_TYPE_3D_MOVEMENT GWY_TYPE_3D_PROJECTION GWY_TYPE_3D_SETUP GWY_TYPE_3D_VIEW GWY_TYPE_3D_VIEW_LABEL GWY_TYPE_3D_VISUALIZATION GWY_TYPE_3D_WINDOW GWY_TYPE_ADJUST_BAR GWY_TYPE_AFFINE_SCALING_TYPE GWY_TYPE_APP_DATA_ID GWY_TYPE_APP_LOGGING_FLAGS GWY_TYPE_APP_PAGE GWY_TYPE_APP_SETTINGS_ERROR GWY_TYPE_APP_WHAT GWY_TYPE_AXIS GWY_TYPE_AXIS_SCALE_FORMAT GWY_TYPE_BRICK GWY_TYPE_BRICK_TRANSPOSE_TYPE GWY_TYPE_BYTE_ORDER GWY_TYPE_CALDATA GWY_TYPE_CALIBRATION GWY_TYPE_CDLINE GWY_TYPE_COLOR_AXIS GWY_TYPE_COLOR_BUTTON GWY_TYPE_COMPUTATION_STATE GWY_TYPE_COMPUTATION_STATE_TYPE GWY_TYPE_CONTAINER GWY_TYPE_CORRELATION_TYPE GWY_TYPE_CORR_SEARCH_TYPE GWY_TYPE_CURVE GWY_TYPE_CURVE_CHANNEL GWY_TYPE_CURVE_TYPE GWY_TYPE_DATA_CHOOSER GWY_TYPE_DATA_COMPATIBILITY_FLAGS GWY_TYPE_DATA_ERROR GWY_TYPE_DATA_FIELD GWY_TYPE_DATA_FIELD_CACHED GWY_TYPE_DATA_ITEM GWY_TYPE_DATA_LINE GWY_TYPE_DATA_VALIDATE_FLAGS GWY_TYPE_DATA_VIEW GWY_TYPE_DATA_VIEW_LAYER GWY_TYPE_DATA_VIEW_LAYER_TYPE GWY_TYPE_DATA_WATCH_EVENT_TYPE GWY_TYPE_DATA_WINDOW GWY_TYPE_DIALOG GWY_TYPE_DIALOG_OUTCOME GWY_TYPE_DISTANCE_TRANSFORM_TYPE GWY_TYPE_DWT_DENOISE_TYPE GWY_TYPE_DWT_TYPE GWY_TYPE_ENUM GWY_TYPE_EXPR_ERROR GWY_TYPE_EXTERIOR_TYPE GWY_TYPE_FD_CURVE_PRESET GWY_TYPE_FILE_OPERATION_TYPE GWY_TYPE_GL_MATERIAL GWY_TYPE_GRADIENT GWY_TYPE_GRAIN_QUANTITY GWY_TYPE_GRAIN_VALUE GWY_TYPE_GRAIN_VALUE_FLAGS GWY_TYPE_GRAIN_VALUE_GROUP GWY_TYPE_GRAIN_VALUE_STORE_COLUMN GWY_TYPE_GRAPH GWY_TYPE_GRAPH_AREA GWY_TYPE_GRAPH_CORNER GWY_TYPE_GRAPH_CURVES GWY_TYPE_GRAPH_CURVE_MODEL GWY_TYPE_GRAPH_CURVE_TYPE GWY_TYPE_GRAPH_DATA GWY_TYPE_GRAPH_GRID_TYPE GWY_TYPE_GRAPH_LABEL GWY_TYPE_GRAPH_LABEL_POSITION GWY_TYPE_GRAPH_MODEL GWY_TYPE_GRAPH_MODEL_EXPORT_STYLE GWY_TYPE_GRAPH_POINT_TYPE GWY_TYPE_GRAPH_STATUS_TYPE GWY_TYPE_GRAPH_WINDOW GWY_TYPE_HELP_FLAGS GWY_TYPE_HMARKER_BOX GWY_TYPE_HRULER GWY_TYPE_HSCALE_STYLE GWY_TYPE_INTERPOLATION_TYPE GWY_TYPE_INVENTORY GWY_TYPE_INVENTORY_STORE GWY_TYPE_LAWN GWY_TYPE_LAYER_BASIC GWY_TYPE_LAYER_BASIC_RANGE_TYPE GWY_TYPE_LAYER_MASK GWY_TYPE_LINE_STAT_QUANTITY GWY_TYPE_MARKER_BOX GWY_TYPE_MARKER_OPERATION_TYPE GWY_TYPE_MASKING_TYPE GWY_TYPE_MENU_SENS_FLAGS GWY_TYPE_MERGE_TYPE GWY_TYPE_MFM_COMPONENT_TYPE GWY_TYPE_MFM_GRADIENT_TYPE GWY_TYPE_MFM_PROBE_TYPE GWY_TYPE_MIN_MAX_FILTER_TYPE GWY_TYPE_MODULE_ERROR GWY_TYPE_MODULE_FILE_ERROR GWY_TYPE_NLFIT_PRESET GWY_TYPE_NL_FIT_PARAM_FLAGS GWY_TYPE_NULL_STORE GWY_TYPE_ORIENTATION GWY_TYPE_PARAMS GWY_TYPE_PARAM_DEF GWY_TYPE_PARAM_RESOURCE GWY_TYPE_PARAM_TABLE GWY_TYPE_PEAKS GWY_TYPE_PEAK_BACKGROUND_TYPE GWY_TYPE_PEAK_ORDER_TYPE GWY_TYPE_PEAK_QUANTITY GWY_TYPE_PERCENTILE_INTERPOLATION_TYPE GWY_TYPE_PIXMAP_LAYER GWY_TYPE_PLAIN_TOOL GWY_TYPE_PLAIN_TOOL_CHANGED GWY_TYPE_PLANE_FIT_QUANTITY GWY_TYPE_PLANE_SYMMETRY GWY_TYPE_PREVIEW_SURFACE_FLAGS GWY_TYPE_PREVIEW_TYPE GWY_TYPE_RAW_DATA_TYPE GWY_TYPE_RENDERING_TARGET GWY_TYPE_RESOURCE GWY_TYPE_RESOURCE_EDITOR GWY_TYPE_RESPONSE_TYPE GWY_TYPE_RESULTS GWY_TYPE_RESULTS_EXPORT GWY_TYPE_RESULTS_EXPORT_STYLE GWY_TYPE_RESULTS_REPORT_TYPE GWY_TYPE_RESULTS_VALUE_TYPE GWY_TYPE_RGBA GWY_TYPE_ROTATE_RESIZE_TYPE GWY_TYPE_RULER GWY_TYPE_RUN_TYPE GWY_TYPE_SCALE_MAPPING_TYPE GWY_TYPE_SCI_TEXT GWY_TYPE_SELECTION GWY_TYPE_SELECTION_GRAPH_1DAREA GWY_TYPE_SELECTION_GRAPH_AREA GWY_TYPE_SELECTION_GRAPH_LINE GWY_TYPE_SELECTION_GRAPH_POINT GWY_TYPE_SELECTION_GRAPH_ZOOM GWY_TYPE_SENSITIVITY_GROUP GWY_TYPE_SERIALIZABLE GWY_TYPE_SHADER GWY_TYPE_SHAPE_FIT_PRESET GWY_TYPE_SI_UNIT GWY_TYPE_SI_UNIT_FORMAT_STYLE GWY_TYPE_SI_VALUE_FORMAT GWY_TYPE_SPECTRA GWY_TYPE_SPLINE GWY_TYPE_STATUSBAR GWY_TYPE_STRING_LIST GWY_TYPE_SURFACE GWY_TYPE_SYNTH_DIMS_FLAGS GWY_TYPE_SYNTH_DIMS_PARAM GWY_TYPE_SYNTH_RESPONSE_TYPE GWY_TYPE_SYNTH_UPDATE_TYPE GWY_TYPE_TEXT_HEADER_ERROR GWY_TYPE_TICKS_STYLE GWY_TYPE_TIP_MODEL_PRESET GWY_TYPE_TIP_PARAM_TYPE GWY_TYPE_TIP_TYPE GWY_TYPE_TOOL GWY_TYPE_TOOL_RESPONSE_TYPE GWY_TYPE_TOOL_SWITCH_EVENT GWY_TYPE_TRANSFORM_DIRECTION GWY_TYPE_TRIANGULATION GWY_TYPE_UNITS_PLACEMENT GWY_TYPE_VECTOR_LAYER GWY_TYPE_VISIBILITY_RESET_TYPE GWY_TYPE_VRULER GWY_TYPE_WATERSHED_STATE_TYPE GWY_TYPE_WINDOWING_TYPE GWY_TYPE_XY GWY_TYPE_XYZ GWY_VERSION_MAJOR GWY_VERSION_MINOR GWY_VERSION_STRING gwy_isinf gwy_isnan pow10 +syn keyword gwyddionDefine GWY_APP_DATA_ID_NONE GWY_APP_SETTINGS_ERROR GWY_CONTAINER_PATHSEP GWY_CONTAINER_PATHSEP_STR GWY_EXPR_ERROR GWY_FILE_DETECT_BUFFER_SIZE GWY_GL_MATERIAL_DEFAULT GWY_GL_MATERIAL_NONE GWY_GRADIENT_DEFAULT GWY_ICON_SIZE_ABOUT GWY_MODULE_ABI_VERSION GWY_MODULE_BUNDLE_FLAG GWY_MODULE_ERROR GWY_MODULE_FILE_ERROR GWY_SQRT3 GWY_SQRT_PI GWY_STOCK_3D_BASE GWY_STOCK_ARITHMETIC GWY_STOCK_BINNING GWY_STOCK_BOLD GWY_STOCK_CANTILEVER GWY_STOCK_COLOR_RANGE GWY_STOCK_COLOR_RANGE_ADAPTIVE GWY_STOCK_COLOR_RANGE_AUTO GWY_STOCK_COLOR_RANGE_FIXED GWY_STOCK_COLOR_RANGE_FULL GWY_STOCK_CONVOLUTION GWY_STOCK_CONVOLVE GWY_STOCK_CORRECT_AFFINE GWY_STOCK_CORRELATION_LENGTH GWY_STOCK_CORRELATION_MASK GWY_STOCK_CROP GWY_STOCK_CROSS_PROFILE GWY_STOCK_CURVATURE GWY_STOCK_CWT GWY_STOCK_DATA_MEASURE GWY_STOCK_DECONVOLVE GWY_STOCK_DISCONNECTED GWY_STOCK_DISPLACEMENT_FIELD GWY_STOCK_DISTANCE GWY_STOCK_DISTANCE_TRANSFORM GWY_STOCK_DISTRIBUTION_ANGLE GWY_STOCK_DISTRIBUTION_SLOPE GWY_STOCK_DRIFT GWY_STOCK_DWT GWY_STOCK_EDGE GWY_STOCK_ENFORCE_DISTRIBUTION GWY_STOCK_ENTROPY GWY_STOCK_EXTEND GWY_STOCK_EXTRACT_PATH GWY_STOCK_FACET_ANALYSIS GWY_STOCK_FACET_LEVEL GWY_STOCK_FACET_MEASURE GWY_STOCK_FAVOURITE GWY_STOCK_FFT GWY_STOCK_FFT_2D GWY_STOCK_FFT_FILTER_1D GWY_STOCK_FFT_FILTER_2D GWY_STOCK_FILTER GWY_STOCK_FIND_PEAKS GWY_STOCK_FIT_SHAPE GWY_STOCK_FIX_ZERO GWY_STOCK_FLIP_DIAGONALLY GWY_STOCK_FLIP_HORIZONTALLY GWY_STOCK_FLIP_VERTICALLY GWY_STOCK_FRACTAL GWY_STOCK_FRACTAL_CORRECTION GWY_STOCK_FRACTAL_MEASURE GWY_STOCK_FREQUENCY_SPLIT GWY_STOCK_GL_MATERIAL GWY_STOCK_GRADIENT_HORIZONTAL GWY_STOCK_GRADIENT_VERTICAL GWY_STOCK_GRAINS GWY_STOCK_GRAINS_EDGE GWY_STOCK_GRAINS_EDGE_REMOVE GWY_STOCK_GRAINS_GRAPH GWY_STOCK_GRAINS_MEASURE GWY_STOCK_GRAINS_OTSU GWY_STOCK_GRAINS_REMOVE GWY_STOCK_GRAINS_STATISTICS GWY_STOCK_GRAINS_WATER GWY_STOCK_GRAIN_BOUNDING_BOX GWY_STOCK_GRAIN_CORRELATION GWY_STOCK_GRAIN_EXSCRIBED_CIRCLE GWY_STOCK_GRAIN_INSCRIBED_BOX GWY_STOCK_GRAIN_INSCRIBED_CIRCLE GWY_STOCK_GRAPH GWY_STOCK_GRAPH_ALIGN GWY_STOCK_GRAPH_CUT GWY_STOCK_GRAPH_DOS GWY_STOCK_GRAPH_EXPORT_ASCII GWY_STOCK_GRAPH_EXPORT_PNG GWY_STOCK_GRAPH_EXPORT_VECTOR GWY_STOCK_GRAPH_FD GWY_STOCK_GRAPH_FILTER GWY_STOCK_GRAPH_FUNCTION GWY_STOCK_GRAPH_HALFGAUSS GWY_STOCK_GRAPH_LEVEL GWY_STOCK_GRAPH_MEASURE GWY_STOCK_GRAPH_PALETTE GWY_STOCK_GRAPH_PERIOD_MEASURE GWY_STOCK_GRAPH_POINTER GWY_STOCK_GRAPH_RULER GWY_STOCK_GRAPH_STATISTICS GWY_STOCK_GRAPH_TERRACE_MEASURE GWY_STOCK_GRAPH_VERTICAL GWY_STOCK_GRAPH_ZOOM_FIT GWY_STOCK_GRAPH_ZOOM_IN GWY_STOCK_GRAPH_ZOOM_OUT GWY_STOCK_GWYDDION GWY_STOCK_HOLD_SELECTION_CLEAR GWY_STOCK_HOLD_SELECTION_REPLACE GWY_STOCK_HOUGH GWY_STOCK_IMAGE_RELATION GWY_STOCK_IMMERSE GWY_STOCK_ISO_ROUGHNESS GWY_STOCK_ITALIC GWY_STOCK_LESS GWY_STOCK_LEVEL GWY_STOCK_LEVEL_FLATTEN_BASE GWY_STOCK_LEVEL_MEDIAN GWY_STOCK_LEVEL_TRIANGLE GWY_STOCK_LIGHT_ROTATE GWY_STOCK_LIMIT_RANGE GWY_STOCK_LINE_LEVEL GWY_STOCK_LOAD_DEBUG GWY_STOCK_LOAD_INFO GWY_STOCK_LOAD_WARNING GWY_STOCK_LOCAL_SLOPE GWY_STOCK_LOGSCALE_HORIZONTAL GWY_STOCK_LOGSCALE_VERTICAL GWY_STOCK_MARK_OUTLIERS GWY_STOCK_MARK_SCARS GWY_STOCK_MARK_WITH GWY_STOCK_MASK GWY_STOCK_MASK_ADD GWY_STOCK_MASK_CIRCLE GWY_STOCK_MASK_CIRCLE_EXCLUSIVE GWY_STOCK_MASK_CIRCLE_INCLUSIVE GWY_STOCK_MASK_DISTRIBUTE GWY_STOCK_MASK_EDITOR GWY_STOCK_MASK_EXCLUDE GWY_STOCK_MASK_EXCLUDE_CIRCLE GWY_STOCK_MASK_EXTRACT GWY_STOCK_MASK_FILL_DRAW GWY_STOCK_MASK_FILL_ERASE GWY_STOCK_MASK_GROW GWY_STOCK_MASK_INTERSECT GWY_STOCK_MASK_INVERT GWY_STOCK_MASK_LINE GWY_STOCK_MASK_MORPH GWY_STOCK_MASK_NOISIFY GWY_STOCK_MASK_PAINT_DRAW GWY_STOCK_MASK_PAINT_ERASE GWY_STOCK_MASK_RECT_EXCLUSIVE GWY_STOCK_MASK_RECT_INCLUSIVE GWY_STOCK_MASK_REMOVE GWY_STOCK_MASK_SET GWY_STOCK_MASK_SHIFT GWY_STOCK_MASK_SHRINK GWY_STOCK_MASK_SUBTRACT GWY_STOCK_MASK_THIN GWY_STOCK_MEASURE_LATTICE GWY_STOCK_MERGE GWY_STOCK_MFM_CONVERT_TO_FORCE GWY_STOCK_MFM_CURRENT_LINE GWY_STOCK_MFM_FIELD_FIND_SHIFT GWY_STOCK_MFM_FIELD_SHIFT GWY_STOCK_MFM_PARALLEL GWY_STOCK_MFM_PERPENDICULAR GWY_STOCK_MORE GWY_STOCK_MUTUAL_CROP GWY_STOCK_NEURAL_APPLY GWY_STOCK_NEURAL_TRAIN GWY_STOCK_NEXT GWY_STOCK_NULL_OFFSETS GWY_STOCK_PALETTES GWY_STOCK_PATH_LEVEL GWY_STOCK_PERSPECTIVE_DISTORT GWY_STOCK_POINTER_MEASURE GWY_STOCK_POLYNOM GWY_STOCK_POLYNOM_LEVEL GWY_STOCK_POLY_DISTORT GWY_STOCK_PREVIOUS GWY_STOCK_PROFILE GWY_STOCK_PROFILE_MULTIPLE GWY_STOCK_PSDF_LOG_PHI GWY_STOCK_PSDF_SECTION GWY_STOCK_PYGWY GWY_STOCK_RADIAL_PROFILE GWY_STOCK_RANK_FILTER GWY_STOCK_RASTERIZE GWY_STOCK_REMOVE_UNDER_MASK GWY_STOCK_REVOLVE_ARC GWY_STOCK_REVOLVE_SPHERE GWY_STOCK_ROTATE GWY_STOCK_ROTATE_180 GWY_STOCK_ROTATE_3D GWY_STOCK_ROTATE_90_CCW GWY_STOCK_ROTATE_90_CW GWY_STOCK_SCALE GWY_STOCK_SCALE_HORIZONTALLY GWY_STOCK_SCALE_VERTICALLY GWY_STOCK_SCARS GWY_STOCK_SCIENTIFIC_NUMBER_FORMAT GWY_STOCK_SELECTIONS GWY_STOCK_SHADER GWY_STOCK_SPECTRUM GWY_STOCK_SPOT_REMOVE GWY_STOCK_SQUARE_SAMPLES GWY_STOCK_STAT_QUANTITIES GWY_STOCK_STITCH GWY_STOCK_STRAIGHTEN_PATH GWY_STOCK_SUBSCRIPT GWY_STOCK_SUPERSCRIPT GWY_STOCK_SYNTHETIC_ANNEAL GWY_STOCK_SYNTHETIC_BALLISTIC_DEPOSITION GWY_STOCK_SYNTHETIC_BROWNIAN_MOTION GWY_STOCK_SYNTHETIC_COLUMNAR GWY_STOCK_SYNTHETIC_DIFFUSION GWY_STOCK_SYNTHETIC_DISCS GWY_STOCK_SYNTHETIC_DOMAINS GWY_STOCK_SYNTHETIC_DUNES GWY_STOCK_SYNTHETIC_FIBRES GWY_STOCK_SYNTHETIC_LATTICE GWY_STOCK_SYNTHETIC_LINE_NOISE GWY_STOCK_SYNTHETIC_NOISE GWY_STOCK_SYNTHETIC_OBJECTS GWY_STOCK_SYNTHETIC_PARTICLES GWY_STOCK_SYNTHETIC_PATTERN GWY_STOCK_SYNTHETIC_PHASES GWY_STOCK_SYNTHETIC_PILEUP GWY_STOCK_SYNTHETIC_SPECTRAL GWY_STOCK_SYNTHETIC_TURING_PATTERN GWY_STOCK_SYNTHETIC_WAVES GWY_STOCK_TERRACE_MEASURE GWY_STOCK_TILT GWY_STOCK_TIP_DILATION GWY_STOCK_TIP_EROSION GWY_STOCK_TIP_ESTIMATION GWY_STOCK_TIP_INDENT_ANALYZE GWY_STOCK_TIP_LATERAL_FORCE GWY_STOCK_TIP_MAP GWY_STOCK_TIP_MODEL GWY_STOCK_TIP_PID GWY_STOCK_UNROTATE GWY_STOCK_VALUE_INVERT GWY_STOCK_VOLUME GWY_STOCK_VOLUME_ARITHMETIC GWY_STOCK_VOLUME_CALIBRATE GWY_STOCK_VOLUME_DIMENSIONS GWY_STOCK_VOLUME_FD GWY_STOCK_VOLUME_INVERT GWY_STOCK_VOLUME_KMEANS GWY_STOCK_VOLUME_KMEDIANS GWY_STOCK_VOLUME_LINE_STATS GWY_STOCK_VOLUME_PLANE_STATS GWY_STOCK_VOLUME_SLICE GWY_STOCK_VOLUME_SWAP_AXES GWY_STOCK_VOLUMIZE GWY_STOCK_VOLUMIZE_LAYERS GWY_STOCK_WRAP_VALUE GWY_STOCK_XYZIZE GWY_STOCK_XY_DENOISE GWY_STOCK_ZERO_MAXIMUM GWY_STOCK_ZERO_MEAN GWY_STOCK_ZERO_UNDER_MASK GWY_STOCK_ZOOM_1_1 GWY_STOCK_ZOOM_FIT GWY_STOCK_ZOOM_IN GWY_STOCK_ZOOM_OUT GWY_TEXT_HEADER_ERROR GWY_TRIANGULATION_NONE GWY_TYPE_2D_CWT_WAVELET_TYPE GWY_TYPE_3D_LABEL GWY_TYPE_3D_MOVEMENT GWY_TYPE_3D_PROJECTION GWY_TYPE_3D_SETUP GWY_TYPE_3D_VIEW GWY_TYPE_3D_VIEW_LABEL GWY_TYPE_3D_VISUALIZATION GWY_TYPE_3D_WINDOW GWY_TYPE_ADJUST_BAR GWY_TYPE_AFFINE_SCALING_TYPE GWY_TYPE_APP_DATA_ID GWY_TYPE_APP_LOGGING_FLAGS GWY_TYPE_APP_PAGE GWY_TYPE_APP_SETTINGS_ERROR GWY_TYPE_APP_WHAT GWY_TYPE_AXIS GWY_TYPE_AXIS_SCALE_FORMAT GWY_TYPE_BRICK GWY_TYPE_BRICK_TRANSPOSE_TYPE GWY_TYPE_BYTE_ORDER GWY_TYPE_CALDATA GWY_TYPE_CALIBRATION GWY_TYPE_CDLINE GWY_TYPE_COLOR_AXIS GWY_TYPE_COLOR_BUTTON GWY_TYPE_COMPUTATION_STATE GWY_TYPE_COMPUTATION_STATE_TYPE GWY_TYPE_CONTAINER GWY_TYPE_CORRELATION_TYPE GWY_TYPE_CORR_SEARCH_TYPE GWY_TYPE_CURVE GWY_TYPE_CURVE_CHANNEL GWY_TYPE_CURVE_TYPE GWY_TYPE_DATA_CHOOSER GWY_TYPE_DATA_COMPATIBILITY_FLAGS GWY_TYPE_DATA_ERROR GWY_TYPE_DATA_FIELD GWY_TYPE_DATA_FIELD_CACHED GWY_TYPE_DATA_ITEM GWY_TYPE_DATA_LINE GWY_TYPE_DATA_VALIDATE_FLAGS GWY_TYPE_DATA_VIEW GWY_TYPE_DATA_VIEW_LAYER GWY_TYPE_DATA_VIEW_LAYER_TYPE GWY_TYPE_DATA_WATCH_EVENT_TYPE GWY_TYPE_DATA_WINDOW GWY_TYPE_DIALOG GWY_TYPE_DIALOG_OUTCOME GWY_TYPE_DISTANCE_TRANSFORM_TYPE GWY_TYPE_DWT_DENOISE_TYPE GWY_TYPE_DWT_TYPE GWY_TYPE_ENUM GWY_TYPE_EXPR_ERROR GWY_TYPE_EXTERIOR_TYPE GWY_TYPE_FD_CURVE_PRESET GWY_TYPE_FILE_OPERATION_TYPE GWY_TYPE_GL_MATERIAL GWY_TYPE_GRADIENT GWY_TYPE_GRAIN_QUANTITY GWY_TYPE_GRAIN_VALUE GWY_TYPE_GRAIN_VALUE_FLAGS GWY_TYPE_GRAIN_VALUE_GROUP GWY_TYPE_GRAIN_VALUE_STORE_COLUMN GWY_TYPE_GRAPH GWY_TYPE_GRAPH_AREA GWY_TYPE_GRAPH_CORNER GWY_TYPE_GRAPH_CURVES GWY_TYPE_GRAPH_CURVE_MODEL GWY_TYPE_GRAPH_CURVE_TYPE GWY_TYPE_GRAPH_DATA GWY_TYPE_GRAPH_GRID_TYPE GWY_TYPE_GRAPH_LABEL GWY_TYPE_GRAPH_LABEL_POSITION GWY_TYPE_GRAPH_MODEL GWY_TYPE_GRAPH_MODEL_EXPORT_STYLE GWY_TYPE_GRAPH_POINT_TYPE GWY_TYPE_GRAPH_STATUS_TYPE GWY_TYPE_GRAPH_WINDOW GWY_TYPE_HELP_FLAGS GWY_TYPE_HMARKER_BOX GWY_TYPE_HOLD_SELECTION_FLAGS GWY_TYPE_HRULER GWY_TYPE_HSCALE_STYLE GWY_TYPE_INTERPOLATION_TYPE GWY_TYPE_INVENTORY GWY_TYPE_INVENTORY_STORE GWY_TYPE_LAWN GWY_TYPE_LAYER_BASIC GWY_TYPE_LAYER_BASIC_RANGE_TYPE GWY_TYPE_LAYER_MASK GWY_TYPE_LINE_STAT_QUANTITY GWY_TYPE_MARKER_BOX GWY_TYPE_MARKER_OPERATION_TYPE GWY_TYPE_MASKING_TYPE GWY_TYPE_MENU_SENS_FLAGS GWY_TYPE_MERGE_TYPE GWY_TYPE_MFM_COMPONENT_TYPE GWY_TYPE_MFM_GRADIENT_TYPE GWY_TYPE_MFM_PROBE_TYPE GWY_TYPE_MIN_MAX_FILTER_TYPE GWY_TYPE_MODULE_ERROR GWY_TYPE_MODULE_FILE_ERROR GWY_TYPE_NLFIT_PRESET GWY_TYPE_NL_FIT_PARAM_FLAGS GWY_TYPE_NULL_STORE GWY_TYPE_ORIENTATION GWY_TYPE_PARAMS GWY_TYPE_PARAM_DEF GWY_TYPE_PARAM_RESOURCE GWY_TYPE_PARAM_TABLE GWY_TYPE_PEAKS GWY_TYPE_PEAK_BACKGROUND_TYPE GWY_TYPE_PEAK_ORDER_TYPE GWY_TYPE_PEAK_QUANTITY GWY_TYPE_PERCENTILE_INTERPOLATION_TYPE GWY_TYPE_PIXMAP_LAYER GWY_TYPE_PLAIN_TOOL GWY_TYPE_PLAIN_TOOL_CHANGED GWY_TYPE_PLANE_FIT_QUANTITY GWY_TYPE_PLANE_SYMMETRY GWY_TYPE_PREVIEW_SURFACE_FLAGS GWY_TYPE_PREVIEW_TYPE GWY_TYPE_RAW_DATA_TYPE GWY_TYPE_RENDERING_TARGET GWY_TYPE_RESOURCE GWY_TYPE_RESOURCE_EDITOR GWY_TYPE_RESPONSE_TYPE GWY_TYPE_RESULTS GWY_TYPE_RESULTS_EXPORT GWY_TYPE_RESULTS_EXPORT_STYLE GWY_TYPE_RESULTS_REPORT_TYPE GWY_TYPE_RESULTS_VALUE_TYPE GWY_TYPE_RGBA GWY_TYPE_ROTATE_RESIZE_TYPE GWY_TYPE_RULER GWY_TYPE_RUN_TYPE GWY_TYPE_SCALE_MAPPING_TYPE GWY_TYPE_SCI_TEXT GWY_TYPE_SELECTION GWY_TYPE_SELECTION_GRAPH_1DAREA GWY_TYPE_SELECTION_GRAPH_AREA GWY_TYPE_SELECTION_GRAPH_LINE GWY_TYPE_SELECTION_GRAPH_POINT GWY_TYPE_SELECTION_GRAPH_ZOOM GWY_TYPE_SENSITIVITY_GROUP GWY_TYPE_SERIALIZABLE GWY_TYPE_SHADER GWY_TYPE_SHAPE_FIT_PRESET GWY_TYPE_SI_UNIT GWY_TYPE_SI_UNIT_FORMAT_STYLE GWY_TYPE_SI_VALUE_FORMAT GWY_TYPE_SPECTRA GWY_TYPE_SPLINE GWY_TYPE_STATUSBAR GWY_TYPE_STRING_LIST GWY_TYPE_SURFACE GWY_TYPE_SYNTH_DIMS_FLAGS GWY_TYPE_SYNTH_DIMS_PARAM GWY_TYPE_SYNTH_RESPONSE_TYPE GWY_TYPE_SYNTH_UPDATE_TYPE GWY_TYPE_TEXT_HEADER_ERROR GWY_TYPE_TICKS_STYLE GWY_TYPE_TIP_MODEL_PRESET GWY_TYPE_TIP_PARAM_TYPE GWY_TYPE_TIP_TYPE GWY_TYPE_TOOL GWY_TYPE_TOOL_RESPONSE_TYPE GWY_TYPE_TOOL_SWITCH_EVENT GWY_TYPE_TRANSFORM_DIRECTION GWY_TYPE_TRIANGULATION GWY_TYPE_UNITS_PLACEMENT GWY_TYPE_VECTOR_LAYER GWY_TYPE_VISIBILITY_RESET_TYPE GWY_TYPE_VRULER GWY_TYPE_WATERSHED_STATE_TYPE GWY_TYPE_WINDOWING_TYPE GWY_TYPE_XY GWY_TYPE_XYZ GWY_VERSION_MAJOR GWY_VERSION_MINOR GWY_VERSION_STRING gwy_isinf gwy_isnan pow10 syn keyword gwyddionDeprecatedFunction gwy_3d_window_class_get_tooltips gwy_3d_window_class_set_tooltips gwy_app_get_tooltips gwy_cdline_get_param_default gwy_data_field_area_get_avg gwy_data_field_area_get_median gwy_data_field_area_get_min_max gwy_data_field_area_get_rms gwy_data_field_area_get_stats gwy_data_field_area_get_sum gwy_data_field_area_get_surface_area gwy_data_line_line_rotate gwy_data_window_class_get_tooltips gwy_data_window_class_set_tooltips gwy_dialog_prevent_delete_cb gwy_get_pango_ft2_font_map gwy_graph_window_class_get_tooltips gwy_graph_window_class_set_tooltips syn keyword gwyddionDeprecatedConstant GWY_TOOL_SWITCH_TOOL GWY_TOOL_SWITCH_WINDOW syn keyword gwyddionDeprecatedStruct GwyTipModelPreset diff -Nru gwyddion-2.62/data/Makefile.in gwyddion-2.63/data/Makefile.in --- gwyddion-2.62/data/Makefile.in 2022-11-03 09:56:37.000000000 +0000 +++ gwyddion-2.63/data/Makefile.in 2023-06-13 13:22:35.000000000 +0000 @@ -423,6 +423,8 @@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ZLIB = @ZLIB@ +ZZIP_CFLAGS = @ZZIP_CFLAGS@ +ZZIP_LIBS = @ZZIP_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ diff -Nru gwyddion-2.62/data/net.gwyddion.Gwyddion.appdata.xml gwyddion-2.63/data/net.gwyddion.Gwyddion.appdata.xml --- gwyddion-2.62/data/net.gwyddion.Gwyddion.appdata.xml 2022-11-03 09:42:04.000000000 +0000 +++ gwyddion-2.63/data/net.gwyddion.Gwyddion.appdata.xml 2023-06-13 13:07:43.000000000 +0000 @@ -29,7 +29,7 @@ - + http://gwyddion.net/ diff -Nru gwyddion-2.62/debian/changelog gwyddion-2.63/debian/changelog --- gwyddion-2.62/debian/changelog 2022-11-04 19:44:28.000000000 +0000 +++ gwyddion-2.63/debian/changelog 2023-07-12 13:20:43.000000000 +0000 @@ -1,3 +1,10 @@ +gwyddion (2.63-1) unstable; urgency=medium + + * New upstream version + * Standards-Version: 4.6.2 (routine-update) + + -- Andreas Tille Wed, 12 Jul 2023 15:20:43 +0200 + gwyddion (2.62-1) unstable; urgency=medium * New upstream version diff -Nru gwyddion-2.62/debian/control gwyddion-2.63/debian/control --- gwyddion-2.62/debian/control 2022-11-04 19:44:28.000000000 +0000 +++ gwyddion-2.63/debian/control 2023-07-12 13:20:43.000000000 +0000 @@ -15,7 +15,7 @@ gtk-doc-tools, debhelper Rules-Requires-Root: no -Standards-Version: 4.6.1 +Standards-Version: 4.6.2 Vcs-Browser: https://salsa.debian.org/med-team/gwyddion Vcs-Git: https://salsa.debian.org/med-team/gwyddion.git Homepage: http://gwyddion.net/ diff -Nru gwyddion-2.62/debian/source/include-binaries gwyddion-2.63/debian/source/include-binaries --- gwyddion-2.62/debian/source/include-binaries 2022-11-04 19:44:28.000000000 +0000 +++ gwyddion-2.63/debian/source/include-binaries 2023-07-12 13:20:43.000000000 +0000 @@ -10,3 +10,4 @@ debian/upstream/gwyddion-2.60.tar.xz.sig debian/upstream/gwyddion-2.61.tar.xz.sig debian/upstream/gwyddion-2.62.tar.xz.sig +debian/upstream/gwyddion-2.63.tar.xz.sig diff -Nru gwyddion-2.62/debian/upstream/gwyddion_2.63.orig.tar.xz.asc gwyddion-2.63/debian/upstream/gwyddion_2.63.orig.tar.xz.asc --- gwyddion-2.62/debian/upstream/gwyddion_2.63.orig.tar.xz.asc 1970-01-01 00:00:00.000000000 +0000 +++ gwyddion-2.63/debian/upstream/gwyddion_2.63.orig.tar.xz.asc 2023-07-12 13:20:43.000000000 +0000 @@ -0,0 +1,7 @@ +-----BEGIN PGP SIGNATURE----- + +iHAEABECADAWIQQmP5seweBSYcaJ2DsA/dHQYqB3MgUCZIhvfRIceWV0aUBnd3lk +ZGlvbi5uZXQACgkQAP3R0GKgdzJVHQCbBi2GA10QfxoqO7Q814pKeKwknsEAoIMI +hXCcSvZvvtObZ7Ut/24OzYSL +=J2Zo +-----END PGP SIGNATURE----- Binary files /tmp/tmpiliduqrh/ukFZjhflWX/gwyddion-2.62/debian/upstream/gwyddion-2.63.tar.xz.sig and /tmp/tmpiliduqrh/9zlBZuxLkq/gwyddion-2.63/debian/upstream/gwyddion-2.63.tar.xz.sig differ diff -Nru gwyddion-2.62/devel-docs/libgwyapp/html/api-index-2-62.html gwyddion-2.63/devel-docs/libgwyapp/html/api-index-2-62.html --- gwyddion-2.62/devel-docs/libgwyapp/html/api-index-2-62.html 2022-11-03 13:08:17.000000000 +0000 +++ gwyddion-2.63/devel-docs/libgwyapp/html/api-index-2-62.html 2023-06-13 13:24:17.000000000 +0000 @@ -7,6 +7,7 @@ + @@ -22,7 +23,7 @@ Home Prev - +Next

diff -Nru gwyddion-2.62/devel-docs/libgwyapp/html/api-index-2-63.html gwyddion-2.63/devel-docs/libgwyapp/html/api-index-2-63.html --- gwyddion-2.62/devel-docs/libgwyapp/html/api-index-2-63.html 1970-01-01 00:00:00.000000000 +0000 +++ gwyddion-2.63/devel-docs/libgwyapp/html/api-index-2-63.html 2023-06-13 13:24:17.000000000 +0000 @@ -0,0 +1,70 @@ + + + + +Index of new symbols in 2.63: Gwyddion Application Library Reference Manual + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff -Nru gwyddion-2.62/devel-docs/libgwyapp/html/api-index-all.html gwyddion-2.63/devel-docs/libgwyapp/html/api-index-all.html --- gwyddion-2.62/devel-docs/libgwyapp/html/api-index-all.html 2022-11-03 13:08:17.000000000 +0000 +++ gwyddion-2.63/devel-docs/libgwyapp/html/api-index-all.html 2023-06-13 13:24:17.000000000 +0000 @@ -864,6 +864,10 @@
+gwy_app_settings_merge_string, function in settings +
+
+
gwy_app_settings_save, function in settings
@@ -1041,6 +1045,10 @@
+gwy_create_graph_xrange_with_params, function in module utils +
+
+
gwy_create_inventory_model_without_default, function in module utils
@@ -1389,6 +1397,10 @@ gwy_help_show, function in help
+
+GwyHoldSelectionFlags, enum in GwyPlainTool +
+

L

gwy_log_get_enabled, function in log @@ -1693,6 +1705,10 @@
+gwy_param_def_add_hold_selection, function in GwyParamDef +
+
+
gwy_param_def_add_image_id, function in GwyParamDef
@@ -1869,6 +1885,10 @@
+gwy_param_table_append_hold_selection, function in GwyParamTable +
+
+
gwy_param_table_append_image_id, function in GwyParamTable
@@ -1913,6 +1933,10 @@
+gwy_param_table_append_range, function in GwyParamTable +
+
+
gwy_param_table_append_report, function in GwyParamTable
@@ -2165,6 +2189,10 @@
+gwy_plain_tool_enable_selection_holding, function in GwyPlainTool +
+
+
gwy_plain_tool_ensure_layer, function in GwyPlainTool
@@ -2173,6 +2201,10 @@
+gwy_plain_tool_hold_selection, function in GwyPlainTool +
+
+
gwy_plain_tool_log_add, function in GwyPlainTool
@@ -2492,6 +2524,10 @@
+GwyToolHeldSelection, struct in GwyPlainTool +
+
+
GwyToolResponseType, enum in GwyTool
diff -Nru gwyddion-2.62/devel-docs/libgwyapp/html/GwyDialog.html gwyddion-2.63/devel-docs/libgwyapp/html/GwyDialog.html --- gwyddion-2.62/devel-docs/libgwyapp/html/GwyDialog.html 2022-11-03 13:08:17.000000000 +0000 +++ gwyddion-2.63/devel-docs/libgwyapp/html/GwyDialog.html 2023-06-13 13:24:17.000000000 +0000 @@ -266,7 +266,7 @@

Beside GwyResponseType, the following GTK+ responses are recognised and handled automatically.

GTK_RESPONSE_OK or GTK_RESPONSE_ACCEPT creates an OK button which finishes the dialog with result GWY_DIALOG_PROCEED (or GWY_DIALOG_HAVE_RESULT if result has been calculated).

-

GTK_RESPONSE_CANCEL or GTK_RESPONSE_REJECT creates a Cancelbutton which finishes the dialog with result +

GTK_RESPONSE_CANCEL or GTK_RESPONSE_REJECT creates a Cancel button which finishes the dialog with result GWY_DIALOG_CANCEL.

Parameters

diff -Nru gwyddion-2.62/devel-docs/libgwyapp/html/GwyParamDef.html gwyddion-2.63/devel-docs/libgwyapp/html/GwyParamDef.html --- gwyddion-2.62/devel-docs/libgwyapp/html/GwyParamDef.html 2022-11-03 13:08:17.000000000 +0000 +++ gwyddion-2.63/devel-docs/libgwyapp/html/GwyParamDef.html 2023-06-13 13:24:17.000000000 +0000 @@ -266,6 +266,14 @@ void +gwy_param_def_add_hold_selection () + + + + +void + + gwy_param_def_add_seed () @@ -1834,6 +1842,50 @@

+

gwy_param_def_add_hold_selection ()

+
void
+gwy_param_def_add_hold_selection (GwyParamDef *pardef,
+                                  gint id,
+                                  const gchar *name,
+                                  const gchar *desc);
+

Defines a new flags parameter with values that are selection holding flags.

+

The values are flags from GwyHoldSelectionFlags. The default is zero.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

pardef

A set of parameter definitions.

 

id

Parameter identifier.

 

name

Parameter name for settings. It can be NULL for derived parameters not stored in settings.

 

desc

Parameter description which will be used for a label in GUI. Normally pass NULL for the default label.

 
+
+

Since: 2.63

+
+
+

gwy_param_def_add_seed ()

void
 gwy_param_def_add_seed (GwyParamDef *pardef,
diff -Nru gwyddion-2.62/devel-docs/libgwyapp/html/GwyParamTable.html gwyddion-2.63/devel-docs/libgwyapp/html/GwyParamTable.html
--- gwyddion-2.62/devel-docs/libgwyapp/html/GwyParamTable.html	2022-11-03 13:08:17.000000000 +0000
+++ gwyddion-2.63/devel-docs/libgwyapp/html/GwyParamTable.html	2023-06-13 13:24:17.000000000 +0000
@@ -630,6 +630,14 @@
 void
 
 
+gwy_param_table_append_range ()
+
+
+
+
+void
+
+
 gwy_param_table_append_unit_chooser ()
 
 
@@ -718,6 +726,14 @@
 void
 
 
+gwy_param_table_append_hold_selection ()
+
+
+
+
+void
+
+
 gwy_param_table_append_seed ()
 
 
@@ -1182,7 +1198,7 @@
 

No-reset parameters are untouched by gwy_param_table_reset(). Hence they are not reset by the GwyDialog reset response handler either. This can be useful for parameters that do not have static default values and need special treatment during the reset.

-

Some parameters are no-reset by default: data ids and mask colour.

+

Some parameters are no-reset by default: for instance data ids or mask colour.

Parameters

@@ -1802,7 +1818,7 @@ must be a boolean defined by gwy_param_def_add_boolean() or a predefined boolean.

The parameter identified by other_id must be added as combo box, data chooser, slider or radio button row (text -or image buttons). The check box will the be integrated in the control of that parameter. If you have a generic +or image buttons). The check box will then be integrated in the control of that parameter. If you have a generic enable/disable parameter with its own standalone checkbox use gwy_param_table_append_checkbox() instead (and set widget sensitivity using gwy_param_table_set_sensitive() in the “param-changed” signal handler).

@@ -3732,6 +3748,52 @@

+

gwy_param_table_append_range ()

+
void
+gwy_param_table_append_range (GwyParamTable *partable,
+                              gint id_from,
+                              gint id_to);
+

Adds a pair of numerical entries representing a range to a parameter table.

+

This is mostly useful for entering graph ranges numerically. For image ranges separate controls are preferred as +they allow pixel plus alternative real values.

+

The two parameters identified by id_from + and id_to + must be doubles and distinct. Parameter id_from + is considered +primary and should be used for referring to the control as a whole (for instance to make it insensitive), even +though for convenience both are passed directly to this function.

+

Use gwy_param_table_entry_set_value_format() to set the value format.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

partable

Set of parameter value controls.

 

id_from

Parameter identifier for the beginning.

 

id_to

Parameter identifier for the end.

 
+
+

Since: 2.63

+
+
+

gwy_param_table_append_unit_chooser ()

void
 gwy_param_table_append_unit_chooser (GwyParamTable *partable,
@@ -4247,6 +4309,40 @@
 

+

gwy_param_table_append_hold_selection ()

+
void
+gwy_param_table_append_hold_selection (GwyParamTable *partable,
+                                       gint id);
+

Adds a selection holding parameter to a parameter table.

+

The parameter identified by id + must be a selection holding flags parameter defined by +gwy_param_def_add_hold_selection().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

partable

Set of parameter value controls.

 

id

Parameter identifier.

 
+
+

Since: 2.63

+
+
+

gwy_param_table_append_seed ()

void
 gwy_param_table_append_seed (GwyParamTable *partable,
diff -Nru gwyddion-2.62/devel-docs/libgwyapp/html/GwyPlainTool.html gwyddion-2.63/devel-docs/libgwyapp/html/GwyPlainTool.html
--- gwyddion-2.62/devel-docs/libgwyapp/html/GwyPlainTool.html	2022-11-03 13:08:17.000000000 +0000
+++ gwyddion-2.63/devel-docs/libgwyapp/html/GwyPlainTool.html	2023-06-13 13:24:17.000000000 +0000
@@ -97,6 +97,22 @@
 
 
 
+void
+
+
+gwy_plain_tool_hold_selection ()
+
+
+
+
+void
+
+
+gwy_plain_tool_enable_selection_holding ()
+
+
+
+
 GwyRectSelectionLabels *
 
 
@@ -159,10 +175,18 @@
 GwyPlainToolChanged
 
 
+enum
+GwyHoldSelectionFlags
+
+
  
 GwyRectSelectionLabels
 
 
+ 
+GwyToolHeldSelection
+
+
 struct
 GwyPlainTool
 
@@ -421,8 +445,7 @@
 
void
 gwy_plain_tool_enable_object_deletion (GwyPlainTool *plain_tool,
                                        GtkTreeView *treeview);
-

Enables deletion of selection objects by presssing Delete in a tree view -diplaying them.

+

Enables deletion of selection objects by presssing Delete in a tree view diplaying them.

Parameters

@@ -449,6 +472,71 @@
+

gwy_plain_tool_hold_selection ()

+
void
+gwy_plain_tool_hold_selection (GwyPlainTool *plain_tool,
+                               GwyHoldSelectionFlags hold_flags);
+

Possibly transfers the selection to a new image upon plain tool data switch.

+

This function should be called from data_switched() class method in a tool after setting up the layer and +selection. If the selection should be transferred to the new image according to hold_flags + the previous (held) +selection will replace whatever selection might be there currently. Otherwise the new image's selection is +preserved (and in fact held itself).

+

Selection holding must be enabled in tool instance init function using gwy_plain_tool_enable_selection_holding().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

plain_tool

A plain tool.

 

hold_flags

Flags controlling when the selection is held (transferred to another image).

 
+
+

Since: 2.63

+
+
+
+

gwy_plain_tool_enable_selection_holding ()

+
void
+gwy_plain_tool_enable_selection_holding
+                               (GwyPlainTool *plain_tool);
+

Enables selection holding for a plain tool.

+

Selection holding means that, if certain conditions are satisfied, upon data switch the tool transfers the current +selection to the new image, replacing whatever selection might be there.

+

This function should be called from the instance init function.

+

Holding is currently unsupported for tools which use multiple selection types.

+
+

Parameters

+
+++++ + + + + + +

plain_tool

A plain tool.

 
+
+

Since: 2.63

+
+
+

gwy_rect_selection_labels_new ()

GwyRectSelectionLabels *
 gwy_rect_selection_labels_new (gboolean none_is_full,
@@ -725,11 +813,59 @@
 

+

enum GwyHoldSelectionFlags

+

Flags controlling the selection holding behaviour of tools.

+

Although any combination of flags is valid, this is mainly so that user's choice is not reset. For any holding to +be done at all the GWY_HOLD_SELECTION_HOLD flag must be set. If it is unset then GWY_HOLD_SELECTION_OVERWRITE +and GWY_HOLD_SELECTION_CLEAR do not matter. Similarly, for GWY_HOLD_SELECTION_CLEAR has any effect only if +overwriting is enabled by setting GWY_HOLD_SELECTION_OVERWRITE.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

GWY_HOLD_SELECTION_HOLD

+

Selections are held (transferred to the new image).

+
 

GWY_HOLD_SELECTION_OVERWRITE

+

Existing selections on the new image is replaced.

+
 

GWY_HOLD_SELECTION_CLEAR

+

If the current image has no selection the selection on the new image is cleared.

+
 
+
+

Since: 2.63

+
+
+

GwyRectSelectionLabels

typedef struct _GwyRectSelectionLabels GwyRectSelectionLabels;

+

GwyToolHeldSelection

+
typedef struct _GwyToolHeldSelection GwyToolHeldSelection;
+
+
+

struct GwyPlainTool

struct GwyPlainTool;
diff -Nru gwyddion-2.62/devel-docs/libgwyapp/html/index.html gwyddion-2.63/devel-docs/libgwyapp/html/index.html --- gwyddion-2.62/devel-docs/libgwyapp/html/index.html 2022-11-03 13:08:17.000000000 +0000 +++ gwyddion-2.63/devel-docs/libgwyapp/html/index.html 2023-06-13 13:24:17.000000000 +0000 @@ -15,7 +15,7 @@

- For Gwyddion 2.62. + For Gwyddion 2.63. The latest version of this document can be found on-line at http://gwyddion.net/documentation/libgwyapp/.

@@ -146,6 +146,7 @@
Index of new symbols in 2.60
Index of new symbols in 2.61
Index of new symbols in 2.62
+
Index of new symbols in 2.63