1 /*========================================================================= 2 * 3 * Copyright Insight Software Consortium 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0.txt 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 * 17 *=========================================================================*/ 18 /*========================================================================= 19 * 20 * Portions of this file are subject to the VTK Toolkit Version 3 copyright. 21 * 22 * Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 23 * 24 * For complete copyright, license and disclaimer of warranty information 25 * please refer to the NOTICE file at the top of the ITK source tree. 26 * 27 *=========================================================================*/ 28 #ifndef itkLoggerOutput_h 29 #define itkLoggerOutput_h 30 31 #include "itkOutputWindow.h" 32 #include "itkLogger.h" 33 34 namespace itk 35 { 36 /** \class LoggerOutput 37 * \brief Used for overriding itk::OutputWindow to redirect 38 * messages to itk::Logger. 39 * 40 * Text messages that the system should display to the user are sent to 41 * this object (or subclasses of this object). 42 * 43 * 44 * \author Hee-Su Kim, Compute Science Dept. Kyungpook National University, 45 * ISIS Center, Georgetown University. 46 * 47 * \ingroup OSSystemObjects 48 * \ingroup ITKCommon 49 */ 50 class ITKCommon_EXPORT LoggerOutput:public OutputWindow 51 { 52 public: 53 /** Standard class type aliases. */ 54 using Self = LoggerOutput; 55 using Superclass = OutputWindow; 56 using Pointer = SmartPointer< Self >; 57 using ConstPointer = SmartPointer< const Self >; 58 59 /** Run-time type information (and related methods). */ 60 itkTypeMacro(LoggerOutput, OutputWindow); 61 62 itkNewMacro(LoggerOutput); 63 64 using LoggerType = Logger *; 65 66 /** Send a string to display. */ 67 void DisplayText(const char *t) override; 68 69 /** Send a string as an error message to display. 70 * The default implementation calls DisplayText() but subclasses 71 * could present this message differently. */ 72 void DisplayErrorText(const char *t) override; 73 74 /** Send a string as a warningmessage to display. 75 * The default implementation calls DisplayText() but subclasses 76 * could present this message differently. */ 77 void DisplayWarningText(const char *t) override; 78 79 /** Send a string as a message to display. 80 * The default implementation calls DisplayText() but subclasses 81 * could present this message differently. */ 82 void DisplayGenericOutputText(const char *t) override; 83 84 /** Send a string as a debug message to display. 85 * The default implementation calls DisplayText() but subclasses 86 * could present this message differently. */ 87 void DisplayDebugText(const char *t) override; 88 89 itkSetMacro(Logger, LoggerType); 90 91 itkGetConstMacro(Logger, LoggerType); 92 OverrideITKWindow()93 virtual void OverrideITKWindow() 94 { 95 itk::OutputWindow::SetInstance(this); 96 } 97 98 protected: LoggerOutput()99 LoggerOutput() {} 100 ~LoggerOutput() override = default; 101 void PrintSelf(std::ostream & os, Indent indent) const override; 102 103 private: 104 Logger *m_Logger{nullptr}; 105 }; 106 } // end namespace itk 107 108 #endif // itkLoggerOutput_h 109