Global.cpp 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  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. }
  40. void Framework::releaseFramework()
  41. {
  42. if (!istInitialisiert) return;
  43. thRegister->cleanUpClosedThreads();
  44. dlls->release();
  45. TexturList::destroy();
  46. if (logFile) logFile->release();
  47. delete thRegister;
  48. istInitialisiert = 0;
  49. }
  50. bool Framework::istThreadOk(Thread* t)
  51. {
  52. return thRegister->isThread(t);
  53. }
  54. // Gibt das Thread Register des Frameworks zurück
  55. Framework::ThreadRegister* Framework::getThreadRegister()
  56. {
  57. return thRegister;
  58. }
  59. #ifdef WIN32
  60. Framework::Punkt Framework::getMausPos()
  61. {
  62. POINT point;
  63. GetCursorPos(&point);
  64. return {point.x, point.y};
  65. }
  66. //! Setzt die Position der Maus auf dem Bildschirm
  67. void Framework::setMausPos(const Punkt& pos)
  68. {
  69. SetCursorPos(pos.x, pos.y);
  70. }
  71. #endif
  72. bool Framework::getMausStand(int taste)
  73. {
  74. return MausStand[taste];
  75. }
  76. bool Framework::getTastenStand(unsigned char taste)
  77. {
  78. #ifdef WIN32
  79. return GetKeyState(taste) & 0x8000;
  80. #else
  81. return 0;
  82. #endif
  83. }
  84. // Legt fest ob Log Nachrichten gespeichert werden sollen
  85. void Framework::setLogEnabled(bool le)
  86. {
  87. logEnabled = le;
  88. }
  89. // Speichert eine Zeile in die Logdatei
  90. // txt: die zu Speichernde Nachricht
  91. void Framework::logLine(char* txt)
  92. {
  93. if (logEnabled)
  94. {
  95. logC.lock();
  96. if (!logFile)
  97. {
  98. Zeit* z = getZeit();
  99. logFile = new Datei();
  100. logFile->setDatei(z->getZeit("y-m-d h-i-s.log"));
  101. logFile->erstellen();
  102. z->release();
  103. }
  104. logFile->open(
  105. Datei::Style::schreiben | Datei::Style::lesen | Datei::Style::ende);
  106. Uhrzeit* uz = getUhrzeit();
  107. Text* time = uz->getUhrzeit("h:i:s");
  108. time->append("_");
  109. time->append((int)GetThreadId(GetCurrentThread()));
  110. time->append(": ");
  111. logFile->schreibe(time->getText(), time->getLength());
  112. time->release();
  113. logFile->schreibe(txt, textLength(txt));
  114. logFile->schreibe("\n", 1);
  115. logFile->close();
  116. logC.unlock();
  117. }
  118. }
  119. // Gibt das DLL Register zurück, in dem alle zurzeit dynamisch geladenen DLL
  120. // Dateien hinterlegt sind
  121. Framework::DLLRegister* Framework::getDLLRegister()
  122. {
  123. return Framework::dlls;
  124. }
  125. //! Versetzt DirectX in den Debug modus
  126. void Framework::setDebugDX(bool debug)
  127. {
  128. debugDX = debug;
  129. }
  130. #ifdef WIN32
  131. // gibt eine Referenz auf die Maus zurück
  132. Framework::Maus& Framework::getMaus()
  133. {
  134. return Framework::MausZeiger;
  135. }
  136. //! setzt den Zustand der Maus auf sichtbar oder unsichtbar
  137. void Framework::setShowCursor(bool visible)
  138. {
  139. CURSORINFO info = {0};
  140. info.cbSize = sizeof(CURSORINFO);
  141. GetCursorInfo(&info);
  142. if ((info.flags != 0) == (visible == 0)) ShowCursor(visible);
  143. }
  144. #endif