1997 }
1998
1999 static gint gtk3_get_ythickness(JNIEnv *env, WidgetType widget_type)
2000 {
2001 init_containers();
2002
2003 gtk3_widget = gtk3_get_widget(widget_type);
2004 GtkStyleContext* context = fp_gtk_widget_get_style_context (gtk3_widget);
2005 if (context) {
2006 GtkBorder padding;
2007 fp_gtk_style_context_get_padding(context, 0, &padding);
2008 return padding.top + 1;
2009 }
2010 return 0;
2011 }
2012
2013 /*************************************************/
2014 static guint8 recode_color(gdouble channel)
2015 {
2016 guint16 result = (guint16)(channel * 65535);
2017 if (result < 0) {
2018 result = 0;
2019 } else if (result > 65535) {
2020 result = 65535;
2021 }
2022 return (guint8)( result >> 8);
2023 }
2024
2025 static GtkStateFlags gtk3_get_state_flags(GtkStateType state_type) {
2026 switch (state_type)
2027 {
2028 case GTK_STATE_NORMAL:
2029 return GTK_STATE_FLAG_NORMAL;
2030 case GTK_STATE_ACTIVE:
2031 return GTK_STATE_FLAG_ACTIVE;
2032 case GTK_STATE_PRELIGHT:
2033 return GTK_STATE_FLAG_PRELIGHT;
2034 case GTK_STATE_SELECTED:
2035 return GTK_STATE_FLAG_SELECTED;
2036 case GTK_STATE_INSENSITIVE:
2037 return GTK_STATE_FLAG_INSENSITIVE;
2038 case GTK_STATE_INCONSISTENT:
2039 return GTK_STATE_FLAG_INCONSISTENT;
2201 green = 1.0;
2202 else if (green < 0.0)
2203 green = 0.0;
2204
2205 blue *= k;
2206 if (blue > 1.0)
2207 blue = 1.0;
2208 else if (blue < 0.0)
2209 blue = 0.0;
2210
2211 hls_to_rgb (&red, &green, &blue);
2212
2213 b->red = red;
2214 b->green = green;
2215 b->blue = blue;
2216 }
2217
2218 static GdkRGBA gtk3_get_color_for_flags(GtkStyleContext* context,
2219 GtkStateFlags flags, ColorType color_type) {
2220 GdkRGBA c, color;
2221
2222 switch (color_type)
2223 {
2224 case FOREGROUND:
2225 case TEXT_FOREGROUND:
2226 fp_gtk_style_context_get_color(context, flags, &color);
2227 break;
2228 case BACKGROUND:
2229 case TEXT_BACKGROUND:
2230 fp_gtk_style_context_get_background_color(context, flags, &color);
2231 break;
2232 case LIGHT:
2233 c = gtk3_get_color_for_flags(context, flags, BACKGROUND);
2234 gtk3_style_shade(&c, &color, LIGHTNESS_MULT);
2235 break;
2236 case DARK:
2237 c = gtk3_get_color_for_flags(context, flags, BACKGROUND);
2238 gtk3_style_shade (&c, &color, DARKNESS_MULT);
2239 break;
2240 case MID:
|
1997 }
1998
1999 static gint gtk3_get_ythickness(JNIEnv *env, WidgetType widget_type)
2000 {
2001 init_containers();
2002
2003 gtk3_widget = gtk3_get_widget(widget_type);
2004 GtkStyleContext* context = fp_gtk_widget_get_style_context (gtk3_widget);
2005 if (context) {
2006 GtkBorder padding;
2007 fp_gtk_style_context_get_padding(context, 0, &padding);
2008 return padding.top + 1;
2009 }
2010 return 0;
2011 }
2012
2013 /*************************************************/
2014 static guint8 recode_color(gdouble channel)
2015 {
2016 guint16 result = (guint16)(channel * 65535);
2017 if (result > 65535) {
2018 result = 65535;
2019 }
2020 return (guint8)( result >> 8);
2021 }
2022
2023 static GtkStateFlags gtk3_get_state_flags(GtkStateType state_type) {
2024 switch (state_type)
2025 {
2026 case GTK_STATE_NORMAL:
2027 return GTK_STATE_FLAG_NORMAL;
2028 case GTK_STATE_ACTIVE:
2029 return GTK_STATE_FLAG_ACTIVE;
2030 case GTK_STATE_PRELIGHT:
2031 return GTK_STATE_FLAG_PRELIGHT;
2032 case GTK_STATE_SELECTED:
2033 return GTK_STATE_FLAG_SELECTED;
2034 case GTK_STATE_INSENSITIVE:
2035 return GTK_STATE_FLAG_INSENSITIVE;
2036 case GTK_STATE_INCONSISTENT:
2037 return GTK_STATE_FLAG_INCONSISTENT;
2199 green = 1.0;
2200 else if (green < 0.0)
2201 green = 0.0;
2202
2203 blue *= k;
2204 if (blue > 1.0)
2205 blue = 1.0;
2206 else if (blue < 0.0)
2207 blue = 0.0;
2208
2209 hls_to_rgb (&red, &green, &blue);
2210
2211 b->red = red;
2212 b->green = green;
2213 b->blue = blue;
2214 }
2215
2216 static GdkRGBA gtk3_get_color_for_flags(GtkStyleContext* context,
2217 GtkStateFlags flags, ColorType color_type) {
2218 GdkRGBA c, color;
2219 color.alpha = 0;
2220
2221 switch (color_type)
2222 {
2223 case FOREGROUND:
2224 case TEXT_FOREGROUND:
2225 fp_gtk_style_context_get_color(context, flags, &color);
2226 break;
2227 case BACKGROUND:
2228 case TEXT_BACKGROUND:
2229 fp_gtk_style_context_get_background_color(context, flags, &color);
2230 break;
2231 case LIGHT:
2232 c = gtk3_get_color_for_flags(context, flags, BACKGROUND);
2233 gtk3_style_shade(&c, &color, LIGHTNESS_MULT);
2234 break;
2235 case DARK:
2236 c = gtk3_get_color_for_flags(context, flags, BACKGROUND);
2237 gtk3_style_shade (&c, &color, DARKNESS_MULT);
2238 break;
2239 case MID:
|