gimp/libgimp/gimpresolutionentry-private.h
Jehan 3a3f67ef95 libgimp: re-promote GimpResolutionEntry in its own file and improve its API.
The code comes from plug-ins/common/file-pdf-load.c and apparently it used to be
in libgimpwidgets (very long ago). I'm copying it to its own file and massively
improve the code (depending on property binding which makes the behavior much
more robust).

Still I left it as private because I don't want to say the API is finale without
having tested it a bit more. But eventually we should make it public for
plug-ins to use it directly too. When this happens, it should get back to
libgimpwidgets.
2024-04-24 01:16:46 +02:00

80 lines
4.2 KiB
C

/* GIMP - The GNU Image Manipulation Program
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
*
* gimpresolutionentry.h
* Copyright (C) 2024 Jehan
*
* 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 3 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, see <https://www.gnu.org/licenses/>.
*/
#if !defined (__GIMP_UI_H_INSIDE__) && !defined (GIMP_COMPILATION)
#error "Only <libgimp/gimpui.h> can be included directly."
#endif
#ifndef __GIMP_RESOLUTION_ENTRY__
#define __GIMP_RESOLUTION_ENTRY__
G_BEGIN_DECLS
/* For information look into the C source or the html documentation */
/*
* This widget was initially part of libgimpwidgets. Then it got removed and
* moved as private code to file-pdf-load plug-in.
*
* I'm adding it back for GIMP 3 release as its own code but not making it
* public (only to be used by GimpVectorLoadProcedure so far) so that we don't
* have to make sure the API is really right.
*
* TODO: we want to eventually get this back to public API in libgimpwidgets,
* with a much nicer API and also adding a property widget function.
*/
#define GIMP_TYPE_RESOLUTION_ENTRY (gimp_resolution_entry_get_type ())
G_DECLARE_FINAL_TYPE (GimpResolutionEntry, gimp_resolution_entry, GIMP, RESOLUTION_ENTRY, GtkGrid)
typedef struct _GimpResolutionEntry GimpResolutionEntry;
GtkWidget * gimp_prop_resolution_entry_new (GObject *config,
const gchar *width_prop,
const gchar *height_prop,
const gchar *ppi_prop,
const gchar *unit_prop);
GtkWidget * gimp_resolution_entry_new (const gchar *width_label,
gint width,
const gchar *height_label,
gint height,
const gchar *res_label,
gdouble pixel_density,
GimpUnit display_unit);
void gimp_resolution_entry_set_width (GimpResolutionEntry *entry,
gint width);
void gimp_resolution_entry_set_height (GimpResolutionEntry *entry,
gint height);
void gimp_resolution_entry_set_pixel_density (GimpResolutionEntry *entry,
gdouble ppi);
void gimp_resolution_entry_set_unit (GimpResolutionEntry *entry,
GimpUnit unit);
void gimp_resolution_entry_set_keep_ratio (GimpResolutionEntry *entry,
gboolean keep_ratio);
gint gimp_resolution_entry_get_width (GimpResolutionEntry *entry);
gint gimp_resolution_entry_get_height (GimpResolutionEntry *entry);
gdouble gimp_resolution_entry_get_density (GimpResolutionEntry *entry);
GimpUnit gimp_resolution_entry_get_unit (GimpResolutionEntry *entry);
gboolean gimp_resolution_entry_get_keep_ratio (GimpResolutionEntry *entry);
G_END_DECLS
#endif /* __GIMP_RESOLUTION_ENTRY__ */