Author: gnorton
Date: 2008-01-23 09:03:35 -0500 (Wed, 23 Jan 2008)
New Revision: 93657
Added:
trunk/libgdiplus/src/carbon-private.c
trunk/libgdiplus/src/carbon-private.h
Modified:
trunk/libgdiplus/src/ChangeLog
trunk/libgdiplus/src/Makefile.am
trunk/libgdiplus/src/general.c
trunk/libgdiplus/src/graphics.c
Log:
In .:
2008-01-23 Geoff Norton <[EMAIL PROTECTED]>
* Makefile.am: Add carbon-private.* to the build.
* general.c: Use gdip_get_display_dpi_carbon to get dpi on the mac
* graphics.c: Rename GdipCreateFromQuartz_macosx to
GdipCreateFromContext_macosx
* carbon-private.c: A mac specific implementation to get the
horizontal and vertical dpi of a display.
Modified: trunk/libgdiplus/src/ChangeLog
===================================================================
--- trunk/libgdiplus/src/ChangeLog 2008-01-23 14:03:22 UTC (rev 93656)
+++ trunk/libgdiplus/src/ChangeLog 2008-01-23 14:03:35 UTC (rev 93657)
@@ -1,3 +1,12 @@
+2008-01-23 Geoff Norton <[EMAIL PROTECTED]>
+
+ * Makefile.am: Add carbon-private.* to the build.
+ * general.c: Use gdip_get_display_dpi_carbon to get dpi on the mac
+ * graphics.c: Rename GdipCreateFromQuartz_macosx to
+ GdipCreateFromContext_macosx
+ * carbon-private.c: A mac specific implementation to get the
+ horizontal and vertical dpi of a display.
+
2007-12-22 Geoff Norton <[EMAIL PROTECTED]>
* graphics-private.h: Revert the CAIRO_AA change as it caused
Modified: trunk/libgdiplus/src/Makefile.am
===================================================================
--- trunk/libgdiplus/src/Makefile.am 2008-01-23 14:03:22 UTC (rev 93656)
+++ trunk/libgdiplus/src/Makefile.am 2008-01-23 14:03:35 UTC (rev 93657)
@@ -12,6 +12,8 @@
brush.h \
brush-private.h \
cairo-embed.h \
+ carbon-private.c \
+ carbon-private.h \
codecs.h \
codecs-private.h \
customlinecap.c \
Added: trunk/libgdiplus/src/carbon-private.c
===================================================================
--- trunk/libgdiplus/src/carbon-private.c 2008-01-23 14:03:22 UTC (rev
93656)
+++ trunk/libgdiplus/src/carbon-private.c 2008-01-23 14:03:35 UTC (rev
93657)
@@ -0,0 +1,54 @@
+/*
+ * carbon-private.c
+ *
+ * Copyright (C) 2008 Novell, Inc (http://www.novell.com)
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
copy of this software
+ * and associated documentation files (the "Software"), to deal in the
Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge,
publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
all copies or substantial
+ * portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT
+ * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY,
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
OR IN CONNECTION WITH THE SOFTWARE
+ * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Authors:
+ * Geoff Norton <[EMAIL PROTECTED]>
+ */
+
+#ifdef __APPLE__
+#include <Carbon/Carbon.h>
+#include <IOKit/graphics/IOGraphicsLib.h>
+
+static inline int gdip_get_int_from_dict_for_key (CFDictionaryRef dict,
CFStringRef key) {
+ CFNumberRef value = CFDictionaryGetValue (dict, key);
+ int ret = 0;
+
+ if (value == NULL)
+ return 0;
+
+ CFNumberGetValue (value, kCFNumberIntType, &ret);
+
+ return ret;
+}
+
+void gdip_get_display_dpi_carbon (float *h_dpi, float *v_dpi) {
+ CFDictionaryRef mode_dict = CGDisplayCurrentMode (kCGDirectMainDisplay);
+ io_connect_t display_port = CGDisplayIOServicePort
(kCGDirectMainDisplay);
+ CFDictionaryRef display_dict = IOCreateDisplayInfoDictionary
(display_port, 0);
+ const float mmpi = 25.4;
+ float h_size = (float) gdip_get_int_from_dict_for_key (display_dict,
CFSTR (kDisplayHorizontalImageSize)) / mmpi;
+ float v_size = (float) gdip_get_int_from_dict_for_key (display_dict,
CFSTR (kDisplayVerticalImageSize)) / mmpi;
+
+ *h_dpi = (float) gdip_get_int_from_dict_for_key (mode_dict,
kCGDisplayWidth) / h_size;
+ *v_dpi = (float) gdip_get_int_from_dict_for_key (mode_dict,
kCGDisplayHeight) / v_size;
+
+ CFRelease (display_dict);
+}
+#endif
Added: trunk/libgdiplus/src/carbon-private.h
===================================================================
--- trunk/libgdiplus/src/carbon-private.h 2008-01-23 14:03:22 UTC (rev
93656)
+++ trunk/libgdiplus/src/carbon-private.h 2008-01-23 14:03:35 UTC (rev
93657)
@@ -0,0 +1,30 @@
+/*
+ * Permission is hereby granted, free of charge, to any person obtaining a
copy of this software
+ * and associated documentation files (the "Software"), to deal in the
Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge,
publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
all copies or substantial
+ * portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT
+ * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY,
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
OR IN CONNECTION WITH THE SOFTWARE
+ * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Authors:
+ * Geoff Norton ([EMAIL PROTECTED])
+ *
+ * Copyright (C) 2008 Novell, Inc (http://www.novell.com)
+ */
+
+#ifndef __CARBON_PRIVATE_H__
+#define __CARBON_PRIVATE_H__
+
+#ifdef __APPLE__
+void gdip_get_display_dpi_carbon (float *h_dpi, float *v_dpi);
+#endif
+
+#endif
Modified: trunk/libgdiplus/src/general.c
===================================================================
--- trunk/libgdiplus/src/general.c 2008-01-23 14:03:22 UTC (rev 93656)
+++ trunk/libgdiplus/src/general.c 2008-01-23 14:03:35 UTC (rev 93657)
@@ -29,6 +29,7 @@
#include "codecs-private.h"
#include "graphics-private.h"
#include "font-private.h"
+#include "carbon-private.h"
/* large table to avoid a division and three multiplications when
premultiplying alpha into R, G and B */
#include "alpha-premul-table.inc"
@@ -125,13 +126,15 @@
Display* display;
if (dpis == 0) {
+#if __APPLE__
+ float h_dpi, v_dpi;
+ gdip_get_display_dpi_carbon (&h_dpi, &v_dpi);
+
+ dpis = h_dpi;
+ return dpis;
+#else
char *val;
- if (getenv ("MONO_MWF_USE_CARBON_BACKEND") != NULL) {
- dpis = 96.0f;
- return dpis;
- }
-
display = XOpenDisplay (0);
/* If the display is openable lets try to read dpi from it;
otherwise use a default of 96.0f */
if (display) {
@@ -145,6 +148,7 @@
} else {
dpis = 96.0f;
}
+#endif
}
return dpis;
Modified: trunk/libgdiplus/src/graphics.c
===================================================================
--- trunk/libgdiplus/src/graphics.c 2008-01-23 14:03:22 UTC (rev 93656)
+++ trunk/libgdiplus/src/graphics.c 2008-01-23 14:03:35 UTC (rev 93657)
@@ -256,7 +256,7 @@
#ifdef CAIRO_HAS_QUARTZ_SURFACE
// coverity[+alloc : arg-*3]
GpStatus
-GdipCreateFromQuartz_macosx (void *ctx, int width, int height, GpGraphics
**graphics)
+GdipCreateFromContext_macosx (void *ctx, int width, int height, GpGraphics
**graphics)
{
cairo_surface_t *surface;
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches