gimprgb.h 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. /* LIBGIMP - The GIMP Library
  2. * Copyright (C) 1995-1997 Peter Mattis and Spencer Kimball
  3. *
  4. * This library is free software: you can redistribute it and/or
  5. * modify it under the terms of the GNU Lesser General Public
  6. * License as published by the Free Software Foundation; either
  7. * version 3 of the License, or (at your option) any later version.
  8. *
  9. * This library is distributed in the hope that it will be useful,
  10. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  12. * Library General Public License for more details.
  13. *
  14. * You should have received a copy of the GNU Lesser General Public
  15. * License along with this library. If not, see
  16. * <https://www.gnu.org/licenses/>.
  17. */
  18. #if !defined (__GIMP_COLOR_H_INSIDE__) && !defined (GIMP_COLOR_COMPILATION)
  19. #error "Only <libgimpcolor/gimpcolor.h> can be included directly."
  20. #endif
  21. #ifndef __GIMP_RGB_H__
  22. #define __GIMP_RGB_H__
  23. G_BEGIN_DECLS
  24. /* For information look into the C source or the html documentation */
  25. /*
  26. * GIMP_TYPE_RGB
  27. */
  28. #define GIMP_TYPE_RGB (gimp_rgb_get_type ())
  29. GType gimp_rgb_get_type (void) G_GNUC_CONST;
  30. /* RGB and RGBA color types and operations taken from LibGCK */
  31. /**
  32. * GimpRGBCompositeMode:
  33. * @GIMP_RGB_COMPOSITE_NONE: don't do compositing
  34. * @GIMP_RGB_COMPOSITE_NORMAL: composite on top
  35. * @GIMP_RGB_COMPOSITE_BEHIND: composite behind
  36. **/
  37. typedef enum
  38. {
  39. GIMP_RGB_COMPOSITE_NONE = 0,
  40. GIMP_RGB_COMPOSITE_NORMAL,
  41. GIMP_RGB_COMPOSITE_BEHIND
  42. } GimpRGBCompositeMode;
  43. void gimp_rgb_set (GimpRGB *rgb,
  44. gdouble red,
  45. gdouble green,
  46. gdouble blue);
  47. void gimp_rgb_set_alpha (GimpRGB *rgb,
  48. gdouble alpha);
  49. void gimp_rgb_set_uchar (GimpRGB *rgb,
  50. guchar red,
  51. guchar green,
  52. guchar blue);
  53. void gimp_rgb_get_uchar (const GimpRGB *rgb,
  54. guchar *red,
  55. guchar *green,
  56. guchar *blue);
  57. void gimp_rgb_add (GimpRGB *rgb1,
  58. const GimpRGB *rgb2);
  59. void gimp_rgb_multiply (GimpRGB *rgb1,
  60. gdouble factor);
  61. gdouble gimp_rgb_max (const GimpRGB *rgb);
  62. gdouble gimp_rgb_min (const GimpRGB *rgb);
  63. void gimp_rgb_clamp (GimpRGB *rgb);
  64. gdouble gimp_rgb_luminance (const GimpRGB *rgb);
  65. guchar gimp_rgb_luminance_uchar (const GimpRGB *rgb);
  66. void gimp_rgb_composite (GimpRGB *color1,
  67. const GimpRGB *color2,
  68. GimpRGBCompositeMode mode);
  69. void gimp_rgba_set (GimpRGB *rgba,
  70. gdouble red,
  71. gdouble green,
  72. gdouble blue,
  73. gdouble alpha);
  74. void gimp_rgba_set_uchar (GimpRGB *rgba,
  75. guchar red,
  76. guchar green,
  77. guchar blue,
  78. guchar alpha);
  79. void gimp_rgba_get_uchar (const GimpRGB *rgba,
  80. guchar *red,
  81. guchar *green,
  82. guchar *blue,
  83. guchar *alpha);
  84. void gimp_rgba_add (GimpRGB *rgba1,
  85. const GimpRGB *rgba2);
  86. void gimp_rgba_multiply (GimpRGB *rgba,
  87. gdouble factor);
  88. gdouble gimp_rgba_distance (const GimpRGB *rgba1,
  89. const GimpRGB *rgba2);
  90. /* Map D50-adapted sRGB to luminance */
  91. /*
  92. * The weights to compute true CIE luminance from linear red, green
  93. * and blue as defined by the sRGB color space specs in an ICC profile
  94. * color managed application. The weights below have been chromatically
  95. * adapted from D65 (as specified by the sRGB color space specs)
  96. * to D50 (as specified by D50 illuminant values in the ICC V4 specs).
  97. */
  98. #define GIMP_RGB_LUMINANCE_RED (0.22248840)
  99. #define GIMP_RGB_LUMINANCE_GREEN (0.71690369)
  100. #define GIMP_RGB_LUMINANCE_BLUE (0.06060791)
  101. #define GIMP_RGB_LUMINANCE(r,g,b) ((r) * GIMP_RGB_LUMINANCE_RED + \
  102. (g) * GIMP_RGB_LUMINANCE_GREEN + \
  103. (b) * GIMP_RGB_LUMINANCE_BLUE)
  104. G_END_DECLS
  105. #endif /* __GIMP_RGB_H__ */