📄 gtkstyle.c
字号:
/* GTK - The GIMP Toolkit * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald * * 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. *//* * Modified by the GTK+ Team and others 1997-1999. See the AUTHORS * file for a list of people on the GTK+ Team. See the ChangeLog * files for a list of changes. These files are distributed with * GTK+ at ftp://ftp.gtk.org/pub/gtk/. */#include <math.h>#include "gtkgc.h"#include "gtkrc.h"#include "gtkstyle.h"#include "gtkwidget.h"#include "gtkthemes.h"#include "gdk/gdkprivate.h"#define LIGHTNESS_MULT 1.3#define DARKNESS_MULT 0.7/* actually glib should do that for us */#ifndef M_PI#define M_PI 3.14159265358979323846#endif /* M_PI */#ifndef M_PI_4#define M_PI_4 0.78539816339744830962#endif /* M_PI_4 */static void gtk_style_init (GtkStyle *style, GdkColormap *colormap, gint depth);static void gtk_style_destroy (GtkStyle *style);static void gtk_default_draw_hline (GtkStyle *style, GdkWindow *window, GtkStateType state_type, GdkRectangle *area, GtkWidget *widget, gchar *detail, gint x1, gint x2, gint y);static void gtk_default_draw_vline (GtkStyle *style, GdkWindow *window, GtkStateType state_type, GdkRectangle *area, GtkWidget *widget, gchar *detail, gint y1, gint y2, gint x);static void gtk_default_draw_shadow (GtkStyle *style, GdkWindow *window, GtkStateType state_type, GtkShadowType shadow_type, GdkRectangle *area, GtkWidget *widget, gchar *detail, gint x, gint y, gint width, gint height);static void gtk_default_draw_shadow (GtkStyle *style, GdkWindow *window, GtkStateType state_type, GtkShadowType shadow_type, GdkRectangle *area, GtkWidget *widget, gchar *detail, gint x, gint y, gint width, gint height);static void gtk_default_draw_polygon (GtkStyle *style, GdkWindow *window, GtkStateType state_type, GtkShadowType shadow_type, GdkRectangle *area, GtkWidget *widget, gchar *detail, GdkPoint *points, gint npoints, gboolean fill);static void gtk_default_draw_arrow (GtkStyle *style, GdkWindow *window, GtkStateType state_type, GtkShadowType shadow_type, GdkRectangle *area, GtkWidget *widget, gchar *detail, GtkArrowType arrow_type, gboolean fill, gint x, gint y, gint width, gint height);static void gtk_default_draw_diamond (GtkStyle *style, GdkWindow *window, GtkStateType state_type, GtkShadowType shadow_type, GdkRectangle *area, GtkWidget *widget, gchar *detail, gint x, gint y, gint width, gint height);static void gtk_default_draw_oval (GtkStyle *style, GdkWindow *window, GtkStateType state_type, GtkShadowType shadow_type, GdkRectangle *area, GtkWidget *widget, gchar *detail, gint x, gint y, gint width, gint height);static void gtk_default_draw_string (GtkStyle *style, GdkWindow *window, GtkStateType state_type, GdkRectangle *area, GtkWidget *widget, gchar *detail, gint x, gint y, const gchar *string);static void gtk_default_draw_box (GtkStyle *style, GdkWindow *window, GtkStateType state_type, GtkShadowType shadow_type, GdkRectangle *area, GtkWidget *widget, gchar *detail, gint x, gint y, gint width, gint height);static void gtk_default_draw_flat_box (GtkStyle *style, GdkWindow *window, GtkStateType state_type, GtkShadowType shadow_type, GdkRectangle *area, GtkWidget *widget, gchar *detail, gint x, gint y, gint width, gint height);static void gtk_default_draw_check (GtkStyle *style, GdkWindow *window, GtkStateType state_type, GtkShadowType shadow_type, GdkRectangle *area, GtkWidget *widget, gchar *detail, gint x, gint y, gint width, gint height);static void gtk_default_draw_option (GtkStyle *style, GdkWindow *window, GtkStateType state_type, GtkShadowType shadow_type, GdkRectangle *area, GtkWidget *widget, gchar *detail, gint x, gint y, gint width, gint height);static void gtk_default_draw_cross (GtkStyle *style, GdkWindow *window, GtkStateType state_type, GtkShadowType shadow_type, GdkRectangle *area, GtkWidget *widget, gchar *detail, gint x, gint y, gint width, gint height);static void gtk_default_draw_ramp (GtkStyle *style, GdkWindow *window, GtkStateType state_type, GtkShadowType shadow_type, GdkRectangle *area, GtkWidget *widget, gchar *detail, GtkArrowType arrow_type, gint x, gint y, gint width, gint height);static void gtk_default_draw_tab (GtkStyle *style, GdkWindow *window, GtkStateType state_type, GtkShadowType shadow_type, GdkRectangle *area, GtkWidget *widget, gchar *detail, gint x, gint y, gint width, gint height);static void gtk_default_draw_shadow_gap (GtkStyle *style, GdkWindow *window, GtkStateType state_type, GtkShadowType shadow_type, GdkRectangle *area, GtkWidget *widget, gchar *detail, gint x, gint y, gint width, gint height, GtkPositionType gap_side, gint gap_x, gint gap_width);static void gtk_default_draw_box_gap (GtkStyle *style, GdkWindow *window, GtkStateType state_type, GtkShadowType shadow_type, GdkRectangle *area, GtkWidget *widget, gchar *detail, gint x, gint y, gint width, gint height, GtkPositionType gap_side, gint gap_x, gint gap_width);static void gtk_default_draw_extension (GtkStyle *style, GdkWindow *window, GtkStateType state_type, GtkShadowType shadow_type, GdkRectangle *area, GtkWidget *widget, gchar *detail, gint x, gint y, gint width, gint height, GtkPositionType gap_side);static void gtk_default_draw_focus (GtkStyle *style, GdkWindow *window, GdkRectangle *area, GtkWidget *widget, gchar *detail, gint x, gint y, gint width, gint height);static void gtk_default_draw_slider (GtkStyle *style, GdkWindow *window, GtkStateType state_type, GtkShadowType shadow_type, GdkRectangle *area, GtkWidget *widget, gchar *detail, gint x, gint y, gint width, gint height, GtkOrientation orientation);static void gtk_default_draw_handle (GtkStyle *style, GdkWindow *window, GtkStateType state_type, GtkShadowType shadow_type, GdkRectangle *area, GtkWidget *widget, gchar *detail, gint x, gint y, gint width, gint height, GtkOrientation orientation);static void gtk_style_shade (GdkColor *a, GdkColor *b, gdouble k);static void rgb_to_hls (gdouble *r, gdouble *g, gdouble *b);static void hls_to_rgb (gdouble *h, gdouble *l, gdouble *s);static const GtkStyleClass default_class ={ 2, 2, gtk_default_draw_hline, gtk_default_draw_vline, gtk_default_draw_shadow, gtk_default_draw_polygon, gtk_default_draw_arrow, gtk_default_draw_diamond, gtk_default_draw_oval, gtk_default_draw_string, gtk_default_draw_box, gtk_default_draw_flat_box, gtk_default_draw_check, gtk_default_draw_option, gtk_default_draw_cross, gtk_default_draw_ramp, gtk_default_draw_tab, gtk_default_draw_shadow_gap, gtk_default_draw_box_gap, gtk_default_draw_extension, gtk_default_draw_focus, gtk_default_draw_slider, gtk_default_draw_handle};GdkFont *default_font = NULL;static GdkColor gtk_default_normal_fg = { 0, 0, 0, 0 };static GdkColor gtk_default_active_fg = { 0, 0, 0, 0 };static GdkColor gtk_default_prelight_fg = { 0, 0, 0, 0 };static GdkColor gtk_default_selected_fg = { 0, 0xffff, 0xffff, 0xffff };static GdkColor gtk_default_insensitive_fg = { 0, 0x7530, 0x7530, 0x7530 };static GdkColor gtk_default_normal_bg = { 0, 0xd6d6, 0xd6d6, 0xd6d6 };static GdkColor gtk_default_active_bg = { 0, 0xc350, 0xc350, 0xc350 };static GdkColor gtk_default_prelight_bg = { 0, 0xea60, 0xea60, 0xea60 };static GdkColor gtk_default_selected_bg = { 0, 0, 0, 0x9c40 };static GdkColor gtk_default_insensitive_bg = { 0, 0xd6d6, 0xd6d6, 0xd6d6 };GtkStyle*gtk_style_copy (GtkStyle *style){ GtkStyle *new_style; guint i; g_return_val_if_fail (style != NULL, NULL); new_style = gtk_style_new (); for (i = 0; i < 5; i++) { new_style->fg[i] = style->fg[i]; new_style->bg[i] = style->bg[i]; new_style->text[i] = style->text[i]; new_style->base[i] = style->base[i]; new_style->bg_pixmap[i] = style->bg_pixmap[i]; } gdk_font_unref (new_style->font); new_style->font = style->font; gdk_font_ref (new_style->font); if (style->rc_style) { new_style->rc_style = style->rc_style; gtk_rc_style_ref (style->rc_style); } if (style->engine) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -