Sophie

Sophie

distrib > Mandriva > 2011.0 > i586 > by-pkgid > 14bdae49007bc6ee568963b57e1e0730 > files > 34

QtPixmap-debug-0.28-7mdv2011.0.i586.rpm

/* GTK+ Pixbuf Engine
 * Copyright (C) 1998-2000 Red Hat, Inc.
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library General Public
 * License as published by the Free Software Foundation; either
 * version 2 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 Library General Public
 * License along with this library; if not, write to the
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 * Boston, MA 02111-1307, USA.
 *
 * Written by Owen Taylor <otaylor@redhat.com>, based on code by
 * Carsten Haitzler <raster@rasterman.com>
 */

#include <gtk/gtk.h>
#include <gdk-pixbuf/gdk-pixbuf.h>
#include "common.h"

/* internals */

typedef struct _ThemeData ThemeData;
typedef struct _QtThemeImage QtThemeImage;
typedef struct _QtThemeMatchData QtThemeMatchData;
typedef struct _QtThemePixbuf QtThemePixbuf;

enum
{
  TOKEN_IMAGE = G_TOKEN_LAST + 1,
  TOKEN_FUNCTION,
  TOKEN_FILE,
  TOKEN_STRETCH,
  TOKEN_RECOLORABLE,
  TOKEN_BORDER,
  TOKEN_DETAIL,
  TOKEN_STATE,
  TOKEN_SHADOW,
  TOKEN_GAP_SIDE,
  TOKEN_GAP_FILE,
  TOKEN_GAP_BORDER,
  TOKEN_GAP_START_FILE,
  TOKEN_GAP_START_BORDER,
  TOKEN_GAP_END_FILE,
  TOKEN_GAP_END_BORDER,
  TOKEN_OVERLAY_FILE,
  TOKEN_OVERLAY_BORDER,
  TOKEN_OVERLAY_STRETCH,
  TOKEN_ARROW_DIRECTION,
  TOKEN_FILE_COLOR,
  TOKEN_GAP_FILE_COLOR,
  TOKEN_GAP_START_FILE_COLOR,
  TOKEN_GAP_END_FILE_COLOR,
  TOKEN_OVERLAY_FILE_COLOR,
  TOKEN_FILE_COLOR_MOD,
  TOKEN_GAP_FILE_COLOR_MOD,
  TOKEN_GAP_START_FILE_COLOR_MOD,
  TOKEN_GAP_END_FILE_COLOR_MOD,
  TOKEN_OVERLAY_FILE_COLOR_MOD,
  TOKEN_OVERLAY_MIN_SIZE,
  TOKEN_BUTTON_FOCUS_MOD,
  TOKEN_COMBO_FOCUS_MOD,
  TOKEN_NO_RADIO_CHECK_HIGHLIGHT,
  TOKEN_USE_SELECTED_FOR_MENU_ITEM,
  TOKEN_USE_SELECTED_FOR_MENU,
  TOKEN_D_HLINE,
  TOKEN_D_VLINE,
  TOKEN_D_SHADOW,
  TOKEN_D_POLYGON,
  TOKEN_D_ARROW,
  TOKEN_D_DIAMOND,
  TOKEN_D_OVAL,
  TOKEN_D_STRING,
  TOKEN_D_BOX,
  TOKEN_D_FLAT_BOX,
  TOKEN_D_CHECK,
  TOKEN_D_OPTION,
  TOKEN_D_CROSS,
  TOKEN_D_RAMP,
  TOKEN_D_TAB,
  TOKEN_D_SHADOW_GAP,
  TOKEN_D_BOX_GAP,
  TOKEN_D_EXTENSION,
  TOKEN_D_FOCUS,
  TOKEN_D_SLIDER,
  TOKEN_D_ENTRY,
  TOKEN_D_HANDLE,
  TOKEN_D_STEPPER,
  TOKEN_TRUE,
  TOKEN_FALSE,
  TOKEN_TOP,
  TOKEN_UP,
  TOKEN_BOTTOM,
  TOKEN_DOWN,
  TOKEN_LEFT,
  TOKEN_RIGHT,
  TOKEN_NORMAL,
  TOKEN_ACTIVE,
  TOKEN_PRELIGHT,
  TOKEN_SELECTED,
  TOKEN_INSENSITIVE,
  TOKEN_NONE,
  TOKEN_IN,
  TOKEN_OUT,
  TOKEN_ETCHED_IN,
  TOKEN_ETCHED_OUT,
  TOKEN_ORIENTATION,
  TOKEN_HORIZONTAL,
  TOKEN_VERTICAL
};

typedef enum
{
  COMPONENT_NORTH_WEST = 1 << 0,
  COMPONENT_NORTH      = 1 << 1,
  COMPONENT_NORTH_EAST = 1 << 2, 
  COMPONENT_WEST       = 1 << 3,
  COMPONENT_CENTER     = 1 << 4,
  COMPONENT_EAST       = 1 << 5, 
  COMPONENT_SOUTH_EAST = 1 << 6,
  COMPONENT_SOUTH      = 1 << 7,
  COMPONENT_SOUTH_WEST = 1 << 8,
  COMPONENT_ALL 	  = 1 << 9
} QtThemePixbufComponent;

typedef enum {
  THEME_MATCH_GAP_SIDE        = 1 << 0,
  THEME_MATCH_ORIENTATION     = 1 << 1,
  THEME_MATCH_STATE           = 1 << 2,
  THEME_MATCH_SHADOW          = 1 << 3,
  THEME_MATCH_ARROW_DIRECTION = 1 << 4
} QtThemeMatchFlags;

typedef enum {
  THEME_CONSTANT_ROWS = 1 << 0,
  THEME_CONSTANT_COLS = 1 << 1,
  THEME_MISSING = 1 << 2
} ThemeRenderHints;

struct _QtThemePixbuf
{
  struct image_file     file;
  GdkPixbuf *pixbuf;
  enum fstretch  stretch;
  gint       border_left;
  gint       border_right;
  gint       border_bottom;
  gint       border_top;
  guint      hints[3][3];
};

struct _QtThemeMatchData
{
  guint           function;	/* Mandatory */
  gchar          *detail;

  QtThemeMatchFlags flags;

  GtkPositionType gap_side;
  GtkOrientation  orientation;
  GtkStateType    state;
  GtkShadowType   shadow;
  GtkArrowType    arrow_direction;
};

struct _QtThemeImage
{
  guint           refcount;

  QtThemePixbuf    *background;
  QtThemePixbuf    *overlay;
  struct image_size overlay_min_size;
  QtThemePixbuf    *gap_start;
  QtThemePixbuf    *gap;
  QtThemePixbuf    *gap_end;
  
  gchar           recolorable;

  QtThemeMatchData  match_data;
};


QtThemePixbuf *qt_theme_pixbuf_new          (void);
void         qt_theme_pixbuf_destroy      (QtThemePixbuf  *qt_theme_pb);
void         qt_theme_pixbuf_set_filename (QtThemePixbuf  *qt_theme_pb,
					const char   *filename);
GdkPixbuf *  qt_theme_pixbuf_get_pixbuf   (QtThemePixbuf  *qt_theme_pb, GdkColor *widget_color);
void         qt_theme_pixbuf_set_border   (QtThemePixbuf  *qt_theme_pb,
					gint          left,
					gint          right,
					gint          top,
					gint          bottom);
void         qt_theme_pixbuf_set_stretch  (QtThemePixbuf  *qt_theme_pb,
					enum fstretch stretch);
void         qt_theme_pixbuf_render       (QtThemePixbuf  *qt_theme_pb,
					GdkWindow    *window,
					GdkBitmap    *mask,
					GdkRectangle *clip_rect,
					guint         component_mask,
					gboolean      center,
					gint          dest_x,
					gint          dest_y,
					gint          dest_width,
					gint          dest_height,
					GdkColor     *widget_color);



extern GtkStyleClass pixmap_default_class;