1 /* cairo - a vector graphics library with display and print output 2 * 3 * Copyright © 2004 Calum Robinson 4 * Copyright (C) 2006,2007 Mozilla Corporation 5 * 6 * This library is free software; you can redistribute it and/or 7 * modify it either under the terms of the GNU Lesser General Public 8 * License version 2.1 as published by the Free Software Foundation 9 * (the "LGPL") or, at your option, under the terms of the Mozilla 10 * Public License Version 1.1 (the "MPL"). If you do not alter this 11 * notice, a recipient may use your version of this file under either 12 * the MPL or the LGPL. 13 * 14 * You should have received a copy of the LGPL along with this library 15 * in the file COPYING-LGPL-2.1; if not, write to the Free Software 16 * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA 17 * You should have received a copy of the MPL along with this library 18 * in the file COPYING-MPL-1.1 19 * 20 * The contents of this file are subject to the Mozilla Public License 21 * Version 1.1 (the "License"); you may not use this file except in 22 * compliance with the License. You may obtain a copy of the License at 23 * http://www.mozilla.org/MPL/ 24 * 25 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY 26 * OF ANY KIND, either express or implied. See the LGPL or the MPL for 27 * the specific language governing rights and limitations. 28 * 29 * The Original Code is the cairo graphics library. 30 * 31 * The Initial Developer of the Original Code is Calum Robinson 32 * 33 * Contributor(s): 34 * Calum Robinson <calumr@mac.com> 35 * Vladimir Vukicevic <vladimir@mozilla.com> 36 */ 37 38 #ifndef CAIRO_QUARTZ_PRIVATE_H 39 #define CAIRO_QUARTZ_PRIVATE_H 40 41 #include "cairoint.h" 42 43 #if CAIRO_HAS_QUARTZ_SURFACE 44 #include "cairo-quartz.h" 45 #include "cairo-surface-clipper-private.h" 46 47 #ifndef CGFLOAT_DEFINED 48 /* On 10.4, Quartz APIs used float instead of CGFloat */ 49 typedef float CGFloat; 50 #endif 51 52 typedef CGFloat cairo_quartz_float_t; 53 54 typedef enum { 55 DO_DIRECT, 56 DO_SHADING, 57 DO_IMAGE, 58 DO_TILED_IMAGE 59 } cairo_quartz_action_t; 60 61 /* define CTFontRef for pre-10.5 SDKs */ 62 typedef const struct __CTFont *CTFontRef; 63 64 typedef struct cairo_quartz_surface { 65 cairo_surface_t base; 66 67 CGContextRef cgContext; 68 CGAffineTransform cgContextBaseCTM; 69 70 void *imageData; 71 cairo_surface_t *imageSurfaceEquiv; 72 73 cairo_surface_clipper_t clipper; 74 cairo_rectangle_int_t extents; 75 cairo_rectangle_int_t virtual_extents; 76 } cairo_quartz_surface_t; 77 78 typedef struct cairo_quartz_image_surface { 79 cairo_surface_t base; 80 81 int width, height; 82 83 CGImageRef image; 84 cairo_image_surface_t *imageSurface; 85 } cairo_quartz_image_surface_t; 86 87 cairo_private cairo_bool_t 88 _cairo_quartz_verify_surface_size(int width, int height); 89 90 cairo_private cairo_bool_t 91 _cairo_surface_is_quartz (const cairo_surface_t *surface); 92 93 cairo_private CGImageRef 94 CairoQuartzCreateCGImage (cairo_format_t format, 95 unsigned int width, 96 unsigned int height, 97 unsigned int stride, 98 void *data, 99 cairo_bool_t interpolate, 100 CGColorSpaceRef colorSpaceOverride, 101 CGDataProviderReleaseDataCallback releaseCallback, 102 void *releaseInfo); 103 104 cairo_private CGFontRef 105 _cairo_quartz_scaled_font_get_cg_font_ref (cairo_scaled_font_t *sfont); 106 107 #else 108 109 # error Cairo was not compiled with support for the quartz backend 110 111 #endif /* CAIRO_HAS_QUARTZ_SURFACE */ 112 113 #endif /* CAIRO_QUARTZ_PRIVATE_H */ 114