diff trunk/src/Modules/Output/Graphics/Devices/GraphicsOutputDeviceCairo.cc @ 443:f2dd5788e1d8

- Support for output as a set of PNG files.
author tomwalters
date Sun, 14 Nov 2010 05:56:50 +0000
parents 9c26f6532ea3
children 5203f75fba22
line wrap: on
line diff
--- a/trunk/src/Modules/Output/Graphics/Devices/GraphicsOutputDeviceCairo.cc	Sun Nov 07 07:38:20 2010 +0000
+++ b/trunk/src/Modules/Output/Graphics/Devices/GraphicsOutputDeviceCairo.cc	Sun Nov 14 05:56:50 2010 +0000
@@ -45,12 +45,37 @@
   m_iFileNumber = 0;
   m_iVertexType = VertexTypeNone;
   m_bUseMemoryBuffer=false;
-  parameters_->DefaultString("output.img.format", ".png");
+  parameters_->DefaultString("output.img.format", "png");
+}
+
+void GraphicsOutputDeviceCairo::Reset(Parameters* global_parameters) {
+  Initialize(global_parameters);
+}
+
+bool GraphicsOutputDeviceCairo::Initialize(Parameters *global_parameters) {
+  global_parameters_ = global_parameters;
+#ifdef _WINDOWS
+  string pathsep("\\");
+#else
+  string pathsep("/");
+#endif
+  directory_ = global_parameters->GetString("output_filename_base") + pathsep;
+    //! \todo Make build system check for mkdtemp() to use it when available. See TODO.txt.
+#ifdef _WINDOWS
+  if (_mkdir(directory_.c_str()) < 0) {
+    LOG_ERROR(_T("Couldn't create directory for image output."));
+    return false;
+  }
+#else
+  mkdir(directory_.c_str(), S_IRWXU);
+#endif
+  InitialzeInternal();
+  return true;
 }
 
 bool GraphicsOutputDeviceCairo::Initialize(string directory) {
   directory_ = directory;
-  InititalzeInternal();
+  InitialzeInternal();
 
   /* Try to open an image to see if everything is allright. We want to avoid
    * errors in the main Process()ing loop. */
@@ -71,7 +96,7 @@
     return(true);
 }*/
 
-void GraphicsOutputDeviceCairo::InititalzeInternal() {
+void GraphicsOutputDeviceCairo::InitialzeInternal() {
    AIM_ASSERT(parameters_);
 
   parameters_->DefaultString("output.img.color.background", "black");
@@ -235,12 +260,11 @@
                        1 - m_aPrevY[2], m_aPrevX[2] - m_aPrevX[0],
                        y - m_aPrevY[2]);
       cairo_fill (m_cCr);
-      
+
       /*cairo_move_to(m_cCr, , );
       cairo_line_to(m_cCr, , 1 - m_aPrevY[1]);
       cairo_line_to(m_cCr, x, y);
       cairo_line_to(m_cCr, m_aPrevX[2], 1 - m_aPrevY[2]);*/
- 
 
       // Last vertices of this quad are the first of the next
       m_aPrevX[0] = m_aPrevX[2];