text: /*=========================================================================
  
    Program:   Visualization Toolkit
    Module:    vtkWin32ProcessOutputWindow.h
  
    Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
    All rights reserved.
    See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
  
       This software is distributed WITHOUT ANY WARRANTY; without even
       the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
       PURPOSE.  See the above copyright notice for more information.
  
  =========================================================================*/
  /**
   * @class   vtkWin32ProcessOutputWindow
   * @brief   Win32-specific output window class
   *
   * vtkWin32ProcessOutputWindow executes a process and sends messages
   * to its standard input pipe.  This is useful to have a separate
   * process display VTK errors so that if a VTK application crashes,
   * the error messages are still available.
  */
  
  #ifndef vtkWin32ProcessOutputWindow_h
  #define vtkWin32ProcessOutputWindow_h
  
  #include "vtkCommonCoreModule.h" // For export macro
  #include "vtkOutputWindow.h"
  
  class VTKCOMMONCORE_EXPORT vtkWin32ProcessOutputWindow : public vtkOutputWindow
  {
  public:
    vtkTypeMacro(vtkWin32ProcessOutputWindow,vtkOutputWindow);
    static vtkWin32ProcessOutputWindow* New();
    void PrintSelf(ostream& os, vtkIndent indent) override;
  
    /**
     * Send text to the output window process.
     */
    void DisplayText(const char*) override;
  
  protected:
    vtkWin32ProcessOutputWindow();
    ~vtkWin32ProcessOutputWindow();
  
    int Initialize();
    void Write(const char* data, size_t length);
  
    // The write end of the pipe to the child process.
    vtkWindowsHANDLE OutputPipe;
  
    // Whether the pipe has been broken.
    int Broken;
  
    // Count the number of times a new child has been initialized.
    unsigned int Count;
  private:
    vtkWin32ProcessOutputWindow(const vtkWin32ProcessOutputWindow&) = delete;
    void operator=(const vtkWin32ProcessOutputWindow&) = delete;
  };
  
  #endif
  