11176bdada62cabc6ec4b0308a930e83b679d5d36John Reck/* 21176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * Copyright © 2000 SuSE, Inc. 31176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * Copyright © 2007, 2009 Red Hat, Inc. 41176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * Copyright © 2009 Soren Sandmann 51176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * 61176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * Permission to use, copy, modify, distribute, and sell this software and its 71176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * documentation for any purpose is hereby granted without fee, provided that 81176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * the above copyright notice appear in all copies and that both that 91176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * copyright notice and this permission notice appear in supporting 101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * documentation, and that the name of SuSE not be used in advertising or 111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * publicity pertaining to distribution of the software without specific, 121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * written prior permission. SuSE makes no representations about the 131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * suitability of this software for any purpose. It is provided "as is" 141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * without express or implied warranty. 151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * 161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL 171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE 181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION 201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck */ 231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#ifdef HAVE_CONFIG_H 251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#include <config.h> 261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif 271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#include "pixman-private.h" 281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 291176bdada62cabc6ec4b0308a930e83b679d5d36John Reckstatic uint32_t 301176bdada62cabc6ec4b0308a930e83b679d5d36John Reckcolor_to_uint32 (const pixman_color_t *color) 311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck return 331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck (color->alpha >> 8 << 24) | 341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck (color->red >> 8 << 16) | 351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck (color->green & 0xff00) | 361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck (color->blue >> 8); 371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 391176bdada62cabc6ec4b0308a930e83b679d5d36John Reckstatic argb_t 401176bdada62cabc6ec4b0308a930e83b679d5d36John Reckcolor_to_float (const pixman_color_t *color) 411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck argb_t result; 431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck result.a = pixman_unorm_to_float (color->alpha, 16); 451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck result.r = pixman_unorm_to_float (color->red, 16); 461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck result.g = pixman_unorm_to_float (color->green, 16); 471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck result.b = pixman_unorm_to_float (color->blue, 16); 481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck return result; 501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 521176bdada62cabc6ec4b0308a930e83b679d5d36John ReckPIXMAN_EXPORT pixman_image_t * 531176bdada62cabc6ec4b0308a930e83b679d5d36John Reckpixman_image_create_solid_fill (const pixman_color_t *color) 541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck pixman_image_t *img = _pixman_image_allocate (); 561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if (!img) 581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck return NULL; 591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck img->type = SOLID; 611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck img->solid.color = *color; 621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck img->solid.color_32 = color_to_uint32 (color); 631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck img->solid.color_float = color_to_float (color); 641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck return img; 661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 68