[gimp] app: add gimp_drawable_get_component_format() and _component_index()
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: add gimp_drawable_get_component_format() and _component_index()
- Date: Mon, 2 Jun 2014 06:15:42 +0000 (UTC)
commit 8e0563954d440ffdd747ce97113f90b55408c200
Author: Michael Natterer <mitch gimp org>
Date: Mon Jun 2 02:31:42 2014 +0200
app: add gimp_drawable_get_component_format() and _component_index()
app/core/gimpdrawable.c | 66 +++++++++++++++++++++++++++++++++++++++++++++++
app/core/gimpdrawable.h | 5 +++
2 files changed, 71 insertions(+), 0 deletions(-)
---
diff --git a/app/core/gimpdrawable.c b/app/core/gimpdrawable.c
index 90a0498..53a25be 100644
--- a/app/core/gimpdrawable.c
+++ b/app/core/gimpdrawable.c
@@ -1680,6 +1680,72 @@ gimp_drawable_is_indexed (const GimpDrawable *drawable)
return (gimp_drawable_get_base_type (drawable) == GIMP_INDEXED);
}
+const Babl *
+gimp_drawable_get_component_format (const GimpDrawable *drawable,
+ GimpChannelType channel)
+{
+ g_return_val_if_fail (GIMP_IS_DRAWABLE (drawable), NULL);
+
+ switch (channel)
+ {
+ case GIMP_RED_CHANNEL:
+ return gimp_babl_component_format (GIMP_RGB,
+ gimp_drawable_get_precision (drawable),
+ RED);
+
+ case GIMP_GREEN_CHANNEL:
+ return gimp_babl_component_format (GIMP_RGB,
+ gimp_drawable_get_precision (drawable),
+ GREEN);
+
+ case GIMP_BLUE_CHANNEL:
+ return gimp_babl_component_format (GIMP_RGB,
+ gimp_drawable_get_precision (drawable),
+ BLUE);
+
+ case GIMP_ALPHA_CHANNEL:
+ return gimp_babl_component_format (GIMP_RGB,
+ gimp_drawable_get_precision (drawable),
+ ALPHA);
+
+ case GIMP_GRAY_CHANNEL:
+ return gimp_babl_component_format (GIMP_GRAY,
+ gimp_drawable_get_precision (drawable),
+ GRAY);
+
+ case GIMP_INDEXED_CHANNEL:
+ return babl_format ("Y u8"); /* will extract grayscale, the best
+ * we can do here */
+ }
+
+ return NULL;
+}
+
+gint
+gimp_drawable_get_component_index (const GimpDrawable *drawable,
+ GimpChannelType channel)
+{
+ g_return_val_if_fail (GIMP_IS_DRAWABLE (drawable), -1);
+
+ switch (channel)
+ {
+ case GIMP_RED_CHANNEL: return RED;
+ case GIMP_GREEN_CHANNEL: return GREEN;
+ case GIMP_BLUE_CHANNEL: return BLUE;
+ case GIMP_GRAY_CHANNEL: return GRAY;
+ case GIMP_INDEXED_CHANNEL: return INDEXED;
+ case GIMP_ALPHA_CHANNEL:
+ switch (gimp_drawable_get_base_type (drawable))
+ {
+ case GIMP_RGB: return ALPHA;
+ case GIMP_GRAY: return ALPHA_G;
+ case GIMP_INDEXED: return ALPHA_I;
+ }
+ }
+
+ return -1;
+}
+
const guchar *
gimp_drawable_get_colormap (const GimpDrawable *drawable)
{
diff --git a/app/core/gimpdrawable.h b/app/core/gimpdrawable.h
index 84210f3..24713fb 100644
--- a/app/core/gimpdrawable.h
+++ b/app/core/gimpdrawable.h
@@ -214,6 +214,11 @@ gboolean gimp_drawable_is_rgb (const GimpDrawable *drawable);
gboolean gimp_drawable_is_gray (const GimpDrawable *drawable);
gboolean gimp_drawable_is_indexed (const GimpDrawable *drawable);
+const Babl * gimp_drawable_get_component_format (const GimpDrawable *drawable,
+ GimpChannelType channel);
+gint gimp_drawable_get_component_index (const GimpDrawable *drawable,
+ GimpChannelType channel);
+
const guchar * gimp_drawable_get_colormap (const GimpDrawable *drawable);
GimpLayer * gimp_drawable_get_floating_sel (const GimpDrawable *drawable);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]