/* LIBPIKA - The PIKA Library
 * Copyright (C) 1995-1997 Peter Mattis and Spencer Kimball
 *
 * This library is free software: you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 3 of the License, or (at your option) any later version.
 *
 * This library 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
 * Library General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library.  If not, see
 * <https://www.gnu.org/licenses/>.
 */

#ifndef __PIKA_WIDGETS_ENUMS_H__
#define __PIKA_WIDGETS_ENUMS_H__


G_BEGIN_DECLS

/* For information look into the C source or the html documentation */


/**
 * PikaAspectType:
 * @PIKA_ASPECT_SQUARE:    it's a 1:1 square
 * @PIKA_ASPECT_PORTRAIT:  it's higher than it's wide
 * @PIKA_ASPECT_LANDSCAPE: it's wider than it's high
 *
 * Aspect ratios.
 **/
#define PIKA_TYPE_ASPECT_TYPE (pika_aspect_type_get_type ())

GType pika_aspect_type_get_type (void) G_GNUC_CONST;

typedef enum
{
  PIKA_ASPECT_SQUARE,    /*< desc="Square"    >*/
  PIKA_ASPECT_PORTRAIT,  /*< desc="Portrait"  >*/
  PIKA_ASPECT_LANDSCAPE  /*< desc="Landscape" >*/
} PikaAspectType;


/**
 * PikaChainPosition:
 * @PIKA_CHAIN_TOP:    the chain is on top
 * @PIKA_CHAIN_LEFT:   the chain is to the left
 * @PIKA_CHAIN_BOTTOM: the chain is on bottom
 * @PIKA_CHAIN_RIGHT:  the chain is to the right
 *
 * Possible chain positions for #PikaChainButton.
 **/
#define PIKA_TYPE_CHAIN_POSITION (pika_chain_position_get_type ())

GType pika_chain_position_get_type (void) G_GNUC_CONST;

typedef enum
{
  PIKA_CHAIN_TOP,
  PIKA_CHAIN_LEFT,
  PIKA_CHAIN_BOTTOM,
  PIKA_CHAIN_RIGHT
} PikaChainPosition;


/**
 * PikaColorAreaType:
 * @PIKA_COLOR_AREA_FLAT:         don't display transparency
 * @PIKA_COLOR_AREA_SMALL_CHECKS: display transparency using small checks
 * @PIKA_COLOR_AREA_LARGE_CHECKS: display transparency using large checks
 *
 * The types of transparency display for #PikaColorArea.
 **/
#define PIKA_TYPE_COLOR_AREA_TYPE (pika_color_area_type_get_type ())

GType pika_color_area_type_get_type (void) G_GNUC_CONST;

typedef enum
{
  PIKA_COLOR_AREA_FLAT = 0,
  PIKA_COLOR_AREA_SMALL_CHECKS,
  PIKA_COLOR_AREA_LARGE_CHECKS
} PikaColorAreaType;


/**
 * PikaColorSelectorChannel:
 * @PIKA_COLOR_SELECTOR_HUE:            the hue channel
 * @PIKA_COLOR_SELECTOR_SATURATION:     the saturation channel
 * @PIKA_COLOR_SELECTOR_VALUE:          the value channel
 * @PIKA_COLOR_SELECTOR_RED:            the red channel
 * @PIKA_COLOR_SELECTOR_GREEN:          the green channel
 * @PIKA_COLOR_SELECTOR_BLUE:           the blue channel
 * @PIKA_COLOR_SELECTOR_ALPHA:          the alpha channel
 * @PIKA_COLOR_SELECTOR_LCH_LIGHTNESS:  the lightness channel
 * @PIKA_COLOR_SELECTOR_LCH_CHROMA:     the chroma channel
 * @PIKA_COLOR_SELECTOR_LCH_HUE:        the hue channel
 *
 * An enum to specify the types of color channels edited in
 * #PikaColorSelector widgets.
 **/
#define PIKA_TYPE_COLOR_SELECTOR_CHANNEL (pika_color_selector_channel_get_type ())

GType pika_color_selector_channel_get_type (void) G_GNUC_CONST;

typedef enum
{
  PIKA_COLOR_SELECTOR_HUE,           /*< desc="_H", help="HSV Hue"        >*/
  PIKA_COLOR_SELECTOR_SATURATION,    /*< desc="_S", help="HSV Saturation" >*/
  PIKA_COLOR_SELECTOR_VALUE,         /*< desc="_V", help="HSV Value"      >*/
  PIKA_COLOR_SELECTOR_RED,           /*< desc="_R", help="Red"            >*/
  PIKA_COLOR_SELECTOR_GREEN,         /*< desc="_G", help="Green"          >*/
  PIKA_COLOR_SELECTOR_BLUE,          /*< desc="_B", help="Blue"           >*/
  PIKA_COLOR_SELECTOR_ALPHA,         /*< desc="_A", help="Alpha"          >*/
  PIKA_COLOR_SELECTOR_LCH_LIGHTNESS, /*< desc="_L", help="LCh Lightness"  >*/
  PIKA_COLOR_SELECTOR_LCH_CHROMA,    /*< desc="_C", help="LCh Chroma"     >*/
  PIKA_COLOR_SELECTOR_LCH_HUE        /*< desc="_h", help="LCh Hue"        >*/
} PikaColorSelectorChannel;


/**
 * PikaColorSelectorModel:
 * @PIKA_COLOR_SELECTOR_MODEL_RGB: RGB color model
 * @PIKA_COLOR_SELECTOR_MODEL_LCH: CIE LCh color model
 * @PIKA_COLOR_SELECTOR_MODEL_HSV: HSV color model
 *
 * An enum to specify the types of color spaces edited in
 * #PikaColorSelector widgets.
 *
 * Since: 2.10
 **/
#define PIKA_TYPE_COLOR_SELECTOR_MODEL (pika_color_selector_model_get_type ())

GType pika_color_selector_model_get_type (void) G_GNUC_CONST;

typedef enum
{
  PIKA_COLOR_SELECTOR_MODEL_RGB, /*< desc="RGB", help="RGB color model"     >*/
  PIKA_COLOR_SELECTOR_MODEL_LCH, /*< desc="LCH", help="CIE LCh color model" >*/
  PIKA_COLOR_SELECTOR_MODEL_HSV  /*< desc="HSV", help="HSV color model"     >*/
} PikaColorSelectorModel;


/**
 * PikaIntComboBoxLayout:
 * @PIKA_INT_COMBO_BOX_LAYOUT_ICON_ONLY:   show icons only
 * @PIKA_INT_COMBO_BOX_LAYOUT_ABBREVIATED: show icons and abbreviated labels,
 *                                         when available
 * @PIKA_INT_COMBO_BOX_LAYOUT_FULL:        show icons and full labels
 *
 * Possible layouts for #PikaIntComboBox.
 *
 * Since: 2.10
 **/
#define PIKA_TYPE_INT_COMBO_BOX_LAYOUT (pika_int_combo_box_layout_get_type ())

GType pika_int_combo_box_layout_get_type (void) G_GNUC_CONST;

typedef enum
{
  PIKA_INT_COMBO_BOX_LAYOUT_ICON_ONLY,
  PIKA_INT_COMBO_BOX_LAYOUT_ABBREVIATED,
  PIKA_INT_COMBO_BOX_LAYOUT_FULL
} PikaIntComboBoxLayout;


/**
 * PikaPageSelectorTarget:
 * @PIKA_PAGE_SELECTOR_TARGET_LAYERS: import as layers of one image
 * @PIKA_PAGE_SELECTOR_TARGET_IMAGES: import as separate images
 *
 * Import targets for #PikaPageSelector.
 **/
#define PIKA_TYPE_PAGE_SELECTOR_TARGET (pika_page_selector_target_get_type ())

GType pika_page_selector_target_get_type (void) G_GNUC_CONST;

typedef enum
{
  PIKA_PAGE_SELECTOR_TARGET_LAYERS, /*< desc="Layers" >*/
  PIKA_PAGE_SELECTOR_TARGET_IMAGES  /*< desc="Images" >*/
} PikaPageSelectorTarget;


/**
 * PikaSizeEntryUpdatePolicy:
 * @PIKA_SIZE_ENTRY_UPDATE_NONE:       the size entry's meaning is up to the user
 * @PIKA_SIZE_ENTRY_UPDATE_SIZE:       the size entry displays values
 * @PIKA_SIZE_ENTRY_UPDATE_RESOLUTION: the size entry displays resolutions
 *
 * Update policies for #PikaSizeEntry.
 **/
#define PIKA_TYPE_SIZE_ENTRY_UPDATE_POLICY (pika_size_entry_update_policy_get_type ())

GType pika_size_entry_update_policy_get_type (void) G_GNUC_CONST;

typedef enum
{
  PIKA_SIZE_ENTRY_UPDATE_NONE       = 0,
  PIKA_SIZE_ENTRY_UPDATE_SIZE       = 1,
  PIKA_SIZE_ENTRY_UPDATE_RESOLUTION = 2
} PikaSizeEntryUpdatePolicy;


/**
 * PikaZoomType:
 * @PIKA_ZOOM_IN:       zoom in
 * @PIKA_ZOOM_OUT:      zoom out
 * @PIKA_ZOOM_IN_MORE:  zoom in a lot
 * @PIKA_ZOOM_OUT_MORE: zoom out a lot
 * @PIKA_ZOOM_IN_MAX:   zoom in as far as possible
 * @PIKA_ZOOM_OUT_MAX:  zoom out as far as possible
 * @PIKA_ZOOM_TO:       zoom to a specific zoom factor
 * @PIKA_ZOOM_SMOOTH:   zoom smoothly from a smooth scroll event
 * @PIKA_ZOOM_PINCH:    zoom smoothly from a touchpad pinch gesture
 *
 * the zoom types for #PikaZoomModel.
 **/
#define PIKA_TYPE_ZOOM_TYPE (pika_zoom_type_get_type ())

GType pika_zoom_type_get_type (void) G_GNUC_CONST;

typedef enum
{
  PIKA_ZOOM_IN,        /*< desc="Zoom in"  >*/
  PIKA_ZOOM_OUT,       /*< desc="Zoom out" >*/
  PIKA_ZOOM_IN_MORE,   /*< skip >*/
  PIKA_ZOOM_OUT_MORE,  /*< skip >*/
  PIKA_ZOOM_IN_MAX,    /*< skip >*/
  PIKA_ZOOM_OUT_MAX,   /*< skip >*/
  PIKA_ZOOM_TO,        /*< skip >*/
  PIKA_ZOOM_SMOOTH,    /*< skip >*/
  PIKA_ZOOM_PINCH,     /*< skip >*/
} PikaZoomType;


G_END_DECLS

#endif  /* __PIKA_WIDGETS_ENUMS_H__ */
