[mapserver-commits] r10724 - in
sandbox/mapserver6/mapscript/csharp: . examples
svn at osgeo.org
svn at osgeo.org
Sun Nov 14 10:36:55 EST 2010
Author: tamas
Date: 2010-11-14 07:36:55 -0800 (Sun, 14 Nov 2010)
New Revision: 10724
Added:
sandbox/mapserver6/mapscript/csharp/examples/drawmapDirect.cs
Modified:
sandbox/mapserver6/mapscript/csharp/Makefile.vc
sandbox/mapserver6/mapscript/csharp/csmodule.i
Log:
Add direct GDI rendering support for the C# API
Modified: sandbox/mapserver6/mapscript/csharp/Makefile.vc
===================================================================
--- sandbox/mapserver6/mapscript/csharp/Makefile.vc 2010-11-14 15:35:06 UTC (rev 10723)
+++ sandbox/mapserver6/mapscript/csharp/Makefile.vc 2010-11-14 15:36:55 UTC (rev 10724)
@@ -94,6 +94,7 @@
$(CSC) $(CSFLAGS) /r:mapscript_csharp.dll /r:System.Drawing.dll /out:getbytes.exe examples\getbytes.cs
$(CSC) $(CSFLAGS) /r:mapscript_csharp.dll /out:HTMLtemplate.exe examples\HTMLtemplate.cs
$(CSC) $(CSFLAGS) /r:mapscript_csharp.dll /out:RFC24.exe examples\RFC24.cs
+ $(CSC) $(CSFLAGS) /r:mapscript_csharp.dll /r:System.Drawing.dll /out:drawmapDirect.exe examples\drawmapDirect.cs
test:
!IFDEF MONO
Modified: sandbox/mapserver6/mapscript/csharp/csmodule.i
===================================================================
--- sandbox/mapserver6/mapscript/csharp/csmodule.i 2010-11-14 15:35:06 UTC (rev 10723)
+++ sandbox/mapserver6/mapscript/csharp/csmodule.i 2010-11-14 15:36:55 UTC (rev 10724)
@@ -352,6 +352,12 @@
#endif
%}
+/* Typemaps for device handle */
+%typemap(imtype) (void* device) %{IntPtr%}
+%typemap(cstype) (void* device) %{IntPtr%}
+%typemap(in) (void* device) %{ $1 = ($1_ltype)$input; %}
+%typemap(csin) (void* device) "$csinput"
+
/******************************************************************************
* Preventing to take ownership of the memory when constructing objects
* with parent objects (causing nullreference exception, Bug 1743)
Added: sandbox/mapserver6/mapscript/csharp/examples/drawmapDirect.cs
===================================================================
--- sandbox/mapserver6/mapscript/csharp/examples/drawmapDirect.cs (rev 0)
+++ sandbox/mapserver6/mapscript/csharp/examples/drawmapDirect.cs 2010-11-14 15:36:55 UTC (rev 10724)
@@ -0,0 +1,100 @@
+/******************************************************************************
+ * $Id: drawmap.cs 7418 2008-02-29 00:02:49Z nsavard $
+ *
+ * Project: MapServer
+ * Purpose: A C# based mapscript example to draw the map directly onto a GDI
+ * device context.
+ * Author: Tamas Szekeres, szekerest at gmail.com
+ *
+ ******************************************************************************
+ * Copyright (c) 1996-2008 Regents of the University of Minnesota.
+ *
+ * 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 of this Software or works derived from this 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.
+ *****************************************************************************/
+
+using System;
+using System.Drawing;
+using System.Drawing.Imaging;
+using OSGeo.MapServer;
+
+/// <summary>
+/// A C# based mapscript example to draw the map directly onto a GDI device context.
+/// </summary>
+class DrawMap
+{
+ public static void usage()
+ {
+ Console.WriteLine("usage: DrawMap {mapfile} {outfile}");
+ System.Environment.Exit(-1);
+ }
+
+ public static void Main(string[] args)
+ {
+ Console.WriteLine("");
+ if (args.Length < 2) usage();
+
+ mapObj map = new mapObj(args[0]);
+
+ Console.WriteLine("# Map layers " + map.numlayers + "; Map name = " + map.name);
+ for (int i = 0; i < map.numlayers; i++)
+ {
+ Console.WriteLine("Layer [" + i + "] name: " + map.getLayer(i).name);
+ }
+
+ try
+ {
+ // Create the output format
+ outputFormatObj of = new outputFormatObj("CAIRO/WINGDI", "cairowinGDI");
+ map.appendOutputFormat(of);
+ map.selectOutputFormat("cairowinGDI");
+
+ Bitmap mapImage = new Bitmap(map.width, map.height, PixelFormat.Format32bppRgb);
+
+ using (Graphics g = Graphics.FromImage(mapImage))
+ {
+ IntPtr hdc = g.GetHdc();
+ try
+ {
+ // Attach the device to the outputformat for drawing
+ of.attachDevice(hdc);
+ // Drawing directly to the GDI context
+ using (imageObj image = map.draw()) { };
+ }
+ finally
+ {
+ of.attachDevice(IntPtr.Zero);
+ g.ReleaseHdc(hdc);
+ }
+ }
+
+ mapImage.Save(args[1]);
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine( "\nMessage ---\n{0}", ex.Message );
+ Console.WriteLine(
+ "\nHelpLink ---\n{0}", ex.HelpLink );
+ Console.WriteLine( "\nSource ---\n{0}", ex.Source );
+ Console.WriteLine(
+ "\nStackTrace ---\n{0}", ex.StackTrace );
+ Console.WriteLine(
+ "\nTargetSite ---\n{0}", ex.TargetSite ); }
+ }
+}
+
More information about the mapserver-commits
mailing list