| Top |  |  |  |  | 
GwyDataLine represents 1D data arrays in Gwyddion. It is used for most of the data processing functions connected with 1D data, graphs, etc.
#define gwy_data_line_duplicate(data_line)
Convenience macro doing gwy_serializable_duplicate() with all the necessary
typecasting.
#define gwy_data_line_assign(dest, source)
Convenience macro making one data line identical to another.
This is just a gwy_serializable_clone() wrapper with all the necessary
typecasting.
Since: 2.52
GwyDataLine * gwy_data_line_new (gint res,gdouble real,gboolean nullme);
Creates a new data line.
| res | Resolution, i.e., the number of samples. | |
| real | Real physical dimension. | |
| nullme | Whether the data line should be initialized to zeroes. If  | 
GwyDataLine * gwy_data_line_new_alike (GwyDataLine *model,gboolean nullme);
Creates a new data line similar to an existing one.
Use gwy_data_line_duplicate() if you want to copy a data line including
data.
| model | A data line to take resolutions and units from. | |
| nullme | Whether the data line should be initialized to zeroes. If  | 
void
gwy_data_line_data_changed (GwyDataLine *data_line);
Emits signal "data_changed" on a data line.
GwyDataLine * gwy_data_line_new_resampled (GwyDataLine *data_line,gint res,GwyInterpolationType interpolation);
Creates a new data line by resampling an existing one.
This method is equivalent to gwy_data_line_duplicate() followed by
gwy_data_line_resample(), but it is more efficient.
| data_line | A data line. | |
| res | Desired resolution. | |
| interpolation | Interpolation method to use. | 
Since: 2.1
void gwy_data_line_resample (GwyDataLine *data_line,gint res,GwyInterpolationType interpolation);
Resamples a data line.
In other words changes the size of one dimensional field related with data line. The original values are used for resampling using a requested interpolation alorithm.
void gwy_data_line_resize (GwyDataLine *data_line,gint from,gint to);
Resizes (crops) a data line.
Extracts a part of data line in range from
..(to
-1), recomputing real
sizes.
GwyDataLine * gwy_data_line_part_extract (GwyDataLine *data_line,gint from,gint len);
Extracts a part of a data line to a new data line.
void gwy_data_line_copy (GwyDataLine *data_line,GwyDataLine *target);
Copies the contents of a data line to another already allocated data line of the same size.
gwy_data_field_copy(), it copies
only data.  It will be probably changed.gdouble *
gwy_data_line_get_data (GwyDataLine *data_line);
Gets the raw data buffer of a data line.
The returned buffer is not guaranteed to be valid through whole data
line life time.  Some function may change it, most notably
gwy_data_line_resize() and gwy_data_line_resample().
This function invalidates any cached information, use
gwy_data_line_get_data_const() if you are not going to change the data.
const gdouble *
gwy_data_line_get_data_const (GwyDataLine *data_line);
Gets the raw data buffer of a data line, read-only.
The returned buffer is not guaranteed to be valid through whole data
line life time.  Some function may change it, most notably
gwy_data_line_resize() and gwy_data_line_resample().
Use gwy_data_line_get_data() if you want to change the data.
gint
gwy_data_line_get_res (GwyDataLine *data_line);
Gets the number of data points in a data line.
gdouble
gwy_data_line_get_real (GwyDataLine *data_line);
Gets the physical size of a data line.
void gwy_data_line_set_real (GwyDataLine *data_line,gdouble real);
Sets the real data line size.
gdouble
gwy_data_line_get_offset (GwyDataLine *data_line);
Gets the offset of data line origin.
void gwy_data_line_set_offset (GwyDataLine *data_line,gdouble offset);
Sets the offset of a data line origin.
Note offsets don't affect any calculation, nor functions like
gwy_data_line_rtoi().
gdouble
gwy_data_line_get_dx (GwyDataLine *data_line);
Gets the sample distance (pixel size) of a data line in real units.
The result is the same as gwy_data_line_get_real(data_line)/gwy_data_line_get_res(data_line).
Since: 2.52
GwySIUnit *
gwy_data_line_get_si_unit_x (GwyDataLine *data_line);
Returns lateral SI unit of a data line.
GwySIUnit *
gwy_data_line_get_si_unit_y (GwyDataLine *data_line);
Returns value SI unit of a data line.
void gwy_data_line_set_si_unit_x (GwyDataLine *data_line,GwySIUnit *si_unit);
Sets the SI unit corresponding to the lateral (X) dimension of a data line.
It does not assume a reference on si_unit
, instead it adds its own
reference.
void gwy_data_line_set_si_unit_y (GwyDataLine *data_line,GwySIUnit *si_unit);
Sets the SI unit corresponding to the "height" (Y) dimension of a data line.
It does not assume a reference on si_unit
, instead it adds its own
reference.
GwySIValueFormat * gwy_data_line_get_value_format_x (GwyDataLine *data_line,GwySIUnitFormatStyle style,GwySIValueFormat *format);
Finds value format good for displaying coordinates of a data line.
| data_line | A data line. | |
| style | Unit format style. | |
| format | A SI value format to modify, or  | 
 The value format.  If format
is NULL, a newly allocated format
is returned, otherwise (modified) format
itself is returned.
GwySIValueFormat * gwy_data_line_get_value_format_y (GwyDataLine *data_line,GwySIUnitFormatStyle style,GwySIValueFormat *format);
Finds value format good for displaying values of a data line.
Note this functions searches for minimum and maximum value in data_line
,
therefore it's relatively slow.
| data_line | A data line. | |
| style | Unit format style. | |
| format | A SI value format to modify, or  | 
 The value format.  If format
is NULL, a newly allocated format
is returned, otherwise (modified) format
itself is returned.
void gwy_data_line_copy_units (GwyDataLine *data_line,GwyDataLine *target);
Sets lateral and value units of a data line to match another data line.
Since: 2.49
gdouble gwy_data_line_itor (GwyDataLine *data_line,gdouble pixpos);
Transforms pixel coordinate to real (physical) coordinate.
That is it maps range [0..resolution] to range [0..real-size].  It is not
suitable for conversion of matrix indices to physical coordinates, you
have to use gwy_data_line_itor(data_line
, pixpos
 + 0.5) for that.
gdouble gwy_data_line_rtoi (GwyDataLine *data_line,gdouble realpos);
Transforms real (physical) coordinate to pixel coordinate.
That is it maps range [0..real-size] to range [0..resolution].
gdouble gwy_data_line_get_val (GwyDataLine *data_line,gint i);
Gets value at given position in a data line.
Do not access data with this function inside inner loops, it's slow.
Get raw data buffer with gwy_data_line_get_data_const() and access it
directly instead.
void gwy_data_line_set_val (GwyDataLine *data_line,gint i,gdouble value);
Sets the value at given position in a data line.
Do not set data with this function inside inner loops, it's slow.  Get raw
data buffer with gwy_data_line_get_data() and write to it directly instead.
gdouble gwy_data_line_get_dval (GwyDataLine *data_line,gdouble x,gint interpolation);
Gets interpolated value at arbitrary data line point indexed by pixel coordinates.
Note pixel values are centered in intervals [j
, j
+1], so to get the same
value as gwy_data_line_get_val(data_line
, j
) returns,
it's necessary to add 0.5:
gwy_data_line_get_dval(data_line
, j
+0.5, interpolation
).
See also gwy_data_line_get_dval_real() that does the same, but takes
real coordinates.
gdouble gwy_data_line_get_dval_real (GwyDataLine *data_line,gdouble x,gint interpolation);
Gets interpolated value at arbitrary data line point indexed by real coordinates.
See also gwy_data_line_get_dval() for interpolation explanation.
void gwy_data_line_invert (GwyDataLine *data_line,gboolean x,gboolean z);
Reflects and/or inverts a data line.
In the case of value reflection, it's inverted about mean value.
void
gwy_data_line_clear (GwyDataLine *data_line);
Fills a data line with zeroes.
void gwy_data_line_fill (GwyDataLine *data_line,gdouble value);
Fills a data line with specified value.
void gwy_data_line_multiply (GwyDataLine *data_line,gdouble value);
Multiplies all values in a data line with a specified value.
void gwy_data_line_add (GwyDataLine *data_line,gdouble value);
Adds a specified value to all values in a data line.
void gwy_data_line_part_clear (GwyDataLine *data_line,gint from,gint to);
Fills a data line part with zeroes.
void gwy_data_line_part_fill (GwyDataLine *data_line,gint from,gint to,gdouble value);
Fills specified part of data line with specified number
void gwy_data_line_part_multiply (GwyDataLine *data_line,gint from,gint to,gdouble value);
Multiplies all values in a part of data line by specified value.
void gwy_data_line_part_add (GwyDataLine *data_line,gint from,gint to,gdouble value);
Adds specified value to all values in a part of a data line.
void gwy_data_line_sum_lines (GwyDataLine *result,GwyDataLine *operand1,GwyDataLine *operand2);
Sums two data lines.
| result | A data line to put the result to.  May be one of  | |
| operand1 | First data line operand. | |
| operand2 | Second data line operand. | 
Since: 2.56
void gwy_data_line_subtract_lines (GwyDataLine *result,GwyDataLine *operand1,GwyDataLine *operand2);
Subtracts two data lines.
| result | A data line to put the result to.  May be one of  | |
| operand1 | First data line operand. | |
| operand2 | Second data line operand. | 
Since: 2.56
void gwy_data_line_multiply_lines (GwyDataLine *result,GwyDataLine *operand1,GwyDataLine *operand2);
Multiplies two data lines.
| result | A data line to put the result to.  May be one of  | |
| operand1 | First data line operand. | |
| operand2 | Second data line operand. | 
Since: 2.56
void gwy_data_line_linear_combination (GwyDataLine *result,gdouble coeff1,GwyDataLine *operand1,gdouble coeff2,GwyDataLine *operand2,gdouble constant);
Computes point-wise general linear combination of two data lines.
| result | A data line to put the result to.  May be one of  | |
| constant | Constant term to add to the result. | |
| operand1 | First data line operand. | |
| coeff1 | Factor to multiply the first operand with. | |
| operand2 | Second data line operand. | |
| coeff2 | Factor to multiply the second operand with. | 
Since: 2.61
gint gwy_data_line_threshold (GwyDataLine *data_line,gdouble threshval,gdouble bottom,gdouble top);
Sets all the values to bottom
 or top
 value
depending on whether the original values are
below or above threshold
 value
gint gwy_data_line_part_threshold (GwyDataLine *data_line,gint from,gint to,gdouble threshval,gdouble bottom,gdouble top);
Sets all the values within interval to bottom
 or top
 value
depending on whether the original values are
below or above threshold
 value.
void gwy_data_line_get_line_coeffs (GwyDataLine *data_line,gdouble *av,gdouble *bv);
Finds line leveling coefficients.
The coefficients can be used for line leveling using relation data[i] := data[i] - (av + bv*i);
void gwy_data_line_line_level (GwyDataLine *data_line,gdouble av,gdouble bv);
Performs line leveling.
See gwy_data_line_get_line_coeffs() for deails.
void gwy_data_line_rotate (GwyDataLine *data_line,gdouble angle,GwyInterpolationType interpolation);
Performs line rotation.
This is operation similar to leveling, but it does not change the angles between line segments (on the other hand it introduces other deformations due to discretization).
| data_line | A data line. | |
| angle | Angle of rotation (in radians), counterclockwise. | |
| interpolation | Interpolation method to use (can be only of two-point type). | 
Since: 2.7
void gwy_data_line_line_rotate (GwyDataLine *data_line,gdouble angle,gint interpolation);
gwy_data_line_line_rotate is deprecated and should not be used in newly-written code.
Performs line rotation.
Use gwy_data_line_rotate() instead.
gdouble gwy_data_line_get_der (GwyDataLine *data_line,gint i);
Computes central derivaltion at given index in a data line.
gdouble * gwy_data_line_part_fit_polynom (GwyDataLine *data_line,gint n,gdouble *coeffs,gint from,gint to);
Fits a polynomial through a part of a data line.
Please see gwy_data_line_fit_polynom() for more details.
| data_line | A data line. | |
| n | Polynom degree. | |
| coeffs | An array of size  | |
| from | Index the line part starts at. | |
| to | Index the line part ends at + 1. | 
 The coefficients of the polynomial (coeffs
when it was not NULL,
otherwise a newly allocated array).
gdouble * gwy_data_line_fit_polynom (GwyDataLine *data_line,gint n,gdouble *coeffs);
Fits a polynomial through a data line.
Note n
 is polynomial degree, so the size of coeffs
 is n
+1.  X-values
are indices in the data line.
For polynomials of degree 0 and 1 it's better to use gwy_data_line_get_avg()
and gwy_data_line_get_line_coeffs() because they are faster.
| data_line | A data line. | |
| n | Polynom degree. | |
| coeffs | An array of size  | 
 The coefficients of the polynomial (coeffs
when it was not NULL,
otherwise a newly allocated array).
void gwy_data_line_part_subtract_polynom (GwyDataLine *data_line,gint n,const gdouble *coeffs,gint from,gint to);
Subtracts a polynomial from a part of a data line.
void gwy_data_line_subtract_polynom (GwyDataLine *data_line,gint n,const gdouble *coeffs);
Subtracts a polynomial from a data line.
void
gwy_data_line_cumulate (GwyDataLine *data_line);
Transforms a distribution in a data line to cummulative distribution.
Each element becomes sum of all previous elements in the line, including self.
void
gwy_data_line_sqrt (GwyDataLine *data_line);
Applies sqrt() to each element in a data line.
struct GwyDataLine;
The GwyDataLine struct contains private data only and should be accessed using the functions below.
“data-changed” signalvoid user_function (GwyDataLine *gwydataline, gpointer user_data)
The ::data-changed signal is never emitted by data line itself. It is intended as a means to notify others data line users they should update themselves.
| gwydataline | The GwyDataLine which received the signal. | |
| user_data | user data set when the signal handler was connected. | 
Flags: Run First