]> granicus.if.org Git - imagemagick/blobdiff - coders/dot.c
(no commit message)
[imagemagick] / coders / dot.c
index d054d471df7d79b2afb1d7d4708a1d83165e0c7c..382cbf73476dda60876f426191582eaf04fac715 100644 (file)
 %                      Read/Write Graphviz DOT Format                         %
 %                                                                             %
 %                              Software Design                                %
-%                                John Cristy                                  %
+%                                   Cristy                                    %
 %                                 July 1992                                   %
 %                                                                             %
 %                                                                             %
-%  Copyright 1999-2009 ImageMagick Studio LLC, a non-profit organization      %
+%  Copyright 1999-2014 ImageMagick Studio LLC, a non-profit organization      %
 %  dedicated to making software imaging solutions freely available.           %
 %                                                                             %
 %  You may not use this file except in compliance with the License.  You may  %
 /*
   Include declarations.
 */
-#include "magick/studio.h"
-#include "magick/blob.h"
-#include "magick/blob-private.h"
-#include "magick/client.h"
-#include "magick/constitute.h"
-#include "magick/exception.h"
-#include "magick/exception-private.h"
-#include "magick/image.h"
-#include "magick/image-private.h"
-#include "magick/list.h"
-#include "magick/magick.h"
-#include "magick/memory_.h"
-#include "magick/monitor.h"
-#include "magick/monitor-private.h"
-#include "magick/option.h"
-#include "magick/resource_.h"
-#include "magick/quantum-private.h"
-#include "magick/static.h"
-#include "magick/string_.h"
-#include "magick/module.h"
-#include "magick/utility.h"
-#include "magick/xwindow-private.h"
+#include "MagickCore/studio.h"
+#include "MagickCore/blob.h"
+#include "MagickCore/blob-private.h"
+#include "MagickCore/client.h"
+#include "MagickCore/constitute.h"
+#include "MagickCore/exception.h"
+#include "MagickCore/exception-private.h"
+#include "MagickCore/image.h"
+#include "MagickCore/image-private.h"
+#include "MagickCore/list.h"
+#include "MagickCore/magick.h"
+#include "MagickCore/memory_.h"
+#include "MagickCore/monitor.h"
+#include "MagickCore/monitor-private.h"
+#include "MagickCore/option.h"
+#include "MagickCore/resource_.h"
+#include "MagickCore/quantum-private.h"
+#include "MagickCore/static.h"
+#include "MagickCore/string_.h"
+#include "MagickCore/module.h"
+#include "MagickCore/utility.h"
+#include "MagickCore/xwindow-private.h"
 #if defined(MAGICKCORE_GVC_DELEGATE)
 #undef HAVE_CONFIG_H
 #include <gvc.h>
@@ -125,16 +125,21 @@ static Image *ReadDOTImage(const ImageInfo *image_info,ExceptionInfo *exception)
       image_info->filename);
   assert(exception != (ExceptionInfo *) NULL);
   assert(exception->signature == MagickSignature);
-  image=AcquireImage(image_info);
+  image=AcquireImage(image_info,exception);
   status=OpenBlob(image_info,image,ReadBinaryBlobMode,exception);
   if (status == MagickFalse)
     return((Image *) NULL);
   read_info=CloneImageInfo(image_info);
-  (void) CopyMagickString(read_info->magick,"PS",MaxTextExtent);
+  SetImageInfoBlob(read_info,(void *) NULL,0);
+  (void) CopyMagickString(read_info->magick,"SVG",MaxTextExtent);
   (void) AcquireUniqueFilename(read_info->filename);
-  (void) FormatMagickString(command,MaxTextExtent,"-Tps2 -o%s %s",
+  (void) FormatLocaleString(command,MaxTextExtent,"-Tsvg -o%s %s",
     read_info->filename,image_info->filename);
+#if !defined(WITH_CGRAPH)
   graph=agread(GetBlobFileHandle(image));
+#else
+  graph=agread(GetBlobFileHandle(image),(Agdisc_t *) NULL);
+#endif
   if (graph == (graph_t *) NULL)
     return ((Image *) NULL);
   option=GetImageOption(image_info,"dot:layout-engine");
@@ -142,10 +147,11 @@ static Image *ReadDOTImage(const ImageInfo *image_info,ExceptionInfo *exception)
     gvLayout(graphic_context,graph,(char *) "dot");
   else
     gvLayout(graphic_context,graph,(char *) option);
-  gvRenderFilename(graphic_context,graph,(char *) "ps2",read_info->filename);
+  gvRenderFilename(graphic_context,graph,(char *) "svg",read_info->filename);
   gvFreeLayout(graphic_context,graph);
+  agclose(graph);
   /*
-    Read Postscript graph.
+    Read SVG graph.
   */
   image=ReadImage(read_info,exception);
   (void) RelinquishUniqueFileResource(read_info->filename);
@@ -176,10 +182,10 @@ static Image *ReadDOTImage(const ImageInfo *image_info,ExceptionInfo *exception)
 %
 %  The format of the RegisterDOTImage method is:
 %
-%      unsigned long RegisterDOTImage(void)
+%      size_t RegisterDOTImage(void)
 %
 */
-ModuleExport unsigned long RegisterDOTImage(void)
+ModuleExport size_t RegisterDOTImage(void)
 {
   MagickInfo
     *entry;
@@ -187,6 +193,14 @@ ModuleExport unsigned long RegisterDOTImage(void)
   entry=SetMagickInfo("DOT");
 #if defined(MAGICKCORE_GVC_DELEGATE)
   entry->decoder=(DecodeImageHandler *) ReadDOTImage;
+#endif
+  entry->blob_support=MagickFalse;
+  entry->description=ConstantString("Graphviz");
+  entry->module=ConstantString("DOT");
+  (void) RegisterMagickInfo(entry);
+  entry=SetMagickInfo("GV");
+#if defined(MAGICKCORE_GVC_DELEGATE)
+  entry->decoder=(DecodeImageHandler *) ReadDOTImage;
 #endif
   entry->blob_support=MagickFalse;
   entry->description=ConstantString("Graphviz");
@@ -219,6 +233,7 @@ ModuleExport unsigned long RegisterDOTImage(void)
 */
 ModuleExport void UnregisterDOTImage(void)
 {
+  (void) UnregisterMagickInfo("GV");
   (void) UnregisterMagickInfo("DOT");
 #if defined(MAGICKCORE_GVC_DELEGATE)
   gvFreeContext(graphic_context);