/* PIKA - Photo and Image Kooker Application
 * a rebranding of The GNU Image Manipulation Program (created with heckimp)
 * A derived work which may be trivial. However, any changes may be (C)2023 by Aldercone Studio
 *
 * Original copyright, applying to most contents (license remains unchanged): 
 * Copyright (C) 1995 Spencer Kimball and Peter Mattis
 *
 * PikaDisplayConfig class
 * Copyright (C) 2001  Sven Neumann <sven@gimp.org>
 *
 * 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/>.
 */

#ifndef __PIKA_DISPLAY_CONFIG_H__
#define __PIKA_DISPLAY_CONFIG_H__

#include "config/pikacoreconfig.h"


#define PIKA_CONFIG_DEFAULT_IMAGE_TITLE_FORMAT  "%D*%f-%p.%i (%t, %o, %L) %wx%h"
#define PIKA_CONFIG_DEFAULT_IMAGE_STATUS_FORMAT "%n (%m)"


#define PIKA_TYPE_DISPLAY_CONFIG            (pika_display_config_get_type ())
#define PIKA_DISPLAY_CONFIG(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), PIKA_TYPE_DISPLAY_CONFIG, PikaDisplayConfig))
#define PIKA_DISPLAY_CONFIG_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), PIKA_TYPE_DISPLAY_CONFIG, PikaDisplayConfigClass))
#define PIKA_IS_DISPLAY_CONFIG(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PIKA_TYPE_DISPLAY_CONFIG))
#define PIKA_IS_DISPLAY_CONFIG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PIKA_TYPE_DISPLAY_CONFIG))


typedef struct _PikaDisplayConfigClass PikaDisplayConfigClass;

struct _PikaDisplayConfig
{
  PikaCoreConfig      parent_instance;

  PikaCheckSize       transparency_size;
  PikaCheckType       transparency_type;
  PikaRGB             transparency_custom_color1;
  PikaRGB             transparency_custom_color2;
  gint                snap_distance;
  gint                marching_ants_speed;
  gboolean            resize_windows_on_zoom;
  gboolean            resize_windows_on_resize;
  gboolean            default_show_all;
  gboolean            default_dot_for_dot;
  gboolean            initial_zoom_to_fit;
  PikaDragZoomMode    drag_zoom_mode;
  gboolean            drag_zoom_speed;
  PikaCursorMode      cursor_mode;
  gboolean            cursor_updating;
  gboolean            show_brush_outline;
  gboolean            snap_brush_outline;
  gboolean            show_paint_tool_cursor;
  gchar              *image_title_format;
  gchar              *image_status_format;
  gdouble             monitor_xres;
  gdouble             monitor_yres;
  gboolean            monitor_res_from_gdk;
  PikaViewSize        nav_preview_size;
  PikaDisplayOptions *default_view;
  PikaDisplayOptions *default_fullscreen_view;
  gboolean            activate_on_focus;
  PikaSpaceBarAction  space_bar_action;
  PikaZoomQuality     zoom_quality;
  gboolean            use_event_history;

  GObject            *modifiers_manager;
};

struct _PikaDisplayConfigClass
{
  PikaCoreConfigClass  parent_class;
};


GType  pika_display_config_get_type (void) G_GNUC_CONST;


#endif /* PIKA_DISPLAY_CONFIG_H__ */
