00001 /*========================================================================= 00002 00003 Program: Medical Imaging & Interaction Toolkit 00004 Language: C++ 00005 Date: $Date$ 00006 Version: $Revision$ 00007 00008 Copyright (c) German Cancer Research Center, Division of Medical and 00009 Biological Informatics. All rights reserved. 00010 See MITKCopyright.txt or https://www.mitk.org/copyright.html for details. 00011 00012 This software is distributed WITHOUT ANY WARRANTY; without even 00013 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00014 PURPOSE. See the above copyright notices for more information. 00015 00016 =========================================================================*/ 00017 00018 #include "mitkApplicationCursor.h" 00019 00020 #include <iostream> 00021 00022 mitk::ApplicationCursorImplementation* mitk::ApplicationCursor::m_Implementation = NULL; 00023 00024 namespace mitk { 00025 00026 ApplicationCursor::ApplicationCursor() 00027 { 00028 } 00029 00030 ApplicationCursor* ApplicationCursor::GetInstance() 00031 { 00032 static ApplicationCursor* m_Instance = NULL; 00033 if (!m_Instance) 00034 { 00035 m_Instance = new ApplicationCursor(); 00036 } 00037 00038 return m_Instance; 00039 } 00040 00041 void ApplicationCursor::RegisterImplementation(ApplicationCursorImplementation* implementation) 00042 { 00043 m_Implementation = implementation; 00044 } 00045 00046 void ApplicationCursor::PushCursor(const char* XPM[], int hotspotX, int hotspotY) 00047 { 00048 if (m_Implementation) 00049 { 00050 m_Implementation->PushCursor(XPM, hotspotX, hotspotY); 00051 } 00052 else 00053 { 00054 MITK_ERROR << "in mitk::ApplicationCursor::PushCursor(): no implementation registered." << std::endl; 00055 throw std::logic_error("No implementation registered for mitk::ApplicationCursor."); 00056 } 00057 } 00058 00059 void ApplicationCursor::PopCursor() 00060 { 00061 if (m_Implementation) 00062 { 00063 m_Implementation->PopCursor(); 00064 } 00065 else 00066 { 00067 MITK_ERROR << "in mitk::ApplicationCursor::PopCursor(): no implementation registered." << std::endl; 00068 throw std::logic_error("No implementation registered for mitk::ApplicationCursor."); 00069 } 00070 } 00071 00072 const Point2I ApplicationCursor::GetCursorPosition() 00073 { 00074 if (m_Implementation) 00075 { 00076 return m_Implementation->GetCursorPosition(); 00077 } 00078 else 00079 { 00080 MITK_ERROR << "in mitk::ApplicationCursor::GetCursorPosition(): no implementation registered." << std::endl; 00081 throw std::logic_error("No implementation registered for mitk::ApplicationCursor."); 00082 } 00083 } 00084 00085 void ApplicationCursor::SetCursorPosition(const Point2I& p) 00086 { 00087 if (m_Implementation) 00088 { 00089 m_Implementation->SetCursorPosition(p); 00090 } 00091 else 00092 { 00093 MITK_ERROR << "in mitk::ApplicationCursor::SetCursorPosition(): no implementation registered." << std::endl; 00094 throw std::logic_error("No implementation registered for mitk::ApplicationCursor."); 00095 } 00096 } 00097 00098 } // namespace 00099