106 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			106 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
|  | /* PIKA - Photo and Image Kooker Application
 | ||
|  |  * a rebranding of The GNU Image Manipulation Program (created with heckimp) | ||
|  |  * A derived work which may be trivial. However, any changes may be (C)2023 by Aldercone Studio | ||
|  |  * | ||
|  |  * Original copyright, applying to most contents (license remains unchanged):  | ||
|  |  * Copyright (C) 1995 Spencer Kimball and Peter Mattis | ||
|  |  * | ||
|  |  * pika-babl-compat.h | ||
|  |  * Copyright (C) 2012 Michael Natterer <mitch@gimp.org> | ||
|  |  * | ||
|  |  * This program is free software: you can redistribute it and/or modify | ||
|  |  * it under the terms of the GNU General Public License as published by | ||
|  |  * the Free Software Foundation; either version 3 of the License, or | ||
|  |  * (at your option) any later version. | ||
|  |  * | ||
|  |  * This program 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 General Public License for more details. | ||
|  |  * | ||
|  |  * You should have received a copy of the GNU General Public License | ||
|  |  * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 | ||
|  |  */ | ||
|  | 
 | ||
|  | #include "config.h"
 | ||
|  | 
 | ||
|  | #include <string.h>
 | ||
|  | 
 | ||
|  | #include <gegl.h>
 | ||
|  | 
 | ||
|  | #include "pika-gegl-types.h"
 | ||
|  | 
 | ||
|  | #include "pika-babl.h"
 | ||
|  | #include "pika-babl-compat.h"
 | ||
|  | 
 | ||
|  | 
 | ||
|  | PikaImageType | ||
|  | pika_babl_format_get_image_type (const Babl *format) | ||
|  | { | ||
|  |   const gchar *name; | ||
|  | 
 | ||
|  |   g_return_val_if_fail (format != NULL, -1); | ||
|  | 
 | ||
|  |   name = babl_get_name (babl_format_get_model (format)); | ||
|  | 
 | ||
|  |   if (! strcmp (name, "Y")  || | ||
|  |       ! strcmp (name, "Y'") || | ||
|  |       ! strcmp (name, "Y~")) | ||
|  |     { | ||
|  |       return PIKA_GRAY_IMAGE; | ||
|  |     } | ||
|  |   else if (! strcmp (name, "YA")   || | ||
|  |            ! strcmp (name, "Y'A") || | ||
|  |            ! strcmp (name, "Y~A")) | ||
|  |     { | ||
|  |       return PIKA_GRAYA_IMAGE; | ||
|  |     } | ||
|  |   else if (! strcmp (name, "RGB")    || | ||
|  |            ! strcmp (name, "R'G'B'") || | ||
|  |            ! strcmp (name, "R~G~B~")) | ||
|  |     { | ||
|  |       return PIKA_RGB_IMAGE; | ||
|  |     } | ||
|  |   else if (! strcmp (name, "RGBA")    || | ||
|  |            ! strcmp (name, "R'G'B'A") || | ||
|  |            ! strcmp (name, "R~G~B~A")) | ||
|  |     { | ||
|  |       return PIKA_RGBA_IMAGE; | ||
|  |     } | ||
|  |   else if (babl_format_is_palette (format)) | ||
|  |     { | ||
|  |       if (babl_format_has_alpha (format)) | ||
|  |         return PIKA_INDEXEDA_IMAGE; | ||
|  |       else | ||
|  |         return PIKA_INDEXED_IMAGE; | ||
|  |     } | ||
|  | 
 | ||
|  |   g_return_val_if_reached (-1); | ||
|  | } | ||
|  | 
 | ||
|  | const Babl * | ||
|  | pika_babl_compat_u8_format (const Babl *format) | ||
|  | { | ||
|  |   g_return_val_if_fail (format != NULL, NULL); | ||
|  | 
 | ||
|  |   /*  indexed images only exist in u8, return the same format  */ | ||
|  |   if (babl_format_is_palette (format)) | ||
|  |     return format; | ||
|  | 
 | ||
|  |   return pika_babl_format (pika_babl_format_get_base_type (format), | ||
|  |                            PIKA_PRECISION_U8_NON_LINEAR, | ||
|  |                            babl_format_has_alpha (format), | ||
|  |                            babl_format_get_space (format)); | ||
|  | } | ||
|  | 
 | ||
|  | const Babl * | ||
|  | pika_babl_compat_u8_mask_format (const Babl *format) | ||
|  | { | ||
|  |   g_return_val_if_fail (format != NULL, NULL); | ||
|  | 
 | ||
|  |   return pika_babl_format (pika_babl_format_get_base_type (format), | ||
|  |                            PIKA_PRECISION_U8_LINEAR, | ||
|  |                            FALSE, | ||
|  |                            NULL); | ||
|  | } |