2004-09-03 17:47:05 +08:00
|
|
|
/* LIBGIMP - The GIMP Library
|
|
|
|
* Copyright (C) 1995-1997 Spencer Kimball and Peter Mattis
|
|
|
|
*
|
|
|
|
* gimpchecks.c
|
|
|
|
* Copyright (C) 2004 Sven Neumann <sven@gimp.org>
|
|
|
|
*
|
2009-01-18 06:28:01 +08:00
|
|
|
* This library is free software: you can redistribute it and/or
|
2004-09-03 17:47:05 +08:00
|
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
|
|
* License as published by the Free Software Foundation; either
|
2009-01-18 06:28:01 +08:00
|
|
|
* version 3 of the License, or (at your option) any later version.
|
2004-09-03 17:47:05 +08:00
|
|
|
*
|
|
|
|
* 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
|
|
|
|
* Lesser General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU Lesser General Public
|
2009-01-18 06:28:01 +08:00
|
|
|
* License along with this library. If not, see
|
2018-07-12 05:27:07 +08:00
|
|
|
* <https://www.gnu.org/licenses/>.
|
2004-09-03 17:47:05 +08:00
|
|
|
*/
|
|
|
|
|
|
|
|
#include "config.h"
|
|
|
|
|
2023-11-21 04:38:11 +08:00
|
|
|
#include <gegl.h>
|
2004-09-03 17:47:05 +08:00
|
|
|
#include <glib-object.h>
|
|
|
|
|
|
|
|
#include "gimpbasetypes.h"
|
|
|
|
|
|
|
|
#include "gimpchecks.h"
|
|
|
|
|
|
|
|
|
2010-06-30 01:13:40 +08:00
|
|
|
/**
|
|
|
|
* SECTION: gimpchecks
|
|
|
|
* @title: gimpchecks
|
|
|
|
* @short_description: Constants and functions related to rendering
|
|
|
|
* checkerboards.
|
|
|
|
*
|
|
|
|
* Constants and functions related to rendering checkerboards.
|
|
|
|
**/
|
|
|
|
|
|
|
|
|
2020-05-25 04:26:50 +08:00
|
|
|
/**
|
|
|
|
* gimp_checks_get_colors:
|
app, libgimp, libgimpbase, libgimpwidgets: better checkboard colors API.
- Some coding style fixes (alignment, etc.).
- Adding missing "Since: 3.0" annotations. We are still wondering
whether this should go in 2.10, in which case, it would become
"Since: 2.10.32" annotations. See discussion in !274.
- Changing gimp_checks_get_colors() signature: merge the 4 color
arguments into 2 (inout) arguments which seems a bit nicer in C,
whereas binding handles such arguments correctly. The other
alternative would have been to at least change the order to have out
arguments in the end.
I also hesitated to get another API in libgimp, which would have been
config-aware (just returning the 2 check colors, depending on user-set
Preferences), then having GimpPreviewArea handling 2 colors (without a
GimpCheckType input). But actually, doing this, we'd remove the nice
menu popup where one could choose a generic check type (not everyone
wants to play with specific non-gray colors) in Gimp*Preview widgets.
So in the end, I left this whole thing as-is.
Instead I document the function with code sample to initialize
properly the GimpPreviewArea (since libgimpwidgets/ are independent
with no knowledge of the core config) in order to respect user
preferences.
- Hide the color properties in gimp_preview_area_menu_new() because
anyway gimp_preview_area_menu_new() does not support GimpRGB
properties right now (so all we get are warnings). It's still possible
to select custom colors on GimpPreviewArea, simply we are stuck at the
ones set in Preferences globally for now (unless a plug-in creates
custom GUI to set these).
Fixed Conflicts from !274:
libgimp/gimp.h
libgimpwidgets/gimppreviewarea.c
2022-05-14 01:00:07 +08:00
|
|
|
* @type: the checkerboard type
|
|
|
|
* @color1: (inout): current custom color and return location for the first color.
|
|
|
|
* @color2: (inout): current custom color and return location for the second color.
|
|
|
|
*
|
|
|
|
* Retrieves the colors to use when drawing a checkerboard for a certain
|
|
|
|
* #GimpCheckType and custom colors.
|
|
|
|
* If @type is %GIMP_CHECK_TYPE_CUSTOM_CHECKS, then @color1 and @color2
|
|
|
|
* will remain untouched, which means you must initialize them to the
|
|
|
|
* values expected for custom checks.
|
|
|
|
*
|
|
|
|
* To obtain the user-set colors in Preferences, just call:
|
|
|
|
* |[<!-- language="C" -->
|
2024-03-25 10:21:54 +08:00
|
|
|
* GeglColor *color1 = gimp_check_custom_color1 ();
|
|
|
|
* GeglColor *color2 = gimp_check_custom_color2 ();
|
app, libgimp, libgimpbase, libgimpwidgets: better checkboard colors API.
- Some coding style fixes (alignment, etc.).
- Adding missing "Since: 3.0" annotations. We are still wondering
whether this should go in 2.10, in which case, it would become
"Since: 2.10.32" annotations. See discussion in !274.
- Changing gimp_checks_get_colors() signature: merge the 4 color
arguments into 2 (inout) arguments which seems a bit nicer in C,
whereas binding handles such arguments correctly. The other
alternative would have been to at least change the order to have out
arguments in the end.
I also hesitated to get another API in libgimp, which would have been
config-aware (just returning the 2 check colors, depending on user-set
Preferences), then having GimpPreviewArea handling 2 colors (without a
GimpCheckType input). But actually, doing this, we'd remove the nice
menu popup where one could choose a generic check type (not everyone
wants to play with specific non-gray colors) in Gimp*Preview widgets.
So in the end, I left this whole thing as-is.
Instead I document the function with code sample to initialize
properly the GimpPreviewArea (since libgimpwidgets/ are independent
with no knowledge of the core config) in order to respect user
preferences.
- Hide the color properties in gimp_preview_area_menu_new() because
anyway gimp_preview_area_menu_new() does not support GimpRGB
properties right now (so all we get are warnings). It's still possible
to select custom colors on GimpPreviewArea, simply we are stuck at the
ones set in Preferences globally for now (unless a plug-in creates
custom GUI to set these).
Fixed Conflicts from !274:
libgimp/gimp.h
libgimpwidgets/gimppreviewarea.c
2022-05-14 01:00:07 +08:00
|
|
|
* gimp_checks_get_colors (gimp_check_type (), &color1, &color2);
|
|
|
|
* ]|
|
|
|
|
*
|
|
|
|
* Since: 3.0
|
2020-05-25 04:26:50 +08:00
|
|
|
**/
|
|
|
|
void
|
2023-11-21 04:38:11 +08:00
|
|
|
gimp_checks_get_colors (GimpCheckType type,
|
|
|
|
GeglColor **color1,
|
|
|
|
GeglColor **color2)
|
2020-05-25 04:26:50 +08:00
|
|
|
{
|
2023-11-21 04:38:11 +08:00
|
|
|
g_return_if_fail ((color1 != NULL && GEGL_IS_COLOR (*color1)) || (color2 != NULL && GEGL_IS_COLOR (*color2)));
|
app, libgimp, libgimpbase, libgimpwidgets: better checkboard colors API.
- Some coding style fixes (alignment, etc.).
- Adding missing "Since: 3.0" annotations. We are still wondering
whether this should go in 2.10, in which case, it would become
"Since: 2.10.32" annotations. See discussion in !274.
- Changing gimp_checks_get_colors() signature: merge the 4 color
arguments into 2 (inout) arguments which seems a bit nicer in C,
whereas binding handles such arguments correctly. The other
alternative would have been to at least change the order to have out
arguments in the end.
I also hesitated to get another API in libgimp, which would have been
config-aware (just returning the 2 check colors, depending on user-set
Preferences), then having GimpPreviewArea handling 2 colors (without a
GimpCheckType input). But actually, doing this, we'd remove the nice
menu popup where one could choose a generic check type (not everyone
wants to play with specific non-gray colors) in Gimp*Preview widgets.
So in the end, I left this whole thing as-is.
Instead I document the function with code sample to initialize
properly the GimpPreviewArea (since libgimpwidgets/ are independent
with no knowledge of the core config) in order to respect user
preferences.
- Hide the color properties in gimp_preview_area_menu_new() because
anyway gimp_preview_area_menu_new() does not support GimpRGB
properties right now (so all we get are warnings). It's still possible
to select custom colors on GimpPreviewArea, simply we are stuck at the
ones set in Preferences globally for now (unless a plug-in creates
custom GUI to set these).
Fixed Conflicts from !274:
libgimp/gimp.h
libgimpwidgets/gimppreviewarea.c
2022-05-14 01:00:07 +08:00
|
|
|
|
2020-05-25 04:26:50 +08:00
|
|
|
if (color1)
|
|
|
|
{
|
2023-11-21 04:38:11 +08:00
|
|
|
*color1 = gegl_color_duplicate (*color1);
|
2020-05-25 04:26:50 +08:00
|
|
|
switch (type)
|
|
|
|
{
|
|
|
|
case GIMP_CHECK_TYPE_LIGHT_CHECKS:
|
2024-03-18 00:19:25 +08:00
|
|
|
gegl_color_set_pixel (*color1, babl_format ("R'G'B'A double"), GIMP_CHECKS_LIGHT_COLOR_LIGHT);
|
2020-05-25 04:26:50 +08:00
|
|
|
break;
|
|
|
|
case GIMP_CHECK_TYPE_DARK_CHECKS:
|
2024-03-18 00:19:25 +08:00
|
|
|
gegl_color_set_pixel (*color1, babl_format ("R'G'B'A double"), GIMP_CHECKS_DARK_COLOR_LIGHT);
|
2020-05-25 04:26:50 +08:00
|
|
|
break;
|
|
|
|
case GIMP_CHECK_TYPE_WHITE_ONLY:
|
2024-03-18 00:19:25 +08:00
|
|
|
gegl_color_set_pixel (*color1, babl_format ("R'G'B'A double"), GIMP_CHECKS_WHITE_COLOR);
|
2020-05-25 04:26:50 +08:00
|
|
|
break;
|
|
|
|
case GIMP_CHECK_TYPE_GRAY_ONLY:
|
2024-03-18 00:19:25 +08:00
|
|
|
gegl_color_set_pixel (*color1, babl_format ("R'G'B'A double"), GIMP_CHECKS_GRAY_COLOR);
|
2020-05-25 04:26:50 +08:00
|
|
|
break;
|
|
|
|
case GIMP_CHECK_TYPE_BLACK_ONLY:
|
2024-03-18 00:19:25 +08:00
|
|
|
gegl_color_set_pixel (*color1, babl_format ("R'G'B'A double"), GIMP_CHECKS_BLACK_COLOR);
|
2020-05-25 04:26:50 +08:00
|
|
|
break;
|
|
|
|
case GIMP_CHECK_TYPE_CUSTOM_CHECKS:
|
app, libgimp, libgimpbase, libgimpwidgets: better checkboard colors API.
- Some coding style fixes (alignment, etc.).
- Adding missing "Since: 3.0" annotations. We are still wondering
whether this should go in 2.10, in which case, it would become
"Since: 2.10.32" annotations. See discussion in !274.
- Changing gimp_checks_get_colors() signature: merge the 4 color
arguments into 2 (inout) arguments which seems a bit nicer in C,
whereas binding handles such arguments correctly. The other
alternative would have been to at least change the order to have out
arguments in the end.
I also hesitated to get another API in libgimp, which would have been
config-aware (just returning the 2 check colors, depending on user-set
Preferences), then having GimpPreviewArea handling 2 colors (without a
GimpCheckType input). But actually, doing this, we'd remove the nice
menu popup where one could choose a generic check type (not everyone
wants to play with specific non-gray colors) in Gimp*Preview widgets.
So in the end, I left this whole thing as-is.
Instead I document the function with code sample to initialize
properly the GimpPreviewArea (since libgimpwidgets/ are independent
with no knowledge of the core config) in order to respect user
preferences.
- Hide the color properties in gimp_preview_area_menu_new() because
anyway gimp_preview_area_menu_new() does not support GimpRGB
properties right now (so all we get are warnings). It's still possible
to select custom colors on GimpPreviewArea, simply we are stuck at the
ones set in Preferences globally for now (unless a plug-in creates
custom GUI to set these).
Fixed Conflicts from !274:
libgimp/gimp.h
libgimpwidgets/gimppreviewarea.c
2022-05-14 01:00:07 +08:00
|
|
|
/* Keep the current value. */
|
2020-05-25 04:26:50 +08:00
|
|
|
break;
|
|
|
|
default:
|
2024-03-18 00:19:25 +08:00
|
|
|
gegl_color_set_pixel (*color1, babl_format ("R'G'B'A double"), GIMP_CHECKS_GRAY_COLOR_LIGHT);
|
2020-05-25 04:26:50 +08:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (color2)
|
|
|
|
{
|
2023-11-21 04:38:11 +08:00
|
|
|
*color2 = gegl_color_duplicate (*color2);
|
2020-05-25 04:26:50 +08:00
|
|
|
switch (type)
|
|
|
|
{
|
|
|
|
case GIMP_CHECK_TYPE_LIGHT_CHECKS:
|
2024-03-18 00:19:25 +08:00
|
|
|
gegl_color_set_pixel (*color2, babl_format ("R'G'B'A double"), GIMP_CHECKS_LIGHT_COLOR_DARK);
|
2020-05-25 04:26:50 +08:00
|
|
|
break;
|
|
|
|
case GIMP_CHECK_TYPE_DARK_CHECKS:
|
2024-03-18 00:19:25 +08:00
|
|
|
gegl_color_set_pixel (*color2, babl_format ("R'G'B'A double"), GIMP_CHECKS_DARK_COLOR_DARK);
|
2020-05-25 04:26:50 +08:00
|
|
|
break;
|
|
|
|
case GIMP_CHECK_TYPE_WHITE_ONLY:
|
2024-03-18 00:19:25 +08:00
|
|
|
gegl_color_set_pixel (*color2, babl_format ("R'G'B'A double"), GIMP_CHECKS_WHITE_COLOR);
|
2020-05-25 04:26:50 +08:00
|
|
|
break;
|
|
|
|
case GIMP_CHECK_TYPE_GRAY_ONLY:
|
2024-03-18 00:19:25 +08:00
|
|
|
gegl_color_set_pixel (*color2, babl_format ("R'G'B'A double"), GIMP_CHECKS_GRAY_COLOR);
|
2020-05-25 04:26:50 +08:00
|
|
|
break;
|
|
|
|
case GIMP_CHECK_TYPE_BLACK_ONLY:
|
2024-03-18 00:19:25 +08:00
|
|
|
gegl_color_set_pixel (*color2, babl_format ("R'G'B'A double"), GIMP_CHECKS_BLACK_COLOR);
|
2020-05-25 04:26:50 +08:00
|
|
|
break;
|
|
|
|
case GIMP_CHECK_TYPE_CUSTOM_CHECKS:
|
app, libgimp, libgimpbase, libgimpwidgets: better checkboard colors API.
- Some coding style fixes (alignment, etc.).
- Adding missing "Since: 3.0" annotations. We are still wondering
whether this should go in 2.10, in which case, it would become
"Since: 2.10.32" annotations. See discussion in !274.
- Changing gimp_checks_get_colors() signature: merge the 4 color
arguments into 2 (inout) arguments which seems a bit nicer in C,
whereas binding handles such arguments correctly. The other
alternative would have been to at least change the order to have out
arguments in the end.
I also hesitated to get another API in libgimp, which would have been
config-aware (just returning the 2 check colors, depending on user-set
Preferences), then having GimpPreviewArea handling 2 colors (without a
GimpCheckType input). But actually, doing this, we'd remove the nice
menu popup where one could choose a generic check type (not everyone
wants to play with specific non-gray colors) in Gimp*Preview widgets.
So in the end, I left this whole thing as-is.
Instead I document the function with code sample to initialize
properly the GimpPreviewArea (since libgimpwidgets/ are independent
with no knowledge of the core config) in order to respect user
preferences.
- Hide the color properties in gimp_preview_area_menu_new() because
anyway gimp_preview_area_menu_new() does not support GimpRGB
properties right now (so all we get are warnings). It's still possible
to select custom colors on GimpPreviewArea, simply we are stuck at the
ones set in Preferences globally for now (unless a plug-in creates
custom GUI to set these).
Fixed Conflicts from !274:
libgimp/gimp.h
libgimpwidgets/gimppreviewarea.c
2022-05-14 01:00:07 +08:00
|
|
|
/* Keep the current value. */
|
2020-05-25 04:26:50 +08:00
|
|
|
break;
|
|
|
|
default:
|
2024-03-18 00:19:25 +08:00
|
|
|
gegl_color_set_pixel (*color2, babl_format ("R'G'B'A double"), GIMP_CHECKS_GRAY_COLOR_DARK);
|
2020-05-25 04:26:50 +08:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|