Global.cpp 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. #define Global
  2. #ifdef WIN32
  3. # include <objidl.h>
  4. #endif
  5. #include "Datei.h"
  6. #include "DLLRegister.h"
  7. #include "Fenster.h"
  8. #include "Globals.h"
  9. #include "Model3DList.h"
  10. #include "TexturList.h"
  11. #include "Thread.h"
  12. #include "Zeit.h"
  13. #ifdef WIN32
  14. # include <GdiPlus.h>
  15. # pragma comment(lib, "gdiplus.lib")
  16. # include "Fenster.h"
  17. # include "Maus.h"
  18. #endif
  19. void Framework::initFramework(HINSTANCE__* hInst)
  20. {
  21. if (istInitialisiert) return;
  22. thRegister = new ThreadRegister();
  23. #ifdef WIN32
  24. Gdiplus::GdiplusStartupInput gdiplusStartupInput;
  25. ULONG_PTR gdiplusToken;
  26. Gdiplus::GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, 0);
  27. msgExit = 0;
  28. MausTrack = 1;
  29. #endif
  30. for (int i = 0; i < 3; ++i)
  31. MausStand[i] = 0;
  32. TexturList::init();
  33. dlls = new DLLRegister();
  34. logEnabled = 0;
  35. logFile = 0;
  36. _hinst = hInst;
  37. istInitialisiert = 1;
  38. debugDX = 0;
  39. cursorVisible = 1;
  40. }
  41. void Framework::releaseFramework()
  42. {
  43. if (!istInitialisiert) return;
  44. thRegister->cleanUpClosedThreads();
  45. dlls->release();
  46. TexturList::destroy();
  47. if (logFile) logFile->release();
  48. delete thRegister;
  49. istInitialisiert = 0;
  50. }
  51. bool Framework::istThreadOk(Thread* t)
  52. {
  53. return thRegister->isThread(t);
  54. }
  55. // Gibt das Thread Register des Frameworks zurück
  56. Framework::ThreadRegister* Framework::getThreadRegister()
  57. {
  58. return thRegister;
  59. }
  60. #ifdef WIN32
  61. Framework::Punkt Framework::getMausPos()
  62. {
  63. POINT point;
  64. GetCursorPos(&point);
  65. return {point.x, point.y};
  66. }
  67. //! Setzt die Position der Maus auf dem Bildschirm
  68. void Framework::setMausPos(const Punkt& pos)
  69. {
  70. SetCursorPos(pos.x, pos.y);
  71. }
  72. #endif
  73. bool Framework::getMausStand(int taste)
  74. {
  75. return MausStand[taste];
  76. }
  77. bool Framework::getTastenStand(unsigned char taste)
  78. {
  79. #ifdef WIN32
  80. return GetKeyState(taste) & 0x8000;
  81. #else
  82. return 0;
  83. #endif
  84. }
  85. // Legt fest ob Log Nachrichten gespeichert werden sollen
  86. void Framework::setLogEnabled(bool le)
  87. {
  88. logEnabled = le;
  89. }
  90. // Speichert eine Zeile in die Logdatei
  91. // txt: die zu Speichernde Nachricht
  92. void Framework::logLine(char* txt)
  93. {
  94. if (logEnabled)
  95. {
  96. logC.lock();
  97. if (!logFile)
  98. {
  99. Zeit* z = getZeit();
  100. logFile = new Datei();
  101. logFile->setDatei(z->getZeit("y-m-d h-i-s.log"));
  102. logFile->erstellen();
  103. z->release();
  104. }
  105. logFile->open(
  106. Datei::Style::schreiben | Datei::Style::lesen | Datei::Style::ende);
  107. Uhrzeit* uz = getUhrzeit();
  108. Text* time = uz->getUhrzeit("h:i:s");
  109. time->append("_");
  110. time->append((int)GetThreadId(GetCurrentThread()));
  111. time->append(": ");
  112. logFile->schreibe(time->getText(), time->getLength());
  113. time->release();
  114. logFile->schreibe(txt, textLength(txt));
  115. logFile->schreibe("\n", 1);
  116. logFile->close();
  117. logC.unlock();
  118. }
  119. }
  120. // Gibt das DLL Register zurück, in dem alle zurzeit dynamisch geladenen DLL
  121. // Dateien hinterlegt sind
  122. Framework::DLLRegister* Framework::getDLLRegister()
  123. {
  124. return Framework::dlls;
  125. }
  126. //! Versetzt DirectX in den Debug modus
  127. void Framework::setDebugDX(bool debug)
  128. {
  129. debugDX = debug;
  130. }
  131. #ifdef WIN32
  132. // gibt eine Referenz auf die Maus zurück
  133. Framework::Maus& Framework::getMaus()
  134. {
  135. return Framework::MausZeiger;
  136. }
  137. //! setzt den Zustand der Maus auf sichtbar oder unsichtbar
  138. void Framework::setShowCursor(bool visible)
  139. {
  140. CURSORINFO info = {0};
  141. info.cbSize = sizeof(CURSORINFO);
  142. GetCursorInfo(&info);
  143. if ((info.flags != 0) == (visible == 0)) ShowCursor(visible);
  144. cursorVisible = visible;
  145. }
  146. #endif