commit dd27706f05968422bb51158adfa6bcad4331bce1 Author: Nanogamer7 Date: Wed Apr 17 08:22:26 2024 +0000 deploy: 01ab55acb080944fd89a4f493bd041336ece71bd diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/AnimationHandler_8h_source.html b/AnimationHandler_8h_source.html new file mode 100644 index 0000000..311dbfb --- /dev/null +++ b/AnimationHandler_8h_source.html @@ -0,0 +1,164 @@ + + + + + + + + + SDL Minigame: include/AnimationHandler.h Source File + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
AnimationHandler.h
+
+
+
1#pragma once
+
2#include <cstdint>
+
+ +
4{
+
5 uint8_t index;
+
6 uint8_t frames;
+
7 uint8_t speed;
+
8
+
9 Animation() {}
+
10
+
11 Animation(uint8_t index, uint8_t frames, uint8_t speed)
+
12 {
+
13 this->index = index;
+
14 this->frames = frames;
+
15 this->speed = speed;
+
16 }
+
17};
+
+
18
+
19enum AnimationType //TODO enum class
+
20{
+
21 IDLE = 0,
+
22 WALK = 1
+
23};
+
24
+
25
+
26
+
Definition AnimationHandler.h:4
+
+
+ + + + diff --git a/AssetManager_8h_source.html b/AssetManager_8h_source.html new file mode 100644 index 0000000..25b3d34 --- /dev/null +++ b/AssetManager_8h_source.html @@ -0,0 +1,187 @@ + + + + + + + + + SDL Minigame: include/AssetManager.h Source File + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
AssetManager.h
+
+
+
1#pragma once
+
2#include <SDL_render.h>
+
3#include <SDL_mixer.h>
+
4#include <map>
+
5#include <string>
+
6
+
7#include "Entity.h"
+
8
+
9class Vector2D;
+
10class Manager;
+
11
+
12enum class PowerupType
+
13{
+
14 HEART,
+
15 WALKINGSPEED,
+
16 SHOOTINGSPEED
+
17};
+
18
+
+ +
20{
+
21public:
+
22
+
23 AssetManager(Manager* manager);
+ +
25
+
26 void createProjectile(Vector2D pos, Vector2D velocity, int scale, int range, int speed, const char* texturePath, Entity::TeamLabel teamLabel);
+
27 void createPowerup(Vector2D pos, PowerupType type);
+
28
+
29 Vector2D calculateSpawnPosition();
+
30 PowerupType calculateType();
+
31
+
32 //texture management
+
33 void addTexture(std::string id, const char* path);
+
34
+
35 // sound management
+
36 void addSoundEffect(std::string id, const char* path);
+
37
+
38 SDL_Texture* getTexture(std::string id);
+
39 Mix_Chunk* getSound(std::string id);
+
40
+
41private:
+
42
+
43 Manager* man;
+
44 std::map<std::string, SDL_Texture*> textures;
+
45 std::map<std::string, Mix_Chunk*> soundEffects;
+
46};
+
+
Definition AssetManager.h:20
+
TeamLabel
Allows grouping entities by team association for hits, win conditions, etc.
Definition Entity.h:54
+
Is responsible for managing all entities.
Definition Manager.h:20
+
Definition Vector2D.h:7
+
+
+ + + + diff --git a/ColliderComponent_8h_source.html b/ColliderComponent_8h_source.html new file mode 100644 index 0000000..ba60be5 --- /dev/null +++ b/ColliderComponent_8h_source.html @@ -0,0 +1,170 @@ + + + + + + + + + SDL Minigame: include/ColliderComponent.h Source File + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ColliderComponent.h
+
+
+
1#pragma once
+
2
+
3#include <SDL.h>
+
4
+
5#include "Component.h"
+
6#include "Vector2D.h"
+
7
+ +
9
+
+ +
11{
+
12public:
+
13 SDL_Rect collider;
+
14 const char* tag;
+
15 TransformComponent* transform;
+
16 bool hasCollision; //added for removing collision of destroyed projectiles
+
17 float hitboxScale; //adds a seperate variable for the scale of the hitbox (not the sprite) so each sprite can have a different hitbox size if needed
+
18
+
19 bool isProjectile = false;
+
20
+
21 ColliderComponent(const char* tag);
+
22 ColliderComponent(const char* tag, float hitboxScale);
+
23
+
24 void init() override;
+
25 void update() override;
+
26 void removeCollision();
+
27
+
28 void handleCollision(Vector2D& characterPos, SDL_Rect& characterCollider, SDL_Rect& componentCollider);
+
29};
+
+
Definition ColliderComponent.h:11
+
Definition Component.h:6
+
Definition TransformComponent.h:8
+
Definition Vector2D.h:7
+
+
+ + + + diff --git a/CollisionHandler_8cpp.html b/CollisionHandler_8cpp.html new file mode 100644 index 0000000..fd68fd2 --- /dev/null +++ b/CollisionHandler_8cpp.html @@ -0,0 +1,145 @@ + + + + + + + + + SDL Minigame: src/CollisionHandler.cpp File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CollisionHandler.cpp File Reference
+
+
+
#include "CollisionHandler.h"
+#include "ColliderComponent.h"
+#include "Constants.h"
+#include "Entity.h"
+#include "Manager.h"
+#include "Vector2D.h"
+#include <SDL_rect.h>
+#include <bitset>
+#include <cstdio>
+#include <memory>
+
+Include dependency graph for CollisionHandler.cpp:
+
+
+
+
+
+ + + + diff --git a/CollisionHandler_8cpp__incl.map b/CollisionHandler_8cpp__incl.map new file mode 100644 index 0000000..f640916 --- /dev/null +++ b/CollisionHandler_8cpp__incl.map @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CollisionHandler_8cpp__incl.md5 b/CollisionHandler_8cpp__incl.md5 new file mode 100644 index 0000000..7037ac6 --- /dev/null +++ b/CollisionHandler_8cpp__incl.md5 @@ -0,0 +1 @@ +265a9686ba8e7b12d1be9bddee2edd2c \ No newline at end of file diff --git a/CollisionHandler_8cpp__incl.svg b/CollisionHandler_8cpp__incl.svg new file mode 100644 index 0000000..a75a717 --- /dev/null +++ b/CollisionHandler_8cpp__incl.svg @@ -0,0 +1,787 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +src/CollisionHandler.cpp + + +Node1 + + +src/CollisionHandler.cpp + + + + + +Node2 + + +CollisionHandler.h + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +ColliderComponent.h + + + + + +Node1->Node3 + + + + + + + + +Node6 + + +Vector2D.h + + + + + +Node1->Node6 + + + + + + + + +Node7 + + +SDL_rect.h + + + + + +Node1->Node7 + + + + + + + + +Node8 + + +Constants.h + + + + + +Node1->Node8 + + + + + + + + +Node10 + + +Entity.h + + + + + +Node1->Node10 + + + + + + + + +Node12 + + +memory + + + + + +Node1->Node12 + + + + + + + + +Node13 + + +bitset + + + + + +Node1->Node13 + + + + + + + + +Node22 + + +Manager.h + + + + + +Node1->Node22 + + + + + + + + +Node27 + + +cstdio + + + + + +Node1->Node27 + + + + + + + + +Node2->Node3 + + + + + + + + +Node2->Node6 + + + + + + + + +Node2->Node7 + + + + + + + + +Node2->Node8 + + + + + + + + +Node2->Node10 + + + + + + + + +Node2->Node13 + + + + + + + + +Node14 + + +vector + + + + + +Node2->Node14 + + + + + + + + +Node16 + + +SpriteComponent.h + + + + + +Node2->Node16 + + + + + + + + +Node2->Node22 + + + + + + + + +Node24 + + +initializer_list + + + + + +Node2->Node24 + + + + + + + + +Node25 + + +tuple + + + + + +Node2->Node25 + + + + + + + + +Node26 + + +utility + + + + + +Node2->Node26 + + + + + + + + +Node4 + + +SDL.h + + + + + +Node3->Node4 + + + + + + + + +Node5 + + +Component.h + + + + + +Node3->Node5 + + + + + + + + +Node3->Node6 + + + + + + + + +Node6->Node4 + + + + + + + + +Node6->Node7 + + + + + + + + +Node9 + + +cstddef + + + + + +Node8->Node9 + + + + + + + + +Node10->Node3 + + + + + + + + +Node10->Node8 + + + + + + + + +Node11 + + +array + + + + + +Node10->Node11 + + + + + + + + +Node10->Node12 + + + + + + + + +Node10->Node13 + + + + + + + + +Node10->Node14 + + + + + + + + +Node15 + + +ECS.h + + + + + +Node10->Node15 + + + + + + + + +Node15->Node5 + + + + + + + + +Node15->Node8 + + + + + + + + +Node16->Node5 + + + + + + + + +Node16->Node12 + + + + + + + + +Node17 + + +map + + + + + +Node16->Node17 + + + + + + + + +Node18 + + +SDL_render.h + + + + + +Node16->Node18 + + + + + + + + +Node19 + + +AnimationHandler.h + + + + + +Node16->Node19 + + + + + + + + +Node21 + + +Direction.h + + + + + +Node16->Node21 + + + + + + + + +Node20 + + +cstdint + + + + + +Node19->Node20 + + + + + + + + +Node22->Node8 + + + + + + + + +Node22->Node10 + + + + + + + + +Node22->Node11 + + + + + + + + +Node22->Node12 + + + + + + + + +Node22->Node14 + + + + + + + + +Node23 + + +iostream + + + + + +Node22->Node23 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CollisionHandler_8cpp__incl_org.svg b/CollisionHandler_8cpp__incl_org.svg new file mode 100644 index 0000000..3ec276e --- /dev/null +++ b/CollisionHandler_8cpp__incl_org.svg @@ -0,0 +1,705 @@ + + + + + + +src/CollisionHandler.cpp + + +Node1 + + +src/CollisionHandler.cpp + + + + + +Node2 + + +CollisionHandler.h + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +ColliderComponent.h + + + + + +Node1->Node3 + + + + + + + + +Node6 + + +Vector2D.h + + + + + +Node1->Node6 + + + + + + + + +Node7 + + +SDL_rect.h + + + + + +Node1->Node7 + + + + + + + + +Node8 + + +Constants.h + + + + + +Node1->Node8 + + + + + + + + +Node10 + + +Entity.h + + + + + +Node1->Node10 + + + + + + + + +Node12 + + +memory + + + + + +Node1->Node12 + + + + + + + + +Node13 + + +bitset + + + + + +Node1->Node13 + + + + + + + + +Node22 + + +Manager.h + + + + + +Node1->Node22 + + + + + + + + +Node27 + + +cstdio + + + + + +Node1->Node27 + + + + + + + + +Node2->Node3 + + + + + + + + +Node2->Node6 + + + + + + + + +Node2->Node7 + + + + + + + + +Node2->Node8 + + + + + + + + +Node2->Node10 + + + + + + + + +Node2->Node13 + + + + + + + + +Node14 + + +vector + + + + + +Node2->Node14 + + + + + + + + +Node16 + + +SpriteComponent.h + + + + + +Node2->Node16 + + + + + + + + +Node2->Node22 + + + + + + + + +Node24 + + +initializer_list + + + + + +Node2->Node24 + + + + + + + + +Node25 + + +tuple + + + + + +Node2->Node25 + + + + + + + + +Node26 + + +utility + + + + + +Node2->Node26 + + + + + + + + +Node4 + + +SDL.h + + + + + +Node3->Node4 + + + + + + + + +Node5 + + +Component.h + + + + + +Node3->Node5 + + + + + + + + +Node3->Node6 + + + + + + + + +Node6->Node4 + + + + + + + + +Node6->Node7 + + + + + + + + +Node9 + + +cstddef + + + + + +Node8->Node9 + + + + + + + + +Node10->Node3 + + + + + + + + +Node10->Node8 + + + + + + + + +Node11 + + +array + + + + + +Node10->Node11 + + + + + + + + +Node10->Node12 + + + + + + + + +Node10->Node13 + + + + + + + + +Node10->Node14 + + + + + + + + +Node15 + + +ECS.h + + + + + +Node10->Node15 + + + + + + + + +Node15->Node5 + + + + + + + + +Node15->Node8 + + + + + + + + +Node16->Node5 + + + + + + + + +Node16->Node12 + + + + + + + + +Node17 + + +map + + + + + +Node16->Node17 + + + + + + + + +Node18 + + +SDL_render.h + + + + + +Node16->Node18 + + + + + + + + +Node19 + + +AnimationHandler.h + + + + + +Node16->Node19 + + + + + + + + +Node21 + + +Direction.h + + + + + +Node16->Node21 + + + + + + + + +Node20 + + +cstdint + + + + + +Node19->Node20 + + + + + + + + +Node22->Node8 + + + + + + + + +Node22->Node10 + + + + + + + + +Node22->Node11 + + + + + + + + +Node22->Node12 + + + + + + + + +Node22->Node14 + + + + + + + + +Node23 + + +iostream + + + + + +Node22->Node23 + + + + + + + + diff --git a/CollisionHandler_8h.html b/CollisionHandler_8h.html new file mode 100644 index 0000000..2cfc749 --- /dev/null +++ b/CollisionHandler_8h.html @@ -0,0 +1,176 @@ + + + + + + + + + SDL Minigame: include/CollisionHandler.h File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CollisionHandler.h File Reference
+
+
+
#include "ColliderComponent.h"
+#include "Constants.h"
+#include "Entity.h"
+#include "SDL_rect.h"
+#include "SpriteComponent.h"
+#include "Vector2D.h"
+#include "Manager.h"
+#include <bitset>
+#include <initializer_list>
+#include <tuple>
+#include <utility>
+#include <vector>
+
+Include dependency graph for CollisionHandler.h:
+
+
+
+
+This graph shows which files directly or indirectly include this file:
+
+
+
+
+

Go to the source code of this file.

+ + + + +

+Classes

class  CollisionHandler
 
+ + + +

+Typedefs

+using IntersectionBitSet = std::bitset<DIRECTION_C>
 
+ + + +

+Variables

+constexpr uint8_t DIRECTION_C = 4
 
+
+
+ + + + diff --git a/CollisionHandler_8h.js b/CollisionHandler_8h.js new file mode 100644 index 0000000..44691a7 --- /dev/null +++ b/CollisionHandler_8h.js @@ -0,0 +1,4 @@ +var CollisionHandler_8h = +[ + [ "CollisionHandler", "classCollisionHandler.html", "classCollisionHandler" ] +]; \ No newline at end of file diff --git a/CollisionHandler_8h__dep__incl.map b/CollisionHandler_8h__dep__incl.map new file mode 100644 index 0000000..6181cf3 --- /dev/null +++ b/CollisionHandler_8h__dep__incl.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/CollisionHandler_8h__dep__incl.md5 b/CollisionHandler_8h__dep__incl.md5 new file mode 100644 index 0000000..79c711e --- /dev/null +++ b/CollisionHandler_8h__dep__incl.md5 @@ -0,0 +1 @@ +b9f92a1733ee6d15b423e267a90d53a8 \ No newline at end of file diff --git a/CollisionHandler_8h__dep__incl.svg b/CollisionHandler_8h__dep__incl.svg new file mode 100644 index 0000000..3b7b061 --- /dev/null +++ b/CollisionHandler_8h__dep__incl.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + +include/CollisionHandler.h + + +Node1 + + +include/CollisionHandler.h + + + + + +Node2 + + +src/CollisionHandler.cpp + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +src/TransformComponent.cpp + + + + + +Node1->Node3 + + + + + + + + + + + + + diff --git a/CollisionHandler_8h__dep__incl_org.svg b/CollisionHandler_8h__dep__incl_org.svg new file mode 100644 index 0000000..02bf7d5 --- /dev/null +++ b/CollisionHandler_8h__dep__incl_org.svg @@ -0,0 +1,57 @@ + + + + + + +include/CollisionHandler.h + + +Node1 + + +include/CollisionHandler.h + + + + + +Node2 + + +src/CollisionHandler.cpp + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +src/TransformComponent.cpp + + + + + +Node1->Node3 + + + + + + + + diff --git a/CollisionHandler_8h__incl.map b/CollisionHandler_8h__incl.map new file mode 100644 index 0000000..52cd64d --- /dev/null +++ b/CollisionHandler_8h__incl.map @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CollisionHandler_8h__incl.md5 b/CollisionHandler_8h__incl.md5 new file mode 100644 index 0000000..be82b5e --- /dev/null +++ b/CollisionHandler_8h__incl.md5 @@ -0,0 +1 @@ +0ff17a0d4e039022745ab5906e3f151d \ No newline at end of file diff --git a/CollisionHandler_8h__incl.svg b/CollisionHandler_8h__incl.svg new file mode 100644 index 0000000..34cccf5 --- /dev/null +++ b/CollisionHandler_8h__incl.svg @@ -0,0 +1,679 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +include/CollisionHandler.h + + +Node1 + + +include/CollisionHandler.h + + + + + +Node2 + + +ColliderComponent.h + + + + + +Node1->Node2 + + + + + + + + +Node5 + + +Vector2D.h + + + + + +Node1->Node5 + + + + + + + + +Node6 + + +SDL_rect.h + + + + + +Node1->Node6 + + + + + + + + +Node7 + + +Constants.h + + + + + +Node1->Node7 + + + + + + + + +Node9 + + +Entity.h + + + + + +Node1->Node9 + + + + + + + + +Node12 + + +bitset + + + + + +Node1->Node12 + + + + + + + + +Node13 + + +vector + + + + + +Node1->Node13 + + + + + + + + +Node15 + + +SpriteComponent.h + + + + + +Node1->Node15 + + + + + + + + +Node21 + + +Manager.h + + + + + +Node1->Node21 + + + + + + + + +Node23 + + +initializer_list + + + + + +Node1->Node23 + + + + + + + + +Node24 + + +tuple + + + + + +Node1->Node24 + + + + + + + + +Node25 + + +utility + + + + + +Node1->Node25 + + + + + + + + +Node3 + + +SDL.h + + + + + +Node2->Node3 + + + + + + + + +Node4 + + +Component.h + + + + + +Node2->Node4 + + + + + + + + +Node2->Node5 + + + + + + + + +Node5->Node3 + + + + + + + + +Node5->Node6 + + + + + + + + +Node8 + + +cstddef + + + + + +Node7->Node8 + + + + + + + + +Node9->Node2 + + + + + + + + +Node9->Node7 + + + + + + + + +Node10 + + +array + + + + + +Node9->Node10 + + + + + + + + +Node11 + + +memory + + + + + +Node9->Node11 + + + + + + + + +Node9->Node12 + + + + + + + + +Node9->Node13 + + + + + + + + +Node14 + + +ECS.h + + + + + +Node9->Node14 + + + + + + + + +Node14->Node4 + + + + + + + + +Node14->Node7 + + + + + + + + +Node15->Node4 + + + + + + + + +Node15->Node11 + + + + + + + + +Node16 + + +map + + + + + +Node15->Node16 + + + + + + + + +Node17 + + +SDL_render.h + + + + + +Node15->Node17 + + + + + + + + +Node18 + + +AnimationHandler.h + + + + + +Node15->Node18 + + + + + + + + +Node20 + + +Direction.h + + + + + +Node15->Node20 + + + + + + + + +Node19 + + +cstdint + + + + + +Node18->Node19 + + + + + + + + +Node21->Node7 + + + + + + + + +Node21->Node9 + + + + + + + + +Node21->Node10 + + + + + + + + +Node21->Node11 + + + + + + + + +Node21->Node13 + + + + + + + + +Node22 + + +iostream + + + + + +Node21->Node22 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CollisionHandler_8h__incl_org.svg b/CollisionHandler_8h__incl_org.svg new file mode 100644 index 0000000..ec8eb4d --- /dev/null +++ b/CollisionHandler_8h__incl_org.svg @@ -0,0 +1,597 @@ + + + + + + +include/CollisionHandler.h + + +Node1 + + +include/CollisionHandler.h + + + + + +Node2 + + +ColliderComponent.h + + + + + +Node1->Node2 + + + + + + + + +Node5 + + +Vector2D.h + + + + + +Node1->Node5 + + + + + + + + +Node6 + + +SDL_rect.h + + + + + +Node1->Node6 + + + + + + + + +Node7 + + +Constants.h + + + + + +Node1->Node7 + + + + + + + + +Node9 + + +Entity.h + + + + + +Node1->Node9 + + + + + + + + +Node12 + + +bitset + + + + + +Node1->Node12 + + + + + + + + +Node13 + + +vector + + + + + +Node1->Node13 + + + + + + + + +Node15 + + +SpriteComponent.h + + + + + +Node1->Node15 + + + + + + + + +Node21 + + +Manager.h + + + + + +Node1->Node21 + + + + + + + + +Node23 + + +initializer_list + + + + + +Node1->Node23 + + + + + + + + +Node24 + + +tuple + + + + + +Node1->Node24 + + + + + + + + +Node25 + + +utility + + + + + +Node1->Node25 + + + + + + + + +Node3 + + +SDL.h + + + + + +Node2->Node3 + + + + + + + + +Node4 + + +Component.h + + + + + +Node2->Node4 + + + + + + + + +Node2->Node5 + + + + + + + + +Node5->Node3 + + + + + + + + +Node5->Node6 + + + + + + + + +Node8 + + +cstddef + + + + + +Node7->Node8 + + + + + + + + +Node9->Node2 + + + + + + + + +Node9->Node7 + + + + + + + + +Node10 + + +array + + + + + +Node9->Node10 + + + + + + + + +Node11 + + +memory + + + + + +Node9->Node11 + + + + + + + + +Node9->Node12 + + + + + + + + +Node9->Node13 + + + + + + + + +Node14 + + +ECS.h + + + + + +Node9->Node14 + + + + + + + + +Node14->Node4 + + + + + + + + +Node14->Node7 + + + + + + + + +Node15->Node4 + + + + + + + + +Node15->Node11 + + + + + + + + +Node16 + + +map + + + + + +Node15->Node16 + + + + + + + + +Node17 + + +SDL_render.h + + + + + +Node15->Node17 + + + + + + + + +Node18 + + +AnimationHandler.h + + + + + +Node15->Node18 + + + + + + + + +Node20 + + +Direction.h + + + + + +Node15->Node20 + + + + + + + + +Node19 + + +cstdint + + + + + +Node18->Node19 + + + + + + + + +Node21->Node7 + + + + + + + + +Node21->Node9 + + + + + + + + +Node21->Node10 + + + + + + + + +Node21->Node11 + + + + + + + + +Node21->Node13 + + + + + + + + +Node22 + + +iostream + + + + + +Node21->Node22 + + + + + + + + diff --git a/CollisionHandler_8h_source.html b/CollisionHandler_8h_source.html new file mode 100644 index 0000000..19d0836 --- /dev/null +++ b/CollisionHandler_8h_source.html @@ -0,0 +1,205 @@ + + + + + + + + + SDL Minigame: include/CollisionHandler.h Source File + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CollisionHandler.h
+
+
+Go to the documentation of this file.
1#pragma once
+
2
+
6
+
7#include "ColliderComponent.h"
+
8#include "Constants.h"
+
9#include "Entity.h"
+
10#include "SDL_rect.h"
+
11#include "SpriteComponent.h"
+
12#include "Vector2D.h"
+
13#include "Manager.h"
+
14
+
15#include <bitset>
+
16#include <initializer_list>
+
17#include <tuple>
+
18#include <utility>
+
19#include <vector>
+
20
+ +
22class Entity;
+
23
+
24// [IntersectionBitSet]
+
25constexpr uint8_t DIRECTION_C = 4;
+
26
+
27using IntersectionBitSet = std::bitset<DIRECTION_C>;
+
28// [IntersectionBitSet]
+
29
+
+ +
31{
+
32private:
+
33 Manager& manager;
+
34
+
35public:
+
36
+
37 CollisionHandler(Manager& mManager) :
+
38 manager(mManager) { };
+ +
40
+
41 static IntersectionBitSet getIntersection( // intersections relative to entityA
+
42 Entity* entityA,
+
43 Entity* entityB,
+
44 Vector2D posModA = Vector2D(0,0),
+
45 Vector2D posModB = Vector2D(0,0));
+
46 static IntersectionBitSet getIntersectionWithBounds( // will fail to determine direction if speed high enough to switch from no collision to full overlap in one tick
+
47 Entity* entity,
+
48 Vector2D posMod = Vector2D(0,0));
+
49
+
50 // temporary function, remove once game.cpp cleaned up
+
51 std::vector<ColliderComponent*> getColliders(
+
52 std::initializer_list<Entity::GroupLabel> const& groupLabels,
+
53 std::initializer_list<Entity::TeamLabel> const& teamLabels = {},
+
54 bool negateTeam = false);
+
55
+
70 template<typename T>
+ +
72 Entity* entity,
+
73 Vector2D posMod = {},
+
74 std::initializer_list<Entity::GroupLabel> const& groupLabels = {},
+
75 std::initializer_list<Entity::TeamLabel> const& teamLabels = {},
+
76 bool negateTeam = false);
+
77
+
78 void update();
+
79};
+
+
Definition ColliderComponent.h:11
+
Definition CollisionHandler.h:31
+
T getAnyIntersection(Entity *entity, Vector2D posMod={}, std::initializer_list< Entity::GroupLabel > const &groupLabels={}, std::initializer_list< Entity::TeamLabel > const &teamLabels={}, bool negateTeam=false)
Tests entity against all entities with the specified labels for a collision.
+
Main class for any object in game, stores associations, labeling and components.
Definition Entity.h:29
+
Is responsible for managing all entities.
Definition Manager.h:20
+
Definition Vector2D.h:7
+
+
+ + + + diff --git a/Component_8h_source.html b/Component_8h_source.html new file mode 100644 index 0000000..b1c1163 --- /dev/null +++ b/Component_8h_source.html @@ -0,0 +1,154 @@ + + + + + + + + + SDL Minigame: include/Component.h Source File + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Component.h
+
+
+
1#pragma once
+
2
+
3class Entity;
+
4
+
+ +
6{
+
7public:
+
8 Entity* entity;
+
9
+
10 virtual void init() {}
+
11 virtual void update() {}
+
12 virtual void draw() {}
+
13
+
14 virtual ~Component() = default;
+
15};
+
+
Definition Component.h:6
+
Main class for any object in game, stores associations, labeling and components.
Definition Entity.h:29
+
+
+ + + + diff --git a/Components_8h_source.html b/Components_8h_source.html new file mode 100644 index 0000000..bccc5d2 --- /dev/null +++ b/Components_8h_source.html @@ -0,0 +1,148 @@ + + + + + + + + + SDL Minigame: include/Components.h Source File + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Components.h
+
+
+
1#pragma once
+
2
+
3#include "ECS.h"
+
4#include "Component.h"
+
5#include "Manager.h"
+
6#include "Entity.h"
+
7#include "TransformComponent.h"
+
8#include "SpriteComponent.h"
+
9#include "KeyboardController.h"
+
10#include "ColliderComponent.h"
+
11#include "TileComponent.h"
+
12#include "ProjectileComponent.h"
+
13#include "HealthComponent.h"
+
+
+ + + + diff --git a/Constants_8h_source.html b/Constants_8h_source.html new file mode 100644 index 0000000..c63ee5d --- /dev/null +++ b/Constants_8h_source.html @@ -0,0 +1,165 @@ + + + + + + + + + SDL Minigame: include/Constants.h Source File + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Constants.h
+
+
+
1#pragma once
+
2
+
3#include <cstddef>
+
4
+
5using Group = std::size_t;
+
6using Team = std::size_t;
+
7
+
8constexpr int CHARACTER_COUNT = 4;
+
9
+
10constexpr std::size_t MAX_COMPONENTS = 32;
+
11constexpr std::size_t MAX_GROUPS = 32;
+
12constexpr std::size_t MAX_STATS = 8;
+
13constexpr std::size_t MAX_TEAMS = 8;
+
14
+
15constexpr int SCREEN_SIZE_HEIGHT = 640;
+
16constexpr int SCREEN_SIZE_WIDTH = 800;
+
17
+
18constexpr int FPS = 60;
+
19
+
20constexpr int TILE_SIZE = 32;
+
21
+
22constexpr int MAP_SIZE_X = 25;
+
23constexpr int MAP_SIZE_Y = 20;
+
24
+
25constexpr int SPAWN_ATTEMPTS = 20;
+
26
+
27constexpr int BUFF_DURATION = 240;
+
28
+
29constexpr int BUFF_VALUE = 1;
+
30
+
+
+ + + + diff --git a/Defines_8h_source.html b/Defines_8h_source.html new file mode 100644 index 0000000..8284ce5 --- /dev/null +++ b/Defines_8h_source.html @@ -0,0 +1,136 @@ + + + + + + + + + SDL Minigame: include/Defines.h Source File + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Defines.h
+
+
+
1#pragma once
+
+
+ + + + diff --git a/Direction_8h_source.html b/Direction_8h_source.html new file mode 100644 index 0000000..6a0dfaa --- /dev/null +++ b/Direction_8h_source.html @@ -0,0 +1,144 @@ + + + + + + + + + SDL Minigame: include/Direction.h Source File + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Direction.h
+
+
+
1#pragma once
+
2
+
3enum class Direction
+
4{
+
5 LEFT,
+
6 RIGHT,
+
7 UP,
+
8 DOWN
+
9};
+
+
+ + + + diff --git a/ECS_8h_source.html b/ECS_8h_source.html new file mode 100644 index 0000000..53bc66f --- /dev/null +++ b/ECS_8h_source.html @@ -0,0 +1,161 @@ + + + + + + + + + SDL Minigame: include/ECS.h Source File + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ECS.h
+
+
+
1#pragma once
+
2
+
3#include "Component.h"
+
4#include "Constants.h"
+
5
+
6class Component;
+
7class Entity;
+
8class Manager;
+
9
+
10using ComponentID = std::size_t;
+
11using Group = std::size_t;
+
12
+
13inline ComponentID getNewComponentTypeID()
+
14{
+
15 static ComponentID lastID = 0u;
+
16 return lastID++;
+
17}
+
18
+
19template <typename T> inline ComponentID getComponentTypeID() noexcept
+
20{
+
21 static ComponentID typeID = getNewComponentTypeID();
+
22 return typeID;
+
23}
+
Definition Component.h:6
+
Main class for any object in game, stores associations, labeling and components.
Definition Entity.h:29
+
Is responsible for managing all entities.
Definition Manager.h:20
+
+
+ + + + diff --git a/Entity_8h_source.html b/Entity_8h_source.html new file mode 100644 index 0000000..8b2dbe4 --- /dev/null +++ b/Entity_8h_source.html @@ -0,0 +1,280 @@ + + + + + + + + + SDL Minigame: include/Entity.h Source File + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Entity.h
+
+
+
1#pragma once
+
2
+
3#include <array>
+
4#include <memory>
+
5#include <bitset>
+
6#include <vector>
+
7
+
8#include "ColliderComponent.h"
+
9#include "ECS.h"
+
10#include "Constants.h"
+
11
+
12class Manager;
+
13class Component;
+
14
+
15using ComponentBitSet = std::bitset<MAX_COMPONENTS>;
+
16using GroupBitSet = std::bitset<MAX_GROUPS>;
+
17using ComponentArray = std::array<Component*, MAX_COMPONENTS>;
+
18
+
+
28class Entity
+
29{
+
30public:
+
31
+
+
39 enum class GroupLabel
+
40 {
+
41 MAPTILES,
+
42 PLAYERS,
+
43 ENEMIES,
+
44 COLLIDERS,
+ +
46 HEARTS,
+ +
48 };
+
+
49
+
+
53 enum class TeamLabel
+
54 {
+
55 NONE,
+
56 BLUE,
+
57 RED
+
58 };
+
+
59
+
+
63 explicit Entity(Manager& mManager) :
+
64 manager(mManager) { };
+
+
65
+
66 void update() const;
+
69 void draw() const;
+
70
+
71 bool isActive() const { return this->active; }
+
+
74 void destroy() {
+
75 this->active = false;
+ +
77 this->getComponent<ColliderComponent>().removeCollision();
+
78 }
+
79 }
+
+
80
+
81 bool hasGroup(Group mGroup);
+
82 void addGroup(Group mGroup);
+
83 void delGroup(Group mGroup);
+
86 std::bitset<MAX_GROUPS> getGroupBitSet();
+
87
+
88 void setTeam(TeamLabel teamLabel);
+ +
90
+
92 Manager& getManager() { return manager; };
+
93
+
+
94 template <typename T> bool hasComponent() const
+
95 {
+
96 return componentBitSet[getComponentTypeID<T>()];
+
97 }
+
+
98
+
+
101 template <typename T, typename...TArgs> T& addComponent(TArgs&&...mArgs)
+
102 {
+
103 T* c(new T(std::forward<TArgs>(mArgs)...));
+
104 c->entity = this;
+
105 std::unique_ptr<Component> uPtr{ c };
+
106 this->components.emplace_back(std::move(uPtr));
+
107
+
108 componentArray[getComponentTypeID<T>()] = c;
+
109 componentBitSet[getComponentTypeID<T>()] = true;
+
110
+
111 c->init();
+
112 return *c;
+
113 };
+
+
114
+
+
115 template <typename T> T& getComponent() const
+
116 {
+
117 auto ptr(componentArray[getComponentTypeID<T>()]);
+
118 return *static_cast<T*>(ptr);
+
119 }
+
+
120
+
121private:
+
122 Manager& manager;
+
123 bool active = true;
+
124 std::vector<std::unique_ptr<Component>> components;
+
125
+
126 ComponentArray componentArray = {};
+
127 ComponentBitSet componentBitSet;
+
128 GroupBitSet groupBitSet;
+
129 TeamLabel teamLabel;
+
130};
+
+
Definition Component.h:6
+
Main class for any object in game, stores associations, labeling and components.
Definition Entity.h:29
+
void destroy()
Definition Entity.h:74
+
void addGroup(Group mGroup)
Definition Entity.cpp:22
+
GroupLabel
Used for rendering order (last is highest) or retrieving entities of group.
Definition Entity.h:40
+ + +
@ MAPTILES
Entity using TileComponent.
+ +
@ COLLIDERS
Fixed collider entity, e.g. a wall.
+
@ PLAYERS
Primary entity in player controll.
+ +
bool hasComponent() const
Definition Entity.h:94
+
Entity(Manager &mManager)
Definition Entity.h:63
+
TeamLabel
Allows grouping entities by team association for hits, win conditions, etc.
Definition Entity.h:54
+
@ BLUE
Team blue.
+ +
@ NONE
No team, should be skipped in any checks.
+
Manager & getManager()
Definition Entity.h:92
+
bool hasGroup(Group mGroup)
Definition Entity.cpp:17
+
T & getComponent() const
Definition Entity.h:115
+
std::bitset< MAX_GROUPS > getGroupBitSet()
Definition Entity.cpp:33
+
void setTeam(TeamLabel teamLabel)
Definition Entity.cpp:38
+
void delGroup(Group mGroup)
Definition Entity.cpp:28
+
T & addComponent(TArgs &&...mArgs)
Adds specified type as component and calls Component::init()
Definition Entity.h:101
+
void draw() const
Definition Entity.cpp:12
+
bool isActive() const
Definition Entity.h:71
+
TeamLabel getTeam()
Definition Entity.cpp:44
+
void update() const
Definition Entity.cpp:7
+
Is responsible for managing all entities.
Definition Manager.h:20
+
+
+ + + + diff --git a/GameObject_8h_source.html b/GameObject_8h_source.html new file mode 100644 index 0000000..12f9a4f --- /dev/null +++ b/GameObject_8h_source.html @@ -0,0 +1,159 @@ + + + + + + + + + SDL Minigame: include/GameObject.h Source File + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
GameObject.h
+
+
+
1#pragma once
+
2#include <SDL.h>
+
3
+
+ +
5{
+
6public:
+
7 GameObject(const char* texturesheet, int x, int y);
+
8 ~GameObject() = default;
+
9
+
10 void update();
+
11 void render();
+
12
+
13private:
+
14 int xPos;
+
15 int yPos;
+
16
+
17 SDL_Texture* objTexture;
+
18 SDL_Rect srcRect;
+
19 SDL_Rect destRect;
+
20};
+
+
21
+
Definition GameObject.h:5
+
+
+ + + + diff --git a/Game_8h_source.html b/Game_8h_source.html new file mode 100644 index 0000000..b843773 --- /dev/null +++ b/Game_8h_source.html @@ -0,0 +1,192 @@ + + + + + + + + + SDL Minigame: include/Game.h Source File + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Game.h
+
+
+
1#pragma once
+
2
+
3#include <SDL.h>
+
4#include <SDL_image.h>
+
5#include <SDL_mixer.h>
+
6#include <vector>
+
7
+
8#include "Vector2D.h"
+
9#include "Entity.h"
+
10
+
11class AssetManager;
+ +
13class TextureManager;
+
14class SoundManager;
+
15
+
+
16class Game
+
17{
+
18public:
+
19 Game();
+
20 ~Game();
+
21
+
22 void init(const char* title, int xpos, int ypos, int width, int height, bool fullscreen);
+
23 void selectCharacters(const char* &playerSprite, const char* &enemySprite);
+
24
+
25 void handleEvents();
+
26 void update();
+
27 void render();
+
28 void clean();
+
29 bool running() const;
+
30
+
31 static void addTile(unsigned long id, int x, int y);
+
32 static SDL_Renderer* renderer;
+
33 static SDL_Event event;
+
34 static CollisionHandler* collisionHandler;
+
35 static AssetManager* assets;
+
36 static TextureManager* textureManager;
+
37 static SoundManager* soundManager;
+
38
+
39 void refreshPlayers();
+
40 Entity::TeamLabel getWinner() const;
+
41
+
42private:
+
43 void setWinner(Entity::TeamLabel winningTeam);
+
44
+
45 int counter = 0;
+
46 bool isRunning = false;
+
47 SDL_Window* window;
+
48 Entity::TeamLabel winner;
+
49};
+
+
Definition AssetManager.h:20
+
Definition CollisionHandler.h:31
+
TeamLabel
Allows grouping entities by team association for hits, win conditions, etc.
Definition Entity.h:54
+
Definition Game.h:17
+
Definition SoundManager.h:16
+
Definition TextureManager.h:10
+
+
+ + + + diff --git a/HealthComponent_8h_source.html b/HealthComponent_8h_source.html new file mode 100644 index 0000000..f88a728 --- /dev/null +++ b/HealthComponent_8h_source.html @@ -0,0 +1,169 @@ + + + + + + + + + SDL Minigame: include/HealthComponent.h Source File + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
HealthComponent.h
+
+
+
1#pragma once
+
2
+
3#include "Direction.h"
+
4#include "Component.h"
+
5
+
6class Manager;
+
7
+
+ +
9{
+
10public:
+
11
+
12 HealthComponent(int health, Direction side) : health(health), side(side) {}
+ +
14
+
15 void modifyHealth(int health = -1);
+
16 void setHealth(int health);
+
17 int getHealth() { return this->health; }
+
18
+
19 void init() override;
+
20
+
21 void refreshHearts();
+
22 void createHeartComponents(int x);
+
23
+
24
+
25private:
+
26
+
27 int health;
+
28 Direction side;
+
29};
+
+
Definition Component.h:6
+
Definition HealthComponent.h:9
+
Is responsible for managing all entities.
Definition Manager.h:20
+
+
+ + + + diff --git a/KeyboardController_8h_source.html b/KeyboardController_8h_source.html new file mode 100644 index 0000000..645e989 --- /dev/null +++ b/KeyboardController_8h_source.html @@ -0,0 +1,186 @@ + + + + + + + + + SDL Minigame: include/KeyboardController.h Source File + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
KeyboardController.h
+
+
+
1#pragma once
+
2#include <SDL.h>
+
3
+
4#include "Component.h"
+
5#include "Vector2D.h"
+
6#include "Constants.h"
+
7#include "SoundManager.h"
+
8
+ +
10class SpriteComponent;
+
11
+
+ +
13{
+
14public:
+
15 TransformComponent* transform;
+
16 const uint8_t* keystates = SDL_GetKeyboardState(NULL);
+
17 SDL_Scancode up;
+
18 SDL_Scancode down;
+
19 SDL_Scancode left;
+
20 SDL_Scancode right;
+
21 SDL_Scancode fire;
+
22
+
23 SpriteComponent* sprite;
+
24
+
25 //for attack cooldown in between shots
+
26 uint32_t lastFireTime = 0;
+
27 uint32_t fireCooldown = 1000; //in ms can be adjusted to change possible attack-speed
+
28
+
29 KeyboardController() = default;
+
30 KeyboardController(SDL_Scancode up, SDL_Scancode down, SDL_Scancode left, SDL_Scancode right, SDL_Scancode fire, Vector2D fireVelocity);
+
31 ~KeyboardController() = default;
+
32
+
33 void init() override;
+
34 void update() override;
+
35
+
36 void modifyAtkSpeed(int8_t modifier);
+
37
+
38private:
+
39 //for creation of projectiles
+
40 TransformComponent* player; //for starting position of projectile
+
41 Vector2D fireVelocity; //decide source of projectile and flying direction
+
42 // SoundManager* soundEffect = Game::assets->getSound;
+
43 //SoundManager* soundEffect = new SoundManager();
+
44};
+
+
Definition Component.h:6
+
Definition KeyboardController.h:13
+
Definition SpriteComponent.h:14
+
Definition TransformComponent.h:8
+
Definition Vector2D.h:7
+
+
+ + + + diff --git a/Manager_8h_source.html b/Manager_8h_source.html new file mode 100644 index 0000000..affd3b7 --- /dev/null +++ b/Manager_8h_source.html @@ -0,0 +1,179 @@ + + + + + + + + + SDL Minigame: include/Manager.h Source File + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Manager.h
+
+
+
1#pragma once
+
2#include <iostream>
+
3#include <array>
+
4#include <memory>
+
5#include <vector>
+
6
+
7#include "Constants.h"
+
8#include "Entity.h"
+
9
+
+ +
20{
+
21public:
+
22 void update();
+
23 void draw();
+
26 void refresh();
+
27
+
28 void addToGroup(Entity* mEntity, Group mGroup);
+
29 std::vector<Entity*>& getGroup(Group mGroup);
+
30
+
31 void addToTeam(Entity* mEntity, Team mTeam);
+
32 std::vector<Entity*>& getTeam(Team mTeam);
+
33
+
34 std::vector<Entity*> getAll();
+
35
+
36 Entity& addEntity();
+
37
+
38private:
+
39 std::vector<std::unique_ptr<Entity>> entities;
+
40 std::array<std::vector<Entity*>, MAX_GROUPS> entitiesByGroup;
+
41 std::array<std::vector<Entity*>, MAX_TEAMS> entitiesByTeam;
+
42};
+
+
Main class for any object in game, stores associations, labeling and components.
Definition Entity.h:29
+
Is responsible for managing all entities.
Definition Manager.h:20
+
std::vector< Entity * > & getGroup(Group mGroup)
Definition Manager.cpp:56
+
std::vector< Entity * > & getTeam(Team mTeam)
Definition Manager.cpp:66
+
Entity & addEntity()
Creates and returns a new, empty entity.
Definition Manager.cpp:80
+
void addToTeam(Entity *mEntity, Team mTeam)
Definition Manager.cpp:61
+
void addToGroup(Entity *mEntity, Group mGroup)
Definition Manager.cpp:51
+
std::vector< Entity * > getAll()
Definition Manager.cpp:71
+
void draw()
Definition Manager.cpp:9
+
void refresh()
Definition Manager.cpp:14
+
void update()
Definition Manager.cpp:46
+
+
+ + + + diff --git a/Map_8h_source.html b/Map_8h_source.html new file mode 100644 index 0000000..030a965 --- /dev/null +++ b/Map_8h_source.html @@ -0,0 +1,151 @@ + + + + + + + + + SDL Minigame: include/Map.h Source File + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Map.h
+
+
+
1#pragma once
+
2
+
+
3class Map
+
4{
+
5public:
+
6 Map() = default;
+
7 ~Map() = default;
+
8
+
9 // code comment below is a test for doxygen - do not remove
+
10
+
20 static bool loadMap(const char* path, int sizeX, int sizeY);
+
21};
+
+
Definition Map.h:4
+
static bool loadMap(const char *path, int sizeX, int sizeY)
This loads a map.
Definition Map.cpp:12
+
+
+ + + + diff --git a/PlayerComponent_8h_source.html b/PlayerComponent_8h_source.html new file mode 100644 index 0000000..99d69bb --- /dev/null +++ b/PlayerComponent_8h_source.html @@ -0,0 +1,148 @@ + + + + + + + + + SDL Minigame: include/PlayerComponent.h Source File + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PlayerComponent.h
+
+
+
1#pragma once
+
2
+
3#include "Component.h"
+
4
+
+ +
6{
+
7public:
+
8private:
+
9};
+
+
Definition Component.h:6
+
Definition PlayerComponent.h:6
+
+
+ + + + diff --git a/PopupWindow_8h_source.html b/PopupWindow_8h_source.html new file mode 100644 index 0000000..3bfddb0 --- /dev/null +++ b/PopupWindow_8h_source.html @@ -0,0 +1,168 @@ + + + + + + + + + SDL Minigame: include/PopupWindow.h Source File + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PopupWindow.h
+
+
+
1#pragma once
+
2#include <SDL.h>
+
3#include <SDL_ttf.h>
+
4#include <string>
+
5
+
6#include "Entity.h"
+
7
+
8class Game;
+
9
+
+ +
11
+
12public:
+
13 PopupWindow(const char* title, const std::string& message);
+ +
15
+
16 void handleWinnerEvents();
+
17 bool shouldContinue() const;
+
18
+
19 bool interacted;
+
20
+
21 void renderWinnerPopup(Entity::TeamLabel winner);
+
22
+
23private:
+
24 SDL_Renderer* renderer;
+
25 SDL_Window* window;
+
26 SDL_Texture* texture;
+
27 bool continueGame;
+
28};
+
+
TeamLabel
Allows grouping entities by team association for hits, win conditions, etc.
Definition Entity.h:54
+
Definition Game.h:17
+
Definition PopupWindow.h:10
+
+
+ + + + diff --git a/PowerupComponent_8h_source.html b/PowerupComponent_8h_source.html new file mode 100644 index 0000000..ae954c3 --- /dev/null +++ b/PowerupComponent_8h_source.html @@ -0,0 +1,159 @@ + + + + + + + + + SDL Minigame: include/PowerupComponent.h Source File + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PowerupComponent.h
+
+
+
1#pragma once
+
2
+
3#include "Component.h"
+
4#include "AssetManager.h"
+
5
+
+ +
7{
+
8public:
+
9 PowerupComponent(PowerupType type);
+ +
11
+
12 void update() override;
+
13 void heartEffect(Entity* player);
+
14 void movementSpeedEffect(Entity* player);
+
15 void atkSpeedEffect(Entity* player);
+
16
+
17private:
+
18 void (PowerupComponent::*pickupFunc)(Entity* player);
+
19};
+
+
Definition Component.h:6
+
Main class for any object in game, stores associations, labeling and components.
Definition Entity.h:29
+
Definition PowerupComponent.h:7
+
+
+ + + + diff --git a/ProjectileComponent_8h_source.html b/ProjectileComponent_8h_source.html new file mode 100644 index 0000000..632d635 --- /dev/null +++ b/ProjectileComponent_8h_source.html @@ -0,0 +1,169 @@ + + + + + + + + + SDL Minigame: include/ProjectileComponent.h Source File + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ProjectileComponent.h
+
+
+
1#pragma once
+
2
+
3#include "Component.h"
+
4#include "Vector2D.h"
+
5#include "Constants.h"
+
6
+ +
8
+
+ +
10{
+
11 //can maybe be split in separate .cpp file
+
12
+
13public:
+
14 ProjectileComponent(int range, int speed, Vector2D direction) : range(range), speed(speed), direction(direction) {}
+ +
16
+
17 void init() override;
+
18 void update() override;
+
19
+
20private:
+
21 TransformComponent* transformComponent;
+
22
+
23 int range = 0;
+
24 int speed = 0;
+
25 int distance = 0;
+
26
+
27 Vector2D direction;
+
28};
+
+
Definition Component.h:6
+
Definition ProjectileComponent.h:10
+
Definition TransformComponent.h:8
+
Definition Vector2D.h:7
+
+
+ + + + diff --git a/SoundManager_8h_source.html b/SoundManager_8h_source.html new file mode 100644 index 0000000..cba6a4f --- /dev/null +++ b/SoundManager_8h_source.html @@ -0,0 +1,170 @@ + + + + + + + + + SDL Minigame: include/SoundManager.h Source File + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SoundManager.h
+
+
+
1#pragma once
+
2
+
3#include <SDL_mixer.h>
+
4#include <map>
+
5#include <vector>
+
6
+
7#include "TextureManager.h"
+
8
+
9enum SoundTypes
+
10{
+
11 STEPS,
+
12 THROW_EGG,
+
13};
+
14
+
+ +
16{
+
17 public:
+
18 SoundManager() {}
+ +
20 for (auto& it : this->sound_cache) {
+
21 Mix_FreeChunk(it.second);
+
22 }
+
23 }
+
24
+
25 SoundManager(SoundManager const&) = delete;
+
26 void operator=(SoundManager const&) = delete;
+
27
+
28 std::map<const char*, Mix_Chunk*> sound_cache;
+
29
+
30 Mix_Chunk* loadSound(const char* fileName);
+
31 static void playSound(SoundTypes sound);
+
32};
+
+
Definition SoundManager.h:16
+
+
+ + + + diff --git a/SpriteComponent_8h_source.html b/SpriteComponent_8h_source.html new file mode 100644 index 0000000..b4cc2d3 --- /dev/null +++ b/SpriteComponent_8h_source.html @@ -0,0 +1,183 @@ + + + + + + + + + SDL Minigame: include/SpriteComponent.h Source File + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SpriteComponent.h
+
+
+
1#pragma once
+
2
+
3#include <map>
+
4#include <SDL_render.h>
+
5#include <memory>
+
6
+
7#include "AnimationHandler.h"
+
8#include "Component.h"
+
9#include "Direction.h"
+
10
+ +
12
+
+ +
14{
+
15public:
+
16 int animationIndex = 0;
+
17
+
18 std::map<AnimationType, std::unique_ptr<Animation>> animations;
+
19
+
20private:
+
21 TransformComponent* transform;
+
22 SDL_Texture* texture;
+
23 SDL_Rect srcRect, destRect;
+
24
+
25 bool animated = false;
+
26 uint8_t frames = 0;
+
27 uint8_t speed = 100;
+
28 bool flipped = false;
+
29
+
30public:
+
31 SpriteComponent() = default;
+
32 SpriteComponent(const char* path);
+
33 SpriteComponent(const char* path, bool isAnimated);
+ +
35
+
36 void setTexture(const char* path);
+
37
+
38 void init() override;
+
39 void update() override;
+
40 void draw() override;
+
41 void playAnimation(AnimationType type);
+
42 void setDirection(Direction direction);
+
43};
+
+
Definition Component.h:6
+
Definition SpriteComponent.h:14
+
Definition TransformComponent.h:8
+
+
+ + + + diff --git a/StatEffectsComponent_8h_source.html b/StatEffectsComponent_8h_source.html new file mode 100644 index 0000000..49e8f50 --- /dev/null +++ b/StatEffectsComponent_8h_source.html @@ -0,0 +1,166 @@ + + + + + + + + + SDL Minigame: include/StatEffectsComponent.h Source File + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
StatEffectsComponent.h
+
+
+
1#pragma once
+
2#include "Component.h"
+
3#include "Constants.h"
+
4#include <cstdint>
+
5#include <array>
+
6
+
7enum class Stats
+
8{
+
9 MOVEMENT_SPEED,
+
10 ATTACK_SPEED
+
11};
+
12
+
+ +
14public:
+ + +
17
+
18 void init() override;
+
19 void update() override;
+
20
+
21 void modifyStatDur(Stats stat, int duration);
+
22
+
23 void modifyStatValue(Stats stat, int modifier);
+
24
+
25private:
+
26 std::array<int, MAX_STATS> buffs = { 0 };
+
27};
+
+
Definition Component.h:6
+
Definition StatEffectsComponent.h:13
+
+
+ + + + diff --git a/TextureDict_8h_source.html b/TextureDict_8h_source.html new file mode 100644 index 0000000..4ce25fc --- /dev/null +++ b/TextureDict_8h_source.html @@ -0,0 +1,162 @@ + + + + + + + + + SDL Minigame: include/TextureDict.h Source File + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TextureDict.h
+
+
+
1#pragma once
+
2
+
3#include <map>
+
4#include <string>
+
5#include "AssetManager.h"
+
6
+
+ +
8{
+
9public:
+
10 const std::map<int, std::string> tileDictionary = {
+
11 {1, "assets/water.png"},
+
12 {2, "assets/dirt.png"},
+
13 {3, "assets/grass.png"},
+
14 {7, "assets/grass_water_left.png"},
+
15 {9, "assets/grass_water_right.png"}
+
16 };
+
17
+
18
+
19 std::map<PowerupType, std::string> powerupDictionary = {
+
20 {PowerupType::HEART, "assets/heart_powerup.png"},
+
21 {PowerupType::WALKINGSPEED, "assets/movement_speed_powerup.png"},
+
22 {PowerupType::SHOOTINGSPEED, "assets/atk_speed_powerup.png"}
+
23 };
+
24};
+
+
Definition TextureDict.h:8
+
+
+ + + + diff --git a/TextureManager_8h_source.html b/TextureManager_8h_source.html new file mode 100644 index 0000000..d753acc --- /dev/null +++ b/TextureManager_8h_source.html @@ -0,0 +1,162 @@ + + + + + + + + + SDL Minigame: include/TextureManager.h Source File + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TextureManager.h
+
+
+
1#pragma once
+
2
+
3#include <SDL_render.h>
+
4#include <map>
+
5#include <memory>
+
6#include <string>
+
7#include <vector>
+
8
+
+ +
10{
+
11 public:
+ + +
14 for (auto& it : this->texture_cache) {
+
15 SDL_DestroyTexture(it.second);
+
16 }
+
17 }
+
18
+
19 std::map<std::string, SDL_Texture*> texture_cache;
+
20
+
21 SDL_Texture* loadTexture(const char* fileName);
+
22 static std::vector<SDL_Rect> splitSpriteSheet(SDL_Texture* spriteSheet, int width, int height, int spritesOnSheet);
+
23 static void draw(SDL_Texture* texture, SDL_Rect src, SDL_Rect dest, bool flipped = false);
+
24};
+
+
Definition TextureManager.h:10
+
+
+ + + + diff --git a/TileComponent_8h_source.html b/TileComponent_8h_source.html new file mode 100644 index 0000000..f56564c --- /dev/null +++ b/TileComponent_8h_source.html @@ -0,0 +1,169 @@ + + + + + + + + + SDL Minigame: include/TileComponent.h Source File + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TileComponent.h
+
+
+
1#pragma once
+
2
+
3#include <SDL.h>
+
4
+
5#include "Component.h"
+
6#include "TextureDict.h"
+
7
+ + +
10
+
+ +
12{
+
13public:
+
14 TransformComponent* transform;
+
15 SpriteComponent* sprite;
+
16 TextureDict textureDict;
+
17
+
18 SDL_Rect tileRect;
+
19 int tileID;
+
20 const char* path;
+
21
+
22 TileComponent() = default;
+
23 TileComponent(int x, int y, int w, int h, int id);
+
24 ~TileComponent() = default;
+
25
+
26 void init() override;
+
27};
+
+
Definition Component.h:6
+
Definition SpriteComponent.h:14
+
Definition TextureDict.h:8
+
Definition TileComponent.h:12
+
Definition TransformComponent.h:8
+
+
+ + + + diff --git a/TransformComponent_8cpp.html b/TransformComponent_8cpp.html new file mode 100644 index 0000000..b808597 --- /dev/null +++ b/TransformComponent_8cpp.html @@ -0,0 +1,146 @@ + + + + + + + + + SDL Minigame: src/TransformComponent.cpp File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TransformComponent.cpp File Reference
+
+
+
#include "TransformComponent.h"
+#include "CollisionHandler.h"
+#include "ColliderComponent.h"
+#include "Constants.h"
+#include "Entity.h"
+#include "Game.h"
+#include "Vector2D.h"
+#include <cstdio>
+#include <initializer_list>
+#include <iostream>
+#include "SoundManager.h"
+
+Include dependency graph for TransformComponent.cpp:
+
+
+
+
+
+ + + + diff --git a/TransformComponent_8cpp__incl.map b/TransformComponent_8cpp__incl.map new file mode 100644 index 0000000..b571ccd --- /dev/null +++ b/TransformComponent_8cpp__incl.map @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TransformComponent_8cpp__incl.md5 b/TransformComponent_8cpp__incl.md5 new file mode 100644 index 0000000..046076a --- /dev/null +++ b/TransformComponent_8cpp__incl.md5 @@ -0,0 +1 @@ +c5c47346784318c6500edee7bbf63a73 \ No newline at end of file diff --git a/TransformComponent_8cpp__incl.svg b/TransformComponent_8cpp__incl.svg new file mode 100644 index 0000000..6ca1715 --- /dev/null +++ b/TransformComponent_8cpp__incl.svg @@ -0,0 +1,1021 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +src/TransformComponent.cpp + + +Node1 + + +src/TransformComponent.cpp + + + + + +Node2 + + +TransformComponent.h + + + + + +Node1->Node2 + + + + + + + + +Node4 + + +Vector2D.h + + + + + +Node1->Node4 + + + + + + + + +Node7 + + +Constants.h + + + + + +Node1->Node7 + + + + + + + + +Node9 + + +CollisionHandler.h + + + + + +Node1->Node9 + + + + + + + + +Node10 + + +ColliderComponent.h + + + + + +Node1->Node10 + + + + + + + + +Node11 + + +Entity.h + + + + + +Node1->Node11 + + + + + + + + +Node24 + + +iostream + + + + + +Node1->Node24 + + + + + + + + +Node25 + + +initializer_list + + + + + +Node1->Node25 + + + + + + + + +Node28 + + +Game.h + + + + + +Node1->Node28 + + + + + + + + +Node31 + + +cstdio + + + + + +Node1->Node31 + + + + + + + + +Node32 + + +SoundManager.h + + + + + +Node1->Node32 + + + + + + + + +Node3 + + +Component.h + + + + + +Node2->Node3 + + + + + + + + +Node2->Node4 + + + + + + + + +Node2->Node7 + + + + + + + + +Node5 + + +SDL.h + + + + + +Node4->Node5 + + + + + + + + +Node6 + + +SDL_rect.h + + + + + +Node4->Node6 + + + + + + + + +Node8 + + +cstddef + + + + + +Node7->Node8 + + + + + + + + +Node9->Node4 + + + + + + + + +Node9->Node6 + + + + + + + + +Node9->Node7 + + + + + + + + +Node9->Node10 + + + + + + + + +Node9->Node11 + + + + + + + + +Node14 + + +bitset + + + + + +Node9->Node14 + + + + + + + + +Node15 + + +vector + + + + + +Node9->Node15 + + + + + + + + +Node17 + + +SpriteComponent.h + + + + + +Node9->Node17 + + + + + + + + +Node23 + + +Manager.h + + + + + +Node9->Node23 + + + + + + + + +Node9->Node25 + + + + + + + + +Node26 + + +tuple + + + + + +Node9->Node26 + + + + + + + + +Node27 + + +utility + + + + + +Node9->Node27 + + + + + + + + +Node10->Node3 + + + + + + + + +Node10->Node4 + + + + + + + + +Node10->Node5 + + + + + + + + +Node11->Node7 + + + + + + + + +Node11->Node10 + + + + + + + + +Node12 + + +array + + + + + +Node11->Node12 + + + + + + + + +Node13 + + +memory + + + + + +Node11->Node13 + + + + + + + + +Node11->Node14 + + + + + + + + +Node11->Node15 + + + + + + + + +Node16 + + +ECS.h + + + + + +Node11->Node16 + + + + + + + + +Node16->Node3 + + + + + + + + +Node16->Node7 + + + + + + + + +Node17->Node3 + + + + + + + + +Node17->Node13 + + + + + + + + +Node18 + + +map + + + + + +Node17->Node18 + + + + + + + + +Node19 + + +SDL_render.h + + + + + +Node17->Node19 + + + + + + + + +Node20 + + +AnimationHandler.h + + + + + +Node17->Node20 + + + + + + + + +Node22 + + +Direction.h + + + + + +Node17->Node22 + + + + + + + + +Node21 + + +cstdint + + + + + +Node20->Node21 + + + + + + + + +Node23->Node7 + + + + + + + + +Node23->Node11 + + + + + + + + +Node23->Node12 + + + + + + + + +Node23->Node13 + + + + + + + + +Node23->Node15 + + + + + + + + +Node23->Node24 + + + + + + + + +Node28->Node4 + + + + + + + + +Node28->Node5 + + + + + + + + +Node28->Node11 + + + + + + + + +Node28->Node15 + + + + + + + + +Node29 + + +SDL_image.h + + + + + +Node28->Node29 + + + + + + + + +Node30 + + +SDL_mixer.h + + + + + +Node28->Node30 + + + + + + + + +Node32->Node15 + + + + + + + + +Node32->Node18 + + + + + + + + +Node32->Node30 + + + + + + + + +Node33 + + +TextureManager.h + + + + + +Node32->Node33 + + + + + + + + +Node33->Node13 + + + + + + + + +Node33->Node15 + + + + + + + + +Node33->Node18 + + + + + + + + +Node33->Node19 + + + + + + + + +Node34 + + +string + + + + + +Node33->Node34 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TransformComponent_8cpp__incl_org.svg b/TransformComponent_8cpp__incl_org.svg new file mode 100644 index 0000000..6444850 --- /dev/null +++ b/TransformComponent_8cpp__incl_org.svg @@ -0,0 +1,939 @@ + + + + + + +src/TransformComponent.cpp + + +Node1 + + +src/TransformComponent.cpp + + + + + +Node2 + + +TransformComponent.h + + + + + +Node1->Node2 + + + + + + + + +Node4 + + +Vector2D.h + + + + + +Node1->Node4 + + + + + + + + +Node7 + + +Constants.h + + + + + +Node1->Node7 + + + + + + + + +Node9 + + +CollisionHandler.h + + + + + +Node1->Node9 + + + + + + + + +Node10 + + +ColliderComponent.h + + + + + +Node1->Node10 + + + + + + + + +Node11 + + +Entity.h + + + + + +Node1->Node11 + + + + + + + + +Node24 + + +iostream + + + + + +Node1->Node24 + + + + + + + + +Node25 + + +initializer_list + + + + + +Node1->Node25 + + + + + + + + +Node28 + + +Game.h + + + + + +Node1->Node28 + + + + + + + + +Node31 + + +cstdio + + + + + +Node1->Node31 + + + + + + + + +Node32 + + +SoundManager.h + + + + + +Node1->Node32 + + + + + + + + +Node3 + + +Component.h + + + + + +Node2->Node3 + + + + + + + + +Node2->Node4 + + + + + + + + +Node2->Node7 + + + + + + + + +Node5 + + +SDL.h + + + + + +Node4->Node5 + + + + + + + + +Node6 + + +SDL_rect.h + + + + + +Node4->Node6 + + + + + + + + +Node8 + + +cstddef + + + + + +Node7->Node8 + + + + + + + + +Node9->Node4 + + + + + + + + +Node9->Node6 + + + + + + + + +Node9->Node7 + + + + + + + + +Node9->Node10 + + + + + + + + +Node9->Node11 + + + + + + + + +Node14 + + +bitset + + + + + +Node9->Node14 + + + + + + + + +Node15 + + +vector + + + + + +Node9->Node15 + + + + + + + + +Node17 + + +SpriteComponent.h + + + + + +Node9->Node17 + + + + + + + + +Node23 + + +Manager.h + + + + + +Node9->Node23 + + + + + + + + +Node9->Node25 + + + + + + + + +Node26 + + +tuple + + + + + +Node9->Node26 + + + + + + + + +Node27 + + +utility + + + + + +Node9->Node27 + + + + + + + + +Node10->Node3 + + + + + + + + +Node10->Node4 + + + + + + + + +Node10->Node5 + + + + + + + + +Node11->Node7 + + + + + + + + +Node11->Node10 + + + + + + + + +Node12 + + +array + + + + + +Node11->Node12 + + + + + + + + +Node13 + + +memory + + + + + +Node11->Node13 + + + + + + + + +Node11->Node14 + + + + + + + + +Node11->Node15 + + + + + + + + +Node16 + + +ECS.h + + + + + +Node11->Node16 + + + + + + + + +Node16->Node3 + + + + + + + + +Node16->Node7 + + + + + + + + +Node17->Node3 + + + + + + + + +Node17->Node13 + + + + + + + + +Node18 + + +map + + + + + +Node17->Node18 + + + + + + + + +Node19 + + +SDL_render.h + + + + + +Node17->Node19 + + + + + + + + +Node20 + + +AnimationHandler.h + + + + + +Node17->Node20 + + + + + + + + +Node22 + + +Direction.h + + + + + +Node17->Node22 + + + + + + + + +Node21 + + +cstdint + + + + + +Node20->Node21 + + + + + + + + +Node23->Node7 + + + + + + + + +Node23->Node11 + + + + + + + + +Node23->Node12 + + + + + + + + +Node23->Node13 + + + + + + + + +Node23->Node15 + + + + + + + + +Node23->Node24 + + + + + + + + +Node28->Node4 + + + + + + + + +Node28->Node5 + + + + + + + + +Node28->Node11 + + + + + + + + +Node28->Node15 + + + + + + + + +Node29 + + +SDL_image.h + + + + + +Node28->Node29 + + + + + + + + +Node30 + + +SDL_mixer.h + + + + + +Node28->Node30 + + + + + + + + +Node32->Node15 + + + + + + + + +Node32->Node18 + + + + + + + + +Node32->Node30 + + + + + + + + +Node33 + + +TextureManager.h + + + + + +Node32->Node33 + + + + + + + + +Node33->Node13 + + + + + + + + +Node33->Node15 + + + + + + + + +Node33->Node18 + + + + + + + + +Node33->Node19 + + + + + + + + +Node34 + + +string + + + + + +Node33->Node34 + + + + + + + + diff --git a/TransformComponent_8h_source.html b/TransformComponent_8h_source.html new file mode 100644 index 0000000..8f223ea --- /dev/null +++ b/TransformComponent_8h_source.html @@ -0,0 +1,169 @@ + + + + + + + + + SDL Minigame: include/TransformComponent.h Source File + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TransformComponent.h
+
+
+
1#pragma once
+
2
+
3#include "Component.h"
+
4#include "Vector2D.h"
+
5#include "Constants.h"
+
6
+
+ +
8{
+
9public:
+
10 Vector2D position; // TODO: change to int to safe CPU time -> possibly subpixel coordinates
+
11 Vector2D direction;
+
12
+
13 int height = 32;
+
14 int width = 32;
+
15 int scale = 1;
+
16
+
17 int speed = 3;
+
18
+ +
20 explicit TransformComponent(int scale);
+
21 TransformComponent(float x, float y);
+
22 TransformComponent(float x, float y, int scale);
+
23 TransformComponent(float x, float y, int w, int h, int scale);
+
24
+
25 void init() override;
+
27 void update() override;
+
28 void modifySpeed(int8_t modifier);
+
29};
+
+
Definition Component.h:6
+
Definition TransformComponent.h:8
+
void update() override
Definition TransformComponent.cpp:53
+
Definition Vector2D.h:7
+
+
+ + + + diff --git a/Vector2D_8h_source.html b/Vector2D_8h_source.html new file mode 100644 index 0000000..c638f83 --- /dev/null +++ b/Vector2D_8h_source.html @@ -0,0 +1,163 @@ + + + + + + + + + SDL Minigame: include/Vector2D.h Source File + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Vector2D.h
+
+
+
1#pragma once
+
2
+
3#include <SDL.h>
+
4#include <SDL_rect.h>
+
5
+
+ +
7{
+
8public:
+
9 float x;
+
10 float y;
+
11
+
12 Vector2D();
+
13 Vector2D(float x, float y);
+
14
+
15 friend Vector2D& operator+(Vector2D& vector1, const Vector2D& vector2);
+
16 friend Vector2D& operator-(Vector2D& vector1, const Vector2D& vector2);
+
17 friend Vector2D& operator*(Vector2D& vector1, const Vector2D& vector2);
+
18 friend Vector2D& operator/(Vector2D& vector1, const Vector2D& vector2);
+
19 friend Vector2D& operator+=(Vector2D& vector1, const Vector2D& vector2);
+
20
+
21 Vector2D& operator*(const int& i);
+
22 Vector2D& zero();
+
23};
+
+
24
+
25SDL_Rect operator+(const SDL_Rect& rect, const Vector2D& vector2D);
+
Definition Vector2D.h:7
+
+
+ + + + diff --git a/annotated.html b/annotated.html new file mode 100644 index 0000000..8c36a44 --- /dev/null +++ b/annotated.html @@ -0,0 +1,157 @@ + + + + + + + + + SDL Minigame: Class List + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+ + + + + + + + + + + + + + + + + + + + + + + + + +
 CAnimation
 CAssetManager
 CColliderComponent
 CCollisionHandler
 CComponent
 CEntityMain class for any object in game, stores associations, labeling and components
 CGame
 CGameObject
 CHealthComponent
 CKeyboardController
 CManagerIs responsible for managing all entities
 CMap
 CPlayerComponent
 CPopupWindow
 CPowerupComponent
 CProjectileComponent
 CSoundManager
 CSpriteComponent
 CStatEffectsComponent
 CTextureDict
 CTextureManager
 CTileComponent
 CTransformComponent
 CVector2D
+
+
+
+ + + + diff --git a/annotated_dup.js b/annotated_dup.js new file mode 100644 index 0000000..350ced0 --- /dev/null +++ b/annotated_dup.js @@ -0,0 +1,27 @@ +var annotated_dup = +[ + [ "Animation", "structAnimation.html", null ], + [ "AssetManager", "classAssetManager.html", null ], + [ "ColliderComponent", "classColliderComponent.html", null ], + [ "CollisionHandler", "classCollisionHandler.html", "classCollisionHandler" ], + [ "Component", "classComponent.html", null ], + [ "Entity", "classEntity.html", "classEntity" ], + [ "Game", "classGame.html", null ], + [ "GameObject", "classGameObject.html", null ], + [ "HealthComponent", "classHealthComponent.html", null ], + [ "KeyboardController", "classKeyboardController.html", null ], + [ "Manager", "classManager.html", "classManager" ], + [ "Map", "classMap.html", null ], + [ "PlayerComponent", "classPlayerComponent.html", null ], + [ "PopupWindow", "classPopupWindow.html", null ], + [ "PowerupComponent", "classPowerupComponent.html", null ], + [ "ProjectileComponent", "classProjectileComponent.html", null ], + [ "SoundManager", "classSoundManager.html", null ], + [ "SpriteComponent", "classSpriteComponent.html", null ], + [ "StatEffectsComponent", "classStatEffectsComponent.html", null ], + [ "TextureDict", "classTextureDict.html", null ], + [ "TextureManager", "classTextureManager.html", null ], + [ "TileComponent", "classTileComponent.html", null ], + [ "TransformComponent", "classTransformComponent.html", "classTransformComponent" ], + [ "Vector2D", "classVector2D.html", null ] +]; \ No newline at end of file diff --git a/bc_s.png b/bc_s.png new file mode 100644 index 0000000..224b29a Binary files /dev/null and b/bc_s.png differ diff --git a/bc_sd.png b/bc_sd.png new file mode 100644 index 0000000..31ca888 Binary files /dev/null and b/bc_sd.png differ diff --git a/chicken_neutral_knight.png b/chicken_neutral_knight.png new file mode 100644 index 0000000..1cf69c9 Binary files /dev/null and b/chicken_neutral_knight.png differ diff --git a/classAssetManager-members.html b/classAssetManager-members.html new file mode 100644 index 0000000..a6b4a4c --- /dev/null +++ b/classAssetManager-members.html @@ -0,0 +1,142 @@ + + + + + + + + + SDL Minigame: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
AssetManager Member List
+
+
+ +

This is the complete list of members for AssetManager, including all inherited members.

+ + + + + + + + + + + +
addSoundEffect(std::string id, const char *path) (defined in AssetManager)AssetManager
addTexture(std::string id, const char *path) (defined in AssetManager)AssetManager
AssetManager(Manager *manager) (defined in AssetManager)AssetManager
calculateSpawnPosition() (defined in AssetManager)AssetManager
calculateType() (defined in AssetManager)AssetManager
createPowerup(Vector2D pos, PowerupType type) (defined in AssetManager)AssetManager
createProjectile(Vector2D pos, Vector2D velocity, int scale, int range, int speed, const char *texturePath, Entity::TeamLabel teamLabel) (defined in AssetManager)AssetManager
getSound(std::string id) (defined in AssetManager)AssetManager
getTexture(std::string id) (defined in AssetManager)AssetManager
~AssetManager() (defined in AssetManager)AssetManager
+
+ + + + diff --git a/classAssetManager.html b/classAssetManager.html new file mode 100644 index 0000000..fdcd67e --- /dev/null +++ b/classAssetManager.html @@ -0,0 +1,168 @@ + + + + + + + + + SDL Minigame: AssetManager Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
AssetManager Class Reference
+
+
+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

AssetManager (Manager *manager)
 
+void createProjectile (Vector2D pos, Vector2D velocity, int scale, int range, int speed, const char *texturePath, Entity::TeamLabel teamLabel)
 
+void createPowerup (Vector2D pos, PowerupType type)
 
+Vector2D calculateSpawnPosition ()
 
+PowerupType calculateType ()
 
+void addTexture (std::string id, const char *path)
 
+void addSoundEffect (std::string id, const char *path)
 
+SDL_Texture * getTexture (std::string id)
 
+Mix_Chunk * getSound (std::string id)
 
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classColliderComponent-members.html b/classColliderComponent-members.html new file mode 100644 index 0000000..394c044 --- /dev/null +++ b/classColliderComponent-members.html @@ -0,0 +1,147 @@ + + + + + + + + + SDL Minigame: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ColliderComponent Member List
+
+
+ +

This is the complete list of members for ColliderComponent, including all inherited members.

+ + + + + + + + + + + + + + + + +
collider (defined in ColliderComponent)ColliderComponent
ColliderComponent(const char *tag) (defined in ColliderComponent)ColliderComponent
ColliderComponent(const char *tag, float hitboxScale) (defined in ColliderComponent)ColliderComponent
draw() (defined in Component)Componentinlinevirtual
entity (defined in Component)Component
handleCollision(Vector2D &characterPos, SDL_Rect &characterCollider, SDL_Rect &componentCollider) (defined in ColliderComponent)ColliderComponent
hasCollision (defined in ColliderComponent)ColliderComponent
hitboxScale (defined in ColliderComponent)ColliderComponent
init() override (defined in ColliderComponent)ColliderComponentvirtual
isProjectile (defined in ColliderComponent)ColliderComponent
removeCollision() (defined in ColliderComponent)ColliderComponent
tag (defined in ColliderComponent)ColliderComponent
transform (defined in ColliderComponent)ColliderComponent
update() override (defined in ColliderComponent)ColliderComponentvirtual
~Component()=default (defined in Component)Componentvirtual
+
+ + + + diff --git a/classColliderComponent.html b/classColliderComponent.html new file mode 100644 index 0000000..469f0e9 --- /dev/null +++ b/classColliderComponent.html @@ -0,0 +1,252 @@ + + + + + + + + + SDL Minigame: ColliderComponent Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ColliderComponent Class Reference
+
+
+
+Inheritance diagram for ColliderComponent:
+
+
+
[legend]
+
+Collaboration diagram for ColliderComponent:
+
+
+
[legend]
+ + + + + + + + + + + + + + + + + +

+Public Member Functions

ColliderComponent (const char *tag)
 
ColliderComponent (const char *tag, float hitboxScale)
 
void init () override
 
void update () override
 
+void removeCollision ()
 
+void handleCollision (Vector2D &characterPos, SDL_Rect &characterCollider, SDL_Rect &componentCollider)
 
- Public Member Functions inherited from Component
+virtual void draw ()
 
+ + + + + + + + + + + + + + + + +

+Public Attributes

+SDL_Rect collider
 
+const char * tag
 
+TransformComponenttransform
 
+bool hasCollision
 
+float hitboxScale
 
+bool isProjectile = false
 
- Public Attributes inherited from Component
+Entityentity
 
+

Member Function Documentation

+ +

◆ init()

+ +
+
+ + + + + +
+ + + + + + + +
void ColliderComponent::init ()
+
+overridevirtual
+
+ +

Reimplemented from Component.

+ +
+
+ +

◆ update()

+ +
+
+ + + + + +
+ + + + + + + +
void ColliderComponent::update ()
+
+overridevirtual
+
+ +

Reimplemented from Component.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classColliderComponent__coll__graph.map b/classColliderComponent__coll__graph.map new file mode 100644 index 0000000..de5c421 --- /dev/null +++ b/classColliderComponent__coll__graph.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/classColliderComponent__coll__graph.md5 b/classColliderComponent__coll__graph.md5 new file mode 100644 index 0000000..0afa083 --- /dev/null +++ b/classColliderComponent__coll__graph.md5 @@ -0,0 +1 @@ +12c7ffbfb4eeeebc33e50a8cbba6d99a \ No newline at end of file diff --git a/classColliderComponent__coll__graph.svg b/classColliderComponent__coll__graph.svg new file mode 100644 index 0000000..d1b1eaf --- /dev/null +++ b/classColliderComponent__coll__graph.svg @@ -0,0 +1,131 @@ + + + + + + + + + + + +ColliderComponent + + +Node1 + + +ColliderComponent + + + + + +Node2 + + +Component + + + + + +Node2->Node1 + + + + + + + + +Node4 + + +TransformComponent + + + + + +Node2->Node4 + + + + + + + + +Node3 + + +Entity + + + + + +Node3->Node2 + + + + + + entity + + + +Node4->Node1 + + + + + + transform + + + +Node5 + + +Vector2D + + + + + +Node5->Node4 + + + + + + direction +position + + + + + + + + diff --git a/classColliderComponent__coll__graph_org.svg b/classColliderComponent__coll__graph_org.svg new file mode 100644 index 0000000..856ff6e --- /dev/null +++ b/classColliderComponent__coll__graph_org.svg @@ -0,0 +1,106 @@ + + + + + + +ColliderComponent + + +Node1 + + +ColliderComponent + + + + + +Node2 + + +Component + + + + + +Node2->Node1 + + + + + + + + +Node4 + + +TransformComponent + + + + + +Node2->Node4 + + + + + + + + +Node3 + + +Entity + + + + + +Node3->Node2 + + + + + + entity + + + +Node4->Node1 + + + + + + transform + + + +Node5 + + +Vector2D + + + + + +Node5->Node4 + + + + + + direction +position + + + diff --git a/classColliderComponent__inherit__graph.map b/classColliderComponent__inherit__graph.map new file mode 100644 index 0000000..d26aa53 --- /dev/null +++ b/classColliderComponent__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/classColliderComponent__inherit__graph.md5 b/classColliderComponent__inherit__graph.md5 new file mode 100644 index 0000000..9a90d28 --- /dev/null +++ b/classColliderComponent__inherit__graph.md5 @@ -0,0 +1 @@ +6c7f9d1506558bfb250c7f446bf02fad \ No newline at end of file diff --git a/classColliderComponent__inherit__graph.svg b/classColliderComponent__inherit__graph.svg new file mode 100644 index 0000000..d03a223 --- /dev/null +++ b/classColliderComponent__inherit__graph.svg @@ -0,0 +1,64 @@ + + + + + + + + + + + +ColliderComponent + + +Node1 + + +ColliderComponent + + + + + +Node2 + + +Component + + + + + +Node2->Node1 + + + + + + + + + + + + + diff --git a/classColliderComponent__inherit__graph_org.svg b/classColliderComponent__inherit__graph_org.svg new file mode 100644 index 0000000..1973785 --- /dev/null +++ b/classColliderComponent__inherit__graph_org.svg @@ -0,0 +1,39 @@ + + + + + + +ColliderComponent + + +Node1 + + +ColliderComponent + + + + + +Node2 + + +Component + + + + + +Node2->Node1 + + + + + + + + diff --git a/classCollisionHandler-members.html b/classCollisionHandler-members.html new file mode 100644 index 0000000..f4ba30f --- /dev/null +++ b/classCollisionHandler-members.html @@ -0,0 +1,142 @@ + + + + + + + + + SDL Minigame: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CollisionHandler Member List
+
+
+ +

This is the complete list of members for CollisionHandler, including all inherited members.

+ + + + + + + + + + + +
CollisionHandler(Manager &mManager) (defined in CollisionHandler)CollisionHandlerinline
getAnyIntersection(Entity *entity, Vector2D posMod={}, std::initializer_list< Entity::GroupLabel > const &groupLabels={}, std::initializer_list< Entity::TeamLabel > const &teamLabels={}, bool negateTeam=false)CollisionHandler
getAnyIntersection(Entity *entity, Vector2D posMod, std::initializer_list< Entity::GroupLabel > const &groupLabels, std::initializer_list< Entity::TeamLabel > const &teamLabels, bool negateTeam)CollisionHandler
getAnyIntersection(Entity *entity, Vector2D posMod, std::initializer_list< Entity::GroupLabel > const &groupLabels, std::initializer_list< Entity::TeamLabel > const &teamLabels, bool negateTeam)CollisionHandler
getAnyIntersection(Entity *entity, Vector2D posMod, std::initializer_list< Entity::GroupLabel > const &groupLabels, std::initializer_list< Entity::TeamLabel > const &teamLabels, bool negateTeam)CollisionHandler
getColliders(std::initializer_list< Entity::GroupLabel > const &groupLabels, std::initializer_list< Entity::TeamLabel > const &teamLabels={}, bool negateTeam=false) (defined in CollisionHandler)CollisionHandler
getIntersection(Entity *entityA, Entity *entityB, Vector2D posModA=Vector2D(0, 0), Vector2D posModB=Vector2D(0, 0)) (defined in CollisionHandler)CollisionHandlerstatic
getIntersectionWithBounds(Entity *entity, Vector2D posMod=Vector2D(0, 0)) (defined in CollisionHandler)CollisionHandlerstatic
update() (defined in CollisionHandler)CollisionHandler
~CollisionHandler() (defined in CollisionHandler)CollisionHandler
+
+ + + + diff --git a/classCollisionHandler.html b/classCollisionHandler.html new file mode 100644 index 0000000..a54c51e --- /dev/null +++ b/classCollisionHandler.html @@ -0,0 +1,362 @@ + + + + + + + + + SDL Minigame: CollisionHandler Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CollisionHandler Class Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

CollisionHandler (Manager &mManager)
 
+std::vector< ColliderComponent * > getColliders (std::initializer_list< Entity::GroupLabel > const &groupLabels, std::initializer_list< Entity::TeamLabel > const &teamLabels={}, bool negateTeam=false)
 
template<typename T >
getAnyIntersection (Entity *entity, Vector2D posMod={}, std::initializer_list< Entity::GroupLabel > const &groupLabels={}, std::initializer_list< Entity::TeamLabel > const &teamLabels={}, bool negateTeam=false)
 Tests entity against all entities with the specified labels for a collision.
 
+void update ()
 
template<>
IntersectionBitSet getAnyIntersection (Entity *entity, Vector2D posMod, std::initializer_list< Entity::GroupLabel > const &groupLabels, std::initializer_list< Entity::TeamLabel > const &teamLabels, bool negateTeam)
 
template<>
EntitygetAnyIntersection (Entity *entity, Vector2D posMod, std::initializer_list< Entity::GroupLabel > const &groupLabels, std::initializer_list< Entity::TeamLabel > const &teamLabels, bool negateTeam)
 
template<>
bool getAnyIntersection (Entity *entity, Vector2D posMod, std::initializer_list< Entity::GroupLabel > const &groupLabels, std::initializer_list< Entity::TeamLabel > const &teamLabels, bool negateTeam)
 
+ + + + + +

+Static Public Member Functions

+static IntersectionBitSet getIntersection (Entity *entityA, Entity *entityB, Vector2D posModA=Vector2D(0, 0), Vector2D posModB=Vector2D(0, 0))
 
+static IntersectionBitSet getIntersectionWithBounds (Entity *entity, Vector2D posMod=Vector2D(0, 0))
 
+

Member Function Documentation

+ +

◆ getAnyIntersection() [1/4]

+ +
+
+
+template<>
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
IntersectionBitSet CollisionHandler::getAnyIntersection (Entity * entity,
Vector2D posMod,
std::initializer_list< Entity::GroupLabel > const & groupLabels,
std::initializer_list< Entity::TeamLabel > const & teamLabels,
bool negateTeam )
+
+

Refer to getAnyIntersection() for more details

Returns
A bitset of intersections, describing the directions of intersection. Position Direction in bitset true if edge in that direction collides
+
See also
Direction
+
+IntersectionBitSet
constexpr uint8_t DIRECTION_C = 4;
+
+
using IntersectionBitSet = std::bitset<DIRECTION_C>;
+
+

Example usage for IntersectionBitSet (TransformComponent::update()):

IntersectionBitSet intersections =
+
(CollisionHandler::getIntersectionWithBounds(entity, Vector2D(positionChange.x, 0)) |
+
(Game::collisionHandler->getAnyIntersection<IntersectionBitSet>(entity, Vector2D(positionChange.x, 0), { Entity::GroupLabel::MAPTILES, Entity::GroupLabel::COLLIDERS })) &
+
IntersectionBitSet("0011")) |
+
(CollisionHandler::getIntersectionWithBounds(entity, Vector2D(0, positionChange.y)) |
+
(Game::collisionHandler->getAnyIntersection<IntersectionBitSet>(entity, Vector2D(0, positionChange.y), { Entity::GroupLabel::MAPTILES, Entity::GroupLabel::COLLIDERS })) &
+
IntersectionBitSet("1100"));
+
+
if (intersections.test((size_t)Direction::LEFT) || intersections.test((size_t)Direction::RIGHT))
+
positionChange.x = 0;
+
+
if (intersections.test((size_t)Direction::UP) || intersections.test((size_t)Direction::DOWN))
+
positionChange.y = 0;
+
+
+
+ +

◆ getAnyIntersection() [2/4]

+ +
+
+
+template<>
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Entity * CollisionHandler::getAnyIntersection (Entity * entity,
Vector2D posMod,
std::initializer_list< Entity::GroupLabel > const & groupLabels,
std::initializer_list< Entity::TeamLabel > const & teamLabels,
bool negateTeam )
+
+

Refer to getAnyIntersection() for more details

Returns
The first entity with collision found
+
See also
Entity
+ +
+
+ +

◆ getAnyIntersection() [3/4]

+ +
+
+
+template<>
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
bool CollisionHandler::getAnyIntersection (Entity * entity,
Vector2D posMod,
std::initializer_list< Entity::GroupLabel > const & groupLabels,
std::initializer_list< Entity::TeamLabel > const & teamLabels,
bool negateTeam )
+
+

Refer to getAnyIntersection() for more details

Returns
True if any collision was found, otherwise false
+ +
+
+ +

◆ getAnyIntersection() [4/4]

+ +
+
+
+template<typename T >
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
T CollisionHandler::getAnyIntersection (Entity * entity,
Vector2D posMod = {},
std::initializer_list< Entity::GroupLabel > const & groupLabels = {},
std::initializer_list< Entity::TeamLabel > const & teamLabels = {},
bool negateTeam = false )
+
+ +

Tests entity against all entities with the specified labels for a collision.

+

Tests the given entity against every other entity with the specified labels for intersections between their collison boxes. If the primary entity has no ColliderComponent, the equivalent of no collision is returned immediately, other entities are skipped if they don't have a ColliderComponent

Parameters
+ + + + + + +
entityThe primary entity to check against. Return values will be relative to this entity
posModModifier to apply toposition before checking collisions.
groupLabelsEntities need to have at least one listed GroupLabels to get checked against
teamLabelsEntities need to have one of the specified TeamLabels to get checked against
negateTeamIf set to true, entities will only be checked against if they don't have one of the specified TeamLabels
+
+
+
See also
ColliderComponent
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classCollisionHandler.js b/classCollisionHandler.js new file mode 100644 index 0000000..eb043dc --- /dev/null +++ b/classCollisionHandler.js @@ -0,0 +1,7 @@ +var classCollisionHandler = +[ + [ "getAnyIntersection", "classCollisionHandler.html#a376bafa9253282edbd5691cd5ca86a94", null ], + [ "getAnyIntersection", "classCollisionHandler.html#af6961b60d5b0b52d7f9bcded1cc953db", null ], + [ "getAnyIntersection", "classCollisionHandler.html#a2fb7c155b4937a6d28ab04de0186d2ae", null ], + [ "getAnyIntersection", "classCollisionHandler.html#a08369acd5338b7d1558f152ef54fb79f", null ] +]; \ No newline at end of file diff --git a/classComponent-members.html b/classComponent-members.html new file mode 100644 index 0000000..583a781 --- /dev/null +++ b/classComponent-members.html @@ -0,0 +1,137 @@ + + + + + + + + + SDL Minigame: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Component Member List
+
+
+ +

This is the complete list of members for Component, including all inherited members.

+ + + + + + +
draw() (defined in Component)Componentinlinevirtual
entity (defined in Component)Component
init() (defined in Component)Componentinlinevirtual
update() (defined in Component)Componentinlinevirtual
~Component()=default (defined in Component)Componentvirtual
+
+ + + + diff --git a/classComponent.html b/classComponent.html new file mode 100644 index 0000000..73780af --- /dev/null +++ b/classComponent.html @@ -0,0 +1,193 @@ + + + + + + + + + SDL Minigame: Component Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Component Class Reference
+
+
+
+Inheritance diagram for Component:
+
+
+
[legend]
+
+Collaboration diagram for Component:
+
+
+
[legend]
+ + + + + + + + +

+Public Member Functions

+virtual void init ()
 
virtual void update ()
 
+virtual void draw ()
 
+ + + +

+Public Attributes

+Entityentity
 
+

Member Function Documentation

+ +

◆ update()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void Component::update ()
+
+inlinevirtual
+
+ +

Reimplemented in TransformComponent.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classComponent__coll__graph.map b/classComponent__coll__graph.map new file mode 100644 index 0000000..a683aea --- /dev/null +++ b/classComponent__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/classComponent__coll__graph.md5 b/classComponent__coll__graph.md5 new file mode 100644 index 0000000..1424047 --- /dev/null +++ b/classComponent__coll__graph.md5 @@ -0,0 +1 @@ +6b482161a75e88cce0bef5ade2decb1a \ No newline at end of file diff --git a/classComponent__coll__graph.svg b/classComponent__coll__graph.svg new file mode 100644 index 0000000..8a6d0d7 --- /dev/null +++ b/classComponent__coll__graph.svg @@ -0,0 +1,65 @@ + + + + + + + + + + + +Component + + +Node1 + + +Component + + + + + +Node2 + + +Entity + + + + + +Node2->Node1 + + + + + + entity + + + + + + + + diff --git a/classComponent__coll__graph_org.svg b/classComponent__coll__graph_org.svg new file mode 100644 index 0000000..038701a --- /dev/null +++ b/classComponent__coll__graph_org.svg @@ -0,0 +1,40 @@ + + + + + + +Component + + +Node1 + + +Component + + + + + +Node2 + + +Entity + + + + + +Node2->Node1 + + + + + + entity + + + diff --git a/classComponent__inherit__graph.map b/classComponent__inherit__graph.map new file mode 100644 index 0000000..18d6d76 --- /dev/null +++ b/classComponent__inherit__graph.map @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/classComponent__inherit__graph.md5 b/classComponent__inherit__graph.md5 new file mode 100644 index 0000000..922646b --- /dev/null +++ b/classComponent__inherit__graph.md5 @@ -0,0 +1 @@ +f28ad97b51b18c7936770e16eca9eb38 \ No newline at end of file diff --git a/classComponent__inherit__graph.svg b/classComponent__inherit__graph.svg new file mode 100644 index 0000000..3c61e4b --- /dev/null +++ b/classComponent__inherit__graph.svg @@ -0,0 +1,226 @@ + + + + + + + + + + + +Component + + +Node1 + + +Component + + + + + +Node2 + + +ColliderComponent + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +HealthComponent + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +KeyboardController + + + + + +Node1->Node4 + + + + + + + + +Node5 + + +PlayerComponent + + + + + +Node1->Node5 + + + + + + + + +Node6 + + +PowerupComponent + + + + + +Node1->Node6 + + + + + + + + +Node7 + + +ProjectileComponent + + + + + +Node1->Node7 + + + + + + + + +Node8 + + +SpriteComponent + + + + + +Node1->Node8 + + + + + + + + +Node9 + + +StatEffectsComponent + + + + + +Node1->Node9 + + + + + + + + +Node10 + + +TileComponent + + + + + +Node1->Node10 + + + + + + + + +Node11 + + +TransformComponent + + + + + +Node1->Node11 + + + + + + + + + + + + + diff --git a/classComponent__inherit__graph_org.svg b/classComponent__inherit__graph_org.svg new file mode 100644 index 0000000..c6c33ea --- /dev/null +++ b/classComponent__inherit__graph_org.svg @@ -0,0 +1,201 @@ + + + + + + +Component + + +Node1 + + +Component + + + + + +Node2 + + +ColliderComponent + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +HealthComponent + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +KeyboardController + + + + + +Node1->Node4 + + + + + + + + +Node5 + + +PlayerComponent + + + + + +Node1->Node5 + + + + + + + + +Node6 + + +PowerupComponent + + + + + +Node1->Node6 + + + + + + + + +Node7 + + +ProjectileComponent + + + + + +Node1->Node7 + + + + + + + + +Node8 + + +SpriteComponent + + + + + +Node1->Node8 + + + + + + + + +Node9 + + +StatEffectsComponent + + + + + +Node1->Node9 + + + + + + + + +Node10 + + +TileComponent + + + + + +Node1->Node10 + + + + + + + + +Node11 + + +TransformComponent + + + + + +Node1->Node11 + + + + + + + + diff --git a/classEntity-members.html b/classEntity-members.html new file mode 100644 index 0000000..4617031 --- /dev/null +++ b/classEntity-members.html @@ -0,0 +1,149 @@ + + + + + + + + + SDL Minigame: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Entity Member List
+
+
+ +

This is the complete list of members for Entity, including all inherited members.

+ + + + + + + + + + + + + + + + + + +
addComponent(TArgs &&...mArgs)Entityinline
addGroup(Group mGroup)Entity
delGroup(Group mGroup)Entity
destroy()Entityinline
draw() constEntity
Entity(Manager &mManager)Entityinlineexplicit
getComponent() constEntityinline
getGroupBitSet()Entity
getManager()Entityinline
getTeam()Entity
GroupLabel enum nameEntity
hasComponent() constEntityinline
hasGroup(Group mGroup)Entity
isActive() constEntityinline
setTeam(TeamLabel teamLabel)Entity
TeamLabel enum nameEntity
update() constEntity
+
+ + + + diff --git a/classEntity.html b/classEntity.html new file mode 100644 index 0000000..3ce8c65 --- /dev/null +++ b/classEntity.html @@ -0,0 +1,629 @@ + + + + + + + + + SDL Minigame: Entity Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Entity Class Reference
+
+
+ +

Main class for any object in game, stores associations, labeling and components. + More...

+ +

#include <Entity.h>

+ + + + + + + + +

+Public Types

enum class  GroupLabel {
+  MAPTILES +, PLAYERS +, ENEMIES +, COLLIDERS +,
+  PROJECTILE +, HEARTS +, POWERUPS +
+ }
 Used for rendering order (last is highest) or retrieving entities of group. More...
 
enum class  TeamLabel { NONE +, BLUE +, RED + }
 Allows grouping entities by team association for hits, win conditions, etc. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Entity (Manager &mManager)
 
void update () const
 
void draw () const
 
bool isActive () const
 
void destroy ()
 
bool hasGroup (Group mGroup)
 
void addGroup (Group mGroup)
 
void delGroup (Group mGroup)
 
std::bitset< MAX_GROUPS > getGroupBitSet ()
 
void setTeam (TeamLabel teamLabel)
 
TeamLabel getTeam ()
 
ManagergetManager ()
 
template<typename T >
bool hasComponent () const
 
template<typename T , typename... TArgs>
T & addComponent (TArgs &&...mArgs)
 Adds specified type as component and calls Component::init()
 
template<typename T >
T & getComponent () const
 
+

Detailed Description

+

Main class for any object in game, stores associations, labeling and components.

+

The entity class is the primary class each object in the game needs to use. Add components to assign functionality.

+
Todo

More detailed description

+

Some functions in entity class are only supposed to be called in specific context, which might be valid uses for friend keyword. Example: Entity() should only be called from Manager::addEntity(). Verify each functions intended use/scope.

+
+

Member Enumeration Documentation

+ +

◆ GroupLabel

+ +
+
+ + + + + +
+ + + + +
enum class Entity::GroupLabel
+
+strong
+
+ +

Used for rendering order (last is highest) or retrieving entities of group.

+
Todo

Label used in singular entity shouldn't use plural

+

HEARTS are rendered above POWERUPS, missleading order

+

PROJECTILE are rendered above POWERUPS, missleading order

+

Generalize HEARTS as UI or similar

+
+ + + + + + + + +
Enumerator
MAPTILES 

Entity using TileComponent.

+
PLAYERS 

Primary entity in player controll.

+
ENEMIES 
Deprecated
All players now grouped as Entity::PLAYERS
+
COLLIDERS 

Fixed collider entity, e.g. a wall.

+
PROJECTILE 
Todo
Document
+
HEARTS 
Todo
Document
+
POWERUPS 
Todo
Document
+
+ +
+
+ +

◆ TeamLabel

+ +
+
+ + + + + +
+ + + + +
enum class Entity::TeamLabel
+
+strong
+
+ +

Allows grouping entities by team association for hits, win conditions, etc.

+ + + + +
Enumerator
NONE 

No team, should be skipped in any checks.

+
BLUE 

Team blue.

+
RED 

Team red.

+
+ +
+
+

Constructor & Destructor Documentation

+ +

◆ Entity()

+ +
+
+ + + + + +
+ + + + + + + +
Entity::Entity (Manager & mManager)
+
+inlineexplicit
+
+
Todo
Document
+ +
+
+

Member Function Documentation

+ +

◆ addComponent()

+ +
+
+
+template<typename T , typename... TArgs>
+ + + + + +
+ + + + + + + +
T & Entity::addComponent (TArgs &&... mArgs)
+
+inline
+
+ +

Adds specified type as component and calls Component::init()

+
Parameters
+ + +
mArgsConstructor arguments of component
+
+
+ +
+
+ +

◆ addGroup()

+ +
+
+ + + + + + + +
void Entity::addGroup (Group mGroup)
+
+
See also
GroupLabel
+ +
+
+ +

◆ delGroup()

+ +
+
+ + + + + + + +
void Entity::delGroup (Group mGroup)
+
+
See also
GroupLabel
+ +
+
+ +

◆ destroy()

+ +
+
+ + + + + +
+ + + + + + + +
void Entity::destroy ()
+
+inline
+
+

Mark for destruction for Manager::refresh() and disables collision

See also
ColliderComponent
+ +
+
+ +

◆ draw()

+ +
+
+ + + + + + + +
void Entity::draw () const
+
+

Call after update to render components.

See also
SpriteComponent::draw()
+ +
+
+ +

◆ getComponent()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + +
T & Entity::getComponent () const
+
+inline
+
+
Returns
Component of type T
+ +
+
+ +

◆ getGroupBitSet()

+ +
+
+ + + + + + + +
std::bitset< MAX_GROUPS > Entity::getGroupBitSet ()
+
+
Returns
bitset with true on position GroupLabel if the entity belongs to group
+
See also
GroupLabel
+ +
+
+ +

◆ getManager()

+ +
+
+ + + + + +
+ + + + + + + +
Manager & Entity::getManager ()
+
+inline
+
+
See also
Manager
+ +
+
+ +

◆ getTeam()

+ +
+
+ + + + + + + +
Entity::TeamLabel Entity::getTeam ()
+
+
See also
TeamLabel
+ +
+
+ +

◆ hasComponent()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + +
bool Entity::hasComponent () const
+
+inline
+
+
See also
Component
+ +
+
+ +

◆ hasGroup()

+ +
+
+ + + + + + + +
bool Entity::hasGroup (Group mGroup)
+
+
See also
GroupLabel
+ +
+
+ +

◆ isActive()

+ +
+
+ + + + + +
+ + + + + + + +
bool Entity::isActive () const
+
+inline
+
+
See also
destroy()
+ +
+
+ +

◆ setTeam()

+ +
+
+ + + + + + + +
void Entity::setTeam (Entity::TeamLabel teamLabel)
+
+
See also
TeamLabel
+ +
+
+ +

◆ update()

+ +
+
+ + + + + + + +
void Entity::update () const
+
+

Call each frame to update all components

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classEntity.js b/classEntity.js new file mode 100644 index 0000000..69e4613 --- /dev/null +++ b/classEntity.js @@ -0,0 +1,32 @@ +var classEntity = +[ + [ "GroupLabel", "classEntity.html#a9449a7a0ad2c9ae5ee85ef2401382f2b", [ + [ "MAPTILES", "classEntity.html#a9449a7a0ad2c9ae5ee85ef2401382f2ba924bf7180d60940e428a9166b51ce0f4", null ], + [ "PLAYERS", "classEntity.html#a9449a7a0ad2c9ae5ee85ef2401382f2bae334ea4bb6fd38968f6809b091120ad8", null ], + [ "ENEMIES", "classEntity.html#a9449a7a0ad2c9ae5ee85ef2401382f2baf0d62ea6bc0a041d009322e77e1253c0", null ], + [ "COLLIDERS", "classEntity.html#a9449a7a0ad2c9ae5ee85ef2401382f2badffa23e89f914b343e7811b01a8f756c", null ], + [ "PROJECTILE", "classEntity.html#a9449a7a0ad2c9ae5ee85ef2401382f2ba46dccab75ce652352e52086601fdc294", null ], + [ "HEARTS", "classEntity.html#a9449a7a0ad2c9ae5ee85ef2401382f2bad52d2d4c0b7218c48897d2e69e156ba4", null ], + [ "POWERUPS", "classEntity.html#a9449a7a0ad2c9ae5ee85ef2401382f2ba5262638eb9e1d1af560f3d0f9ad133e4", null ] + ] ], + [ "TeamLabel", "classEntity.html#ac6bf07a435aa8148464dd36e8ba11df7", [ + [ "NONE", "classEntity.html#ac6bf07a435aa8148464dd36e8ba11df7ab50339a10e1de285ac99d4c3990b8693", null ], + [ "BLUE", "classEntity.html#ac6bf07a435aa8148464dd36e8ba11df7a1b3e1ee9bff86431dea6b181365ba65f", null ], + [ "RED", "classEntity.html#ac6bf07a435aa8148464dd36e8ba11df7aa2d9547b5d3dd9f05984475f7c926da0", null ] + ] ], + [ "Entity", "classEntity.html#aad34087e815ec2da644b86ae2357039b", null ], + [ "addComponent", "classEntity.html#ae587a44fd803d7918a45dbfe531c962d", null ], + [ "addGroup", "classEntity.html#a712c05a013e928943c26c3a5b1467f01", null ], + [ "delGroup", "classEntity.html#ae3902aa921b519ed2c25cf4676c9cb5d", null ], + [ "destroy", "classEntity.html#a691dbe5f9ec930c27af2af0b97907a9e", null ], + [ "draw", "classEntity.html#ae68fc12f1c715bf17a20f0e4a754ae50", null ], + [ "getComponent", "classEntity.html#ad5ce9d4246498a5a2ffd163a2d38c98f", null ], + [ "getGroupBitSet", "classEntity.html#adf88082fc18a9ee0294072a0e028453d", null ], + [ "getManager", "classEntity.html#acdf7c696ee39da0d8ebddb1976ea0abe", null ], + [ "getTeam", "classEntity.html#af24dd98377b44895122ae39aab5f4147", null ], + [ "hasComponent", "classEntity.html#aa622a8d79153a90d0e3b9b992ca2d38b", null ], + [ "hasGroup", "classEntity.html#acfb6240560624c026ffc24af4d469b68", null ], + [ "isActive", "classEntity.html#aea1c1568b4123d989c5310697030ad77", null ], + [ "setTeam", "classEntity.html#adfef727ff63b3779c7f9d7e2467e4d18", null ], + [ "update", "classEntity.html#af4e16c727ddfe4d27fe0edeb4b9261aa", null ] +]; \ No newline at end of file diff --git a/classGame-members.html b/classGame-members.html new file mode 100644 index 0000000..e96317d --- /dev/null +++ b/classGame-members.html @@ -0,0 +1,150 @@ + + + + + + + + + SDL Minigame: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Game Member List
+
+
+ +

This is the complete list of members for Game, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
addTile(unsigned long id, int x, int y) (defined in Game)Gamestatic
assets (defined in Game)Gamestatic
clean() (defined in Game)Game
collisionHandler (defined in Game)Gamestatic
event (defined in Game)Gamestatic
Game() (defined in Game)Game
getWinner() const (defined in Game)Game
handleEvents() (defined in Game)Game
init(const char *title, int xpos, int ypos, int width, int height, bool fullscreen) (defined in Game)Game
refreshPlayers() (defined in Game)Game
render() (defined in Game)Game
renderer (defined in Game)Gamestatic
running() const (defined in Game)Game
selectCharacters(const char *&playerSprite, const char *&enemySprite) (defined in Game)Game
soundManager (defined in Game)Gamestatic
textureManager (defined in Game)Gamestatic
update() (defined in Game)Game
~Game() (defined in Game)Game
+
+ + + + diff --git a/classGame.html b/classGame.html new file mode 100644 index 0000000..8784850 --- /dev/null +++ b/classGame.html @@ -0,0 +1,202 @@ + + + + + + + + + SDL Minigame: Game Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+Collaboration diagram for Game:
+
+
+
[legend]
+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+void init (const char *title, int xpos, int ypos, int width, int height, bool fullscreen)
 
+void selectCharacters (const char *&playerSprite, const char *&enemySprite)
 
+void handleEvents ()
 
+void update ()
 
+void render ()
 
+void clean ()
 
+bool running () const
 
+void refreshPlayers ()
 
+Entity::TeamLabel getWinner () const
 
+ + + +

+Static Public Member Functions

+static void addTile (unsigned long id, int x, int y)
 
+ + + + + + + + + + + + + +

+Static Public Attributes

+static SDL_Renderer * renderer = nullptr
 
+static SDL_Event event
 
+static CollisionHandlercollisionHandler = new CollisionHandler(manager)
 
+static AssetManagerassets = new AssetManager(&manager)
 
+static TextureManagertextureManager = new TextureManager()
 
+static SoundManagersoundManager = new SoundManager()
 
+
The documentation for this class was generated from the following files:
    +
  • include/Game.h
  • +
  • src/Game.cpp
  • +
+
+
+ + + + diff --git a/classGameObject-members.html b/classGameObject-members.html new file mode 100644 index 0000000..6b06c7d --- /dev/null +++ b/classGameObject-members.html @@ -0,0 +1,136 @@ + + + + + + + + + SDL Minigame: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
GameObject Member List
+
+
+ +

This is the complete list of members for GameObject, including all inherited members.

+ + + + + +
GameObject(const char *texturesheet, int x, int y) (defined in GameObject)GameObject
render() (defined in GameObject)GameObject
update() (defined in GameObject)GameObject
~GameObject()=default (defined in GameObject)GameObject
+
+ + + + diff --git a/classGameObject.html b/classGameObject.html new file mode 100644 index 0000000..454f925 --- /dev/null +++ b/classGameObject.html @@ -0,0 +1,150 @@ + + + + + + + + + SDL Minigame: GameObject Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
GameObject Class Reference
+
+
+ + + + + + + + +

+Public Member Functions

GameObject (const char *texturesheet, int x, int y)
 
+void update ()
 
+void render ()
 
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classGame__coll__graph.map b/classGame__coll__graph.map new file mode 100644 index 0000000..4afd802 --- /dev/null +++ b/classGame__coll__graph.map @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/classGame__coll__graph.md5 b/classGame__coll__graph.md5 new file mode 100644 index 0000000..6c60f36 --- /dev/null +++ b/classGame__coll__graph.md5 @@ -0,0 +1 @@ +60dce505a6107649932f7dfaed416771 \ No newline at end of file diff --git a/classGame__coll__graph.svg b/classGame__coll__graph.svg new file mode 100644 index 0000000..6a31a84 --- /dev/null +++ b/classGame__coll__graph.svg @@ -0,0 +1,269 @@ + + + + + + + + + + + +Game + + +Node1 + + +Game + + + + + +Node2 + + +CollisionHandler + + + + + +Node2->Node1 + + + + + + collisionHandler + + + +Node3 + + +AssetManager + + + + + +Node3->Node1 + + + + + + assets + + + +Node4 + + +TextureManager + + + + + +Node4->Node1 + + + + + + textureManager + + + +Node5 + + +std::map< std::string, + SDL_Texture * > + + + + + +Node5->Node4 + + + + + + texture_cache + + + +Node6 + + +std::string + + + + + +Node6->Node5 + + + + + + keys + + + +Node7 + + +std::basic_string< + Char > + + + + + +Node7->Node6 + + + + + + + + +Node8 + + +std::map< K, T > + + + + + +Node8->Node5 + + + + + + < std::string, SDL +_Texture * > + + + +Node12 + + +std::map< const char + *, Mix_Chunk * > + + + + + +Node8->Node12 + + + + + + < const char *, Mix +_Chunk * > + + + +Node9 + + +K + + + + + +Node9->Node8 + + + + + + keys + + + +Node10 + + +T + + + + + +Node10->Node8 + + + + + + elements + + + +Node11 + + +SoundManager + + + + + +Node11->Node1 + + + + + + soundManager + + + +Node12->Node11 + + + + + + sound_cache + + + + + + + + diff --git a/classGame__coll__graph_org.svg b/classGame__coll__graph_org.svg new file mode 100644 index 0000000..fd0ae74 --- /dev/null +++ b/classGame__coll__graph_org.svg @@ -0,0 +1,244 @@ + + + + + + +Game + + +Node1 + + +Game + + + + + +Node2 + + +CollisionHandler + + + + + +Node2->Node1 + + + + + + collisionHandler + + + +Node3 + + +AssetManager + + + + + +Node3->Node1 + + + + + + assets + + + +Node4 + + +TextureManager + + + + + +Node4->Node1 + + + + + + textureManager + + + +Node5 + + +std::map< std::string, + SDL_Texture * > + + + + + +Node5->Node4 + + + + + + texture_cache + + + +Node6 + + +std::string + + + + + +Node6->Node5 + + + + + + keys + + + +Node7 + + +std::basic_string< + Char > + + + + + +Node7->Node6 + + + + + + + + +Node8 + + +std::map< K, T > + + + + + +Node8->Node5 + + + + + + < std::string, SDL +_Texture * > + + + +Node12 + + +std::map< const char + *, Mix_Chunk * > + + + + + +Node8->Node12 + + + + + + < const char *, Mix +_Chunk * > + + + +Node9 + + +K + + + + + +Node9->Node8 + + + + + + keys + + + +Node10 + + +T + + + + + +Node10->Node8 + + + + + + elements + + + +Node11 + + +SoundManager + + + + + +Node11->Node1 + + + + + + soundManager + + + +Node12->Node11 + + + + + + sound_cache + + + diff --git a/classHealthComponent-members.html b/classHealthComponent-members.html new file mode 100644 index 0000000..a221a6c --- /dev/null +++ b/classHealthComponent-members.html @@ -0,0 +1,144 @@ + + + + + + + + + SDL Minigame: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
HealthComponent Member List
+
+
+ +

This is the complete list of members for HealthComponent, including all inherited members.

+ + + + + + + + + + + + + +
createHeartComponents(int x) (defined in HealthComponent)HealthComponent
draw() (defined in Component)Componentinlinevirtual
entity (defined in Component)Component
getHealth() (defined in HealthComponent)HealthComponentinline
HealthComponent(int health, Direction side) (defined in HealthComponent)HealthComponentinline
init() override (defined in HealthComponent)HealthComponentvirtual
modifyHealth(int health=-1) (defined in HealthComponent)HealthComponent
refreshHearts() (defined in HealthComponent)HealthComponent
setHealth(int health) (defined in HealthComponent)HealthComponent
update() (defined in Component)Componentinlinevirtual
~Component()=default (defined in Component)Componentvirtual
~HealthComponent() (defined in HealthComponent)HealthComponentinline
+
+ + + + diff --git a/classHealthComponent.html b/classHealthComponent.html new file mode 100644 index 0000000..33086cb --- /dev/null +++ b/classHealthComponent.html @@ -0,0 +1,212 @@ + + + + + + + + + SDL Minigame: HealthComponent Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
HealthComponent Class Reference
+
+
+
+Inheritance diagram for HealthComponent:
+
+
+
[legend]
+
+Collaboration diagram for HealthComponent:
+
+
+
[legend]
+ + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

HealthComponent (int health, Direction side)
 
+void modifyHealth (int health=-1)
 
+void setHealth (int health)
 
+int getHealth ()
 
void init () override
 
+void refreshHearts ()
 
+void createHeartComponents (int x)
 
- Public Member Functions inherited from Component
virtual void update ()
 
+virtual void draw ()
 
+ + + + +

+Additional Inherited Members

- Public Attributes inherited from Component
+Entityentity
 
+

Member Function Documentation

+ +

◆ init()

+ +
+
+ + + + + +
+ + + + + + + +
void HealthComponent::init ()
+
+overridevirtual
+
+ +

Reimplemented from Component.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classHealthComponent__coll__graph.map b/classHealthComponent__coll__graph.map new file mode 100644 index 0000000..c478798 --- /dev/null +++ b/classHealthComponent__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/classHealthComponent__coll__graph.md5 b/classHealthComponent__coll__graph.md5 new file mode 100644 index 0000000..8106d05 --- /dev/null +++ b/classHealthComponent__coll__graph.md5 @@ -0,0 +1 @@ +2346e63b87fd3d64f01851b0996195ab \ No newline at end of file diff --git a/classHealthComponent__coll__graph.svg b/classHealthComponent__coll__graph.svg new file mode 100644 index 0000000..cae5c87 --- /dev/null +++ b/classHealthComponent__coll__graph.svg @@ -0,0 +1,83 @@ + + + + + + + + + + + +HealthComponent + + +Node1 + + +HealthComponent + + + + + +Node2 + + +Component + + + + + +Node2->Node1 + + + + + + + + +Node3 + + +Entity + + + + + +Node3->Node2 + + + + + + entity + + + + + + + + diff --git a/classHealthComponent__coll__graph_org.svg b/classHealthComponent__coll__graph_org.svg new file mode 100644 index 0000000..1f285ce --- /dev/null +++ b/classHealthComponent__coll__graph_org.svg @@ -0,0 +1,58 @@ + + + + + + +HealthComponent + + +Node1 + + +HealthComponent + + + + + +Node2 + + +Component + + + + + +Node2->Node1 + + + + + + + + +Node3 + + +Entity + + + + + +Node3->Node2 + + + + + + entity + + + diff --git a/classHealthComponent__inherit__graph.map b/classHealthComponent__inherit__graph.map new file mode 100644 index 0000000..b48b76c --- /dev/null +++ b/classHealthComponent__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/classHealthComponent__inherit__graph.md5 b/classHealthComponent__inherit__graph.md5 new file mode 100644 index 0000000..d5db88f --- /dev/null +++ b/classHealthComponent__inherit__graph.md5 @@ -0,0 +1 @@ +2a060a3991f91b1cb785f8c8a54a60ea \ No newline at end of file diff --git a/classHealthComponent__inherit__graph.svg b/classHealthComponent__inherit__graph.svg new file mode 100644 index 0000000..6b4b6fc --- /dev/null +++ b/classHealthComponent__inherit__graph.svg @@ -0,0 +1,64 @@ + + + + + + + + + + + +HealthComponent + + +Node1 + + +HealthComponent + + + + + +Node2 + + +Component + + + + + +Node2->Node1 + + + + + + + + + + + + + diff --git a/classHealthComponent__inherit__graph_org.svg b/classHealthComponent__inherit__graph_org.svg new file mode 100644 index 0000000..f83d088 --- /dev/null +++ b/classHealthComponent__inherit__graph_org.svg @@ -0,0 +1,39 @@ + + + + + + +HealthComponent + + +Node1 + + +HealthComponent + + + + + +Node2 + + +Component + + + + + +Node2->Node1 + + + + + + + + diff --git a/classKeyboardController-members.html b/classKeyboardController-members.html new file mode 100644 index 0000000..ee34a5f --- /dev/null +++ b/classKeyboardController-members.html @@ -0,0 +1,151 @@ + + + + + + + + + SDL Minigame: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
KeyboardController Member List
+
+
+ +

This is the complete list of members for KeyboardController, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + +
down (defined in KeyboardController)KeyboardController
draw() (defined in Component)Componentinlinevirtual
entity (defined in Component)Component
fire (defined in KeyboardController)KeyboardController
fireCooldown (defined in KeyboardController)KeyboardController
init() override (defined in KeyboardController)KeyboardControllervirtual
KeyboardController()=default (defined in KeyboardController)KeyboardController
KeyboardController(SDL_Scancode up, SDL_Scancode down, SDL_Scancode left, SDL_Scancode right, SDL_Scancode fire, Vector2D fireVelocity) (defined in KeyboardController)KeyboardController
keystates (defined in KeyboardController)KeyboardController
lastFireTime (defined in KeyboardController)KeyboardController
left (defined in KeyboardController)KeyboardController
modifyAtkSpeed(int8_t modifier) (defined in KeyboardController)KeyboardController
right (defined in KeyboardController)KeyboardController
sprite (defined in KeyboardController)KeyboardController
transform (defined in KeyboardController)KeyboardController
up (defined in KeyboardController)KeyboardController
update() override (defined in KeyboardController)KeyboardControllervirtual
~Component()=default (defined in Component)Componentvirtual
~KeyboardController()=default (defined in KeyboardController)KeyboardController
+
+ + + + diff --git a/classKeyboardController.html b/classKeyboardController.html new file mode 100644 index 0000000..8024be9 --- /dev/null +++ b/classKeyboardController.html @@ -0,0 +1,258 @@ + + + + + + + + + SDL Minigame: KeyboardController Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
KeyboardController Class Reference
+
+
+
+Inheritance diagram for KeyboardController:
+
+
+
[legend]
+
+Collaboration diagram for KeyboardController:
+
+
+
[legend]
+ + + + + + + + + + + + + +

+Public Member Functions

KeyboardController (SDL_Scancode up, SDL_Scancode down, SDL_Scancode left, SDL_Scancode right, SDL_Scancode fire, Vector2D fireVelocity)
 
void init () override
 
void update () override
 
+void modifyAtkSpeed (int8_t modifier)
 
- Public Member Functions inherited from Component
+virtual void draw ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

+TransformComponenttransform
 
+const uint8_t * keystates = SDL_GetKeyboardState(NULL)
 
+SDL_Scancode up
 
+SDL_Scancode down
 
+SDL_Scancode left
 
+SDL_Scancode right
 
+SDL_Scancode fire
 
+SpriteComponentsprite
 
+uint32_t lastFireTime = 0
 
+uint32_t fireCooldown = 1000
 
- Public Attributes inherited from Component
+Entityentity
 
+

Member Function Documentation

+ +

◆ init()

+ +
+
+ + + + + +
+ + + + + + + +
void KeyboardController::init ()
+
+overridevirtual
+
+ +

Reimplemented from Component.

+ +
+
+ +

◆ update()

+ +
+
+ + + + + +
+ + + + + + + +
void KeyboardController::update ()
+
+overridevirtual
+
+ +

Reimplemented from Component.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classKeyboardController__coll__graph.map b/classKeyboardController__coll__graph.map new file mode 100644 index 0000000..438b71b --- /dev/null +++ b/classKeyboardController__coll__graph.map @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/classKeyboardController__coll__graph.md5 b/classKeyboardController__coll__graph.md5 new file mode 100644 index 0000000..ccaa48b --- /dev/null +++ b/classKeyboardController__coll__graph.md5 @@ -0,0 +1 @@ +fadf357e16217990055d810dbcbd9b65 \ No newline at end of file diff --git a/classKeyboardController__coll__graph.svg b/classKeyboardController__coll__graph.svg new file mode 100644 index 0000000..5206753 --- /dev/null +++ b/classKeyboardController__coll__graph.svg @@ -0,0 +1,304 @@ + + + + + + + + + + + +KeyboardController + + +Node1 + + +KeyboardController + + + + + +Node2 + + +Component + + + + + +Node2->Node1 + + + + + + + + +Node4 + + +TransformComponent + + + + + +Node2->Node4 + + + + + + + + +Node6 + + +SpriteComponent + + + + + +Node2->Node6 + + + + + + + + +Node3 + + +Entity + + + + + +Node3->Node2 + + + + + + entity + + + +Node4->Node1 + + + + + + transform + + + +Node5 + + +Vector2D + + + + + +Node5->Node4 + + + + + + direction +position + + + +Node6->Node1 + + + + + + sprite + + + +Node7 + + +std::map< AnimationType, + std::unique_ptr< Animation > > + + + + + +Node7->Node6 + + + + + + animations + + + +Node8 + + +std::unique_ptr< Animation > + + + + + +Node8->Node7 + + + + + + elements + + + +Node9 + + +Animation + + + + + +Node9->Node8 + + + + + + ptr + + + +Node10 + + +std::unique_ptr< T > + + + + + +Node10->Node8 + + + + + + < Animation > + + + +Node11 + + +T + + + + + +Node11->Node10 + + + + + + ptr + + + +Node12 + + +std::map< K, T > + + + + + +Node11->Node12 + + + + + + elements + + + +Node12->Node7 + + + + + + < AnimationType, std +::unique_ptr< Animation > > + + + +Node13 + + +K + + + + + +Node13->Node12 + + + + + + keys + + + + + + + + diff --git a/classKeyboardController__coll__graph_org.svg b/classKeyboardController__coll__graph_org.svg new file mode 100644 index 0000000..d86efce --- /dev/null +++ b/classKeyboardController__coll__graph_org.svg @@ -0,0 +1,279 @@ + + + + + + +KeyboardController + + +Node1 + + +KeyboardController + + + + + +Node2 + + +Component + + + + + +Node2->Node1 + + + + + + + + +Node4 + + +TransformComponent + + + + + +Node2->Node4 + + + + + + + + +Node6 + + +SpriteComponent + + + + + +Node2->Node6 + + + + + + + + +Node3 + + +Entity + + + + + +Node3->Node2 + + + + + + entity + + + +Node4->Node1 + + + + + + transform + + + +Node5 + + +Vector2D + + + + + +Node5->Node4 + + + + + + direction +position + + + +Node6->Node1 + + + + + + sprite + + + +Node7 + + +std::map< AnimationType, + std::unique_ptr< Animation > > + + + + + +Node7->Node6 + + + + + + animations + + + +Node8 + + +std::unique_ptr< Animation > + + + + + +Node8->Node7 + + + + + + elements + + + +Node9 + + +Animation + + + + + +Node9->Node8 + + + + + + ptr + + + +Node10 + + +std::unique_ptr< T > + + + + + +Node10->Node8 + + + + + + < Animation > + + + +Node11 + + +T + + + + + +Node11->Node10 + + + + + + ptr + + + +Node12 + + +std::map< K, T > + + + + + +Node11->Node12 + + + + + + elements + + + +Node12->Node7 + + + + + + < AnimationType, std +::unique_ptr< Animation > > + + + +Node13 + + +K + + + + + +Node13->Node12 + + + + + + keys + + + diff --git a/classKeyboardController__inherit__graph.map b/classKeyboardController__inherit__graph.map new file mode 100644 index 0000000..1a3b986 --- /dev/null +++ b/classKeyboardController__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/classKeyboardController__inherit__graph.md5 b/classKeyboardController__inherit__graph.md5 new file mode 100644 index 0000000..93d7586 --- /dev/null +++ b/classKeyboardController__inherit__graph.md5 @@ -0,0 +1 @@ +30b4f0d994cb4be3d23cd049d7b29d98 \ No newline at end of file diff --git a/classKeyboardController__inherit__graph.svg b/classKeyboardController__inherit__graph.svg new file mode 100644 index 0000000..d876c7a --- /dev/null +++ b/classKeyboardController__inherit__graph.svg @@ -0,0 +1,64 @@ + + + + + + + + + + + +KeyboardController + + +Node1 + + +KeyboardController + + + + + +Node2 + + +Component + + + + + +Node2->Node1 + + + + + + + + + + + + + diff --git a/classKeyboardController__inherit__graph_org.svg b/classKeyboardController__inherit__graph_org.svg new file mode 100644 index 0000000..de2dcd0 --- /dev/null +++ b/classKeyboardController__inherit__graph_org.svg @@ -0,0 +1,39 @@ + + + + + + +KeyboardController + + +Node1 + + +KeyboardController + + + + + +Node2 + + +Component + + + + + +Node2->Node1 + + + + + + + + diff --git a/classManager-members.html b/classManager-members.html new file mode 100644 index 0000000..60e7365 --- /dev/null +++ b/classManager-members.html @@ -0,0 +1,141 @@ + + + + + + + + + SDL Minigame: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Manager Member List
+
+
+ +

This is the complete list of members for Manager, including all inherited members.

+ + + + + + + + + + +
addEntity()Manager
addToGroup(Entity *mEntity, Group mGroup)Manager
addToTeam(Entity *mEntity, Team mTeam)Manager
draw()Manager
getAll()Manager
getGroup(Group mGroup)Manager
getTeam(Team mTeam)Manager
refresh()Manager
update()Manager
+
+ + + + diff --git a/classManager.html b/classManager.html new file mode 100644 index 0000000..de1fe33 --- /dev/null +++ b/classManager.html @@ -0,0 +1,327 @@ + + + + + + + + + SDL Minigame: Manager Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Manager Class Reference
+
+
+ +

Is responsible for managing all entities. + More...

+ +

#include <Manager.h>

+ + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void update ()
 
void draw ()
 
void refresh ()
 
void addToGroup (Entity *mEntity, Group mGroup)
 
std::vector< Entity * > & getGroup (Group mGroup)
 
void addToTeam (Entity *mEntity, Team mTeam)
 
std::vector< Entity * > & getTeam (Team mTeam)
 
std::vector< Entity * > getAll ()
 
+EntityaddEntity ()
 Creates and returns a new, empty entity.
 
+

Detailed Description

+

Is responsible for managing all entities.

+

The manager class handles update and draw calls collectively for all entities, and provides functionality to get all or a subset of all entities

See also
Entity
+
+Entity::GroupLabel
+
+Entity::TeamLabel
+

Member Function Documentation

+ +

◆ addToGroup()

+ +
+
+ + + + + + + + + + + +
void Manager::addToGroup (Entity * mEntity,
Group mGroup )
+
+
Todo
friend to Entity
+ +
+
+ +

◆ addToTeam()

+ +
+
+ + + + + + + + + + + +
void Manager::addToTeam (Entity * mEntity,
Team mTeam )
+
+
Todo
friend to Entity
+ +
+
+ +

◆ draw()

+ +
+
+ + + + + + + +
void Manager::draw ()
+
+
See also
Entity::draw()
+ +
+
+ +

◆ getAll()

+ +
+
+ + + + + + + +
std::vector< Entity * > Manager::getAll ()
+
+
Returns
std::vector containing all entities
+ +
+
+ +

◆ getGroup()

+ +
+
+ + + + + + + +
std::vector< Entity * > & Manager::getGroup (Group mGroup)
+
+
Returns
std::vector containing all entities in group Entity::GroupLabel
+ +
+
+ +

◆ getTeam()

+ +
+
+ + + + + + + +
std::vector< Entity * > & Manager::getTeam (Team mTeam)
+
+
Returns
std::vector containing all entities in team Entity::TeamLabel
+ +
+
+ +

◆ refresh()

+ +
+
+ + + + + + + +
void Manager::refresh ()
+
+

Disables all functionality of entities marked for destruction
+

See also
Entity::destroy()
+ +
+
+ +

◆ update()

+ +
+
+ + + + + + + +
void Manager::update ()
+
+
See also
Entity::update()
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classManager.js b/classManager.js new file mode 100644 index 0000000..855dd10 --- /dev/null +++ b/classManager.js @@ -0,0 +1,12 @@ +var classManager = +[ + [ "addEntity", "classManager.html#a6be095e14d18da37fdb2f8bdb4b48b5a", null ], + [ "addToGroup", "classManager.html#a90f24c619760c3e1c07b4cea758b28a5", null ], + [ "addToTeam", "classManager.html#a7e9e6e12ec7125512be184559ee535c9", null ], + [ "draw", "classManager.html#ad688d8d92b4d0c1049913500ca9ba9f3", null ], + [ "getAll", "classManager.html#aae16a3d76e450281012c526541ebeb5b", null ], + [ "getGroup", "classManager.html#a365f24fd26d214314ca5a65ca3a647b1", null ], + [ "getTeam", "classManager.html#a3a2c9ef72674315e8382902690043bc9", null ], + [ "refresh", "classManager.html#adc5c66704fd1b0a9b9d38de8fdcb3748", null ], + [ "update", "classManager.html#af43da42550bd9746c5ea61a6aeee80de", null ] +]; \ No newline at end of file diff --git a/classMap-members.html b/classMap-members.html new file mode 100644 index 0000000..27f8ec4 --- /dev/null +++ b/classMap-members.html @@ -0,0 +1,135 @@ + + + + + + + + + SDL Minigame: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Map Member List
+
+
+ +

This is the complete list of members for Map, including all inherited members.

+ + + + +
loadMap(const char *path, int sizeX, int sizeY)Mapstatic
Map()=default (defined in Map)Map
~Map()=default (defined in Map)Map
+
+ + + + diff --git a/classMap.html b/classMap.html new file mode 100644 index 0000000..10d9779 --- /dev/null +++ b/classMap.html @@ -0,0 +1,188 @@ + + + + + + + + + SDL Minigame: Map Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ + + + + +

+Static Public Member Functions

static bool loadMap (const char *path, int sizeX, int sizeY)
 This loads a map.
 
+

Member Function Documentation

+ +

◆ loadMap()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + +
bool Map::loadMap (const char * path,
int sizeX,
int sizeY )
+
+static
+
+ +

This loads a map.

+
Parameters
+ + +
pathThe path to the map file
+
+
+
Returns
Boolean for success
+ +
+
+
The documentation for this class was generated from the following files:
    +
  • include/Map.h
  • +
  • src/Map.cpp
  • +
+
+
+ + + + diff --git a/classPlayerComponent-members.html b/classPlayerComponent-members.html new file mode 100644 index 0000000..2512be2 --- /dev/null +++ b/classPlayerComponent-members.html @@ -0,0 +1,137 @@ + + + + + + + + + SDL Minigame: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PlayerComponent Member List
+
+
+ +

This is the complete list of members for PlayerComponent, including all inherited members.

+ + + + + + +
draw() (defined in Component)Componentinlinevirtual
entity (defined in Component)Component
init() (defined in Component)Componentinlinevirtual
update() (defined in Component)Componentinlinevirtual
~Component()=default (defined in Component)Componentvirtual
+
+ + + + diff --git a/classPlayerComponent.html b/classPlayerComponent.html new file mode 100644 index 0000000..3e30932 --- /dev/null +++ b/classPlayerComponent.html @@ -0,0 +1,162 @@ + + + + + + + + + SDL Minigame: PlayerComponent Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PlayerComponent Class Reference
+
+
+
+Inheritance diagram for PlayerComponent:
+
+
+
[legend]
+
+Collaboration diagram for PlayerComponent:
+
+
+
[legend]
+ + + + + + + + + + + + +

+Additional Inherited Members

- Public Member Functions inherited from Component
+virtual void init ()
 
virtual void update ()
 
+virtual void draw ()
 
- Public Attributes inherited from Component
+Entityentity
 
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classPlayerComponent__coll__graph.map b/classPlayerComponent__coll__graph.map new file mode 100644 index 0000000..fc8271e --- /dev/null +++ b/classPlayerComponent__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/classPlayerComponent__coll__graph.md5 b/classPlayerComponent__coll__graph.md5 new file mode 100644 index 0000000..8e61efd --- /dev/null +++ b/classPlayerComponent__coll__graph.md5 @@ -0,0 +1 @@ +ce6732c8c1c1f8eda90972a1a443e67a \ No newline at end of file diff --git a/classPlayerComponent__coll__graph.svg b/classPlayerComponent__coll__graph.svg new file mode 100644 index 0000000..d6e06c9 --- /dev/null +++ b/classPlayerComponent__coll__graph.svg @@ -0,0 +1,83 @@ + + + + + + + + + + + +PlayerComponent + + +Node1 + + +PlayerComponent + + + + + +Node2 + + +Component + + + + + +Node2->Node1 + + + + + + + + +Node3 + + +Entity + + + + + +Node3->Node2 + + + + + + entity + + + + + + + + diff --git a/classPlayerComponent__coll__graph_org.svg b/classPlayerComponent__coll__graph_org.svg new file mode 100644 index 0000000..1437008 --- /dev/null +++ b/classPlayerComponent__coll__graph_org.svg @@ -0,0 +1,58 @@ + + + + + + +PlayerComponent + + +Node1 + + +PlayerComponent + + + + + +Node2 + + +Component + + + + + +Node2->Node1 + + + + + + + + +Node3 + + +Entity + + + + + +Node3->Node2 + + + + + + entity + + + diff --git a/classPlayerComponent__inherit__graph.map b/classPlayerComponent__inherit__graph.map new file mode 100644 index 0000000..1553441 --- /dev/null +++ b/classPlayerComponent__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/classPlayerComponent__inherit__graph.md5 b/classPlayerComponent__inherit__graph.md5 new file mode 100644 index 0000000..e0fe62d --- /dev/null +++ b/classPlayerComponent__inherit__graph.md5 @@ -0,0 +1 @@ +b503d6925379ea4e11232be502fc0938 \ No newline at end of file diff --git a/classPlayerComponent__inherit__graph.svg b/classPlayerComponent__inherit__graph.svg new file mode 100644 index 0000000..829f638 --- /dev/null +++ b/classPlayerComponent__inherit__graph.svg @@ -0,0 +1,64 @@ + + + + + + + + + + + +PlayerComponent + + +Node1 + + +PlayerComponent + + + + + +Node2 + + +Component + + + + + +Node2->Node1 + + + + + + + + + + + + + diff --git a/classPlayerComponent__inherit__graph_org.svg b/classPlayerComponent__inherit__graph_org.svg new file mode 100644 index 0000000..6b372d2 --- /dev/null +++ b/classPlayerComponent__inherit__graph_org.svg @@ -0,0 +1,39 @@ + + + + + + +PlayerComponent + + +Node1 + + +PlayerComponent + + + + + +Node2 + + +Component + + + + + +Node2->Node1 + + + + + + + + diff --git a/classPopupWindow-members.html b/classPopupWindow-members.html new file mode 100644 index 0000000..020655f --- /dev/null +++ b/classPopupWindow-members.html @@ -0,0 +1,138 @@ + + + + + + + + + SDL Minigame: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PopupWindow Member List
+
+
+ +

This is the complete list of members for PopupWindow, including all inherited members.

+ + + + + + + +
handleWinnerEvents() (defined in PopupWindow)PopupWindow
interacted (defined in PopupWindow)PopupWindow
PopupWindow(const char *title, const std::string &message) (defined in PopupWindow)PopupWindow
renderWinnerPopup(Entity::TeamLabel winner) (defined in PopupWindow)PopupWindow
shouldContinue() const (defined in PopupWindow)PopupWindow
~PopupWindow() (defined in PopupWindow)PopupWindow
+
+ + + + diff --git a/classPopupWindow.html b/classPopupWindow.html new file mode 100644 index 0000000..61ffc0b --- /dev/null +++ b/classPopupWindow.html @@ -0,0 +1,160 @@ + + + + + + + + + SDL Minigame: PopupWindow Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PopupWindow Class Reference
+
+
+ + + + + + + + + + +

+Public Member Functions

PopupWindow (const char *title, const std::string &message)
 
+void handleWinnerEvents ()
 
+bool shouldContinue () const
 
+void renderWinnerPopup (Entity::TeamLabel winner)
 
+ + + +

+Public Attributes

+bool interacted
 
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classPowerupComponent-members.html b/classPowerupComponent-members.html new file mode 100644 index 0000000..4b16270 --- /dev/null +++ b/classPowerupComponent-members.html @@ -0,0 +1,142 @@ + + + + + + + + + SDL Minigame: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PowerupComponent Member List
+
+
+ +

This is the complete list of members for PowerupComponent, including all inherited members.

+ + + + + + + + + + + +
atkSpeedEffect(Entity *player) (defined in PowerupComponent)PowerupComponent
draw() (defined in Component)Componentinlinevirtual
entity (defined in Component)Component
heartEffect(Entity *player) (defined in PowerupComponent)PowerupComponent
init() (defined in Component)Componentinlinevirtual
movementSpeedEffect(Entity *player) (defined in PowerupComponent)PowerupComponent
PowerupComponent(PowerupType type) (defined in PowerupComponent)PowerupComponent
update() override (defined in PowerupComponent)PowerupComponentvirtual
~Component()=default (defined in Component)Componentvirtual
~PowerupComponent() (defined in PowerupComponent)PowerupComponentinline
+
+ + + + diff --git a/classPowerupComponent.html b/classPowerupComponent.html new file mode 100644 index 0000000..d8cd325 --- /dev/null +++ b/classPowerupComponent.html @@ -0,0 +1,207 @@ + + + + + + + + + SDL Minigame: PowerupComponent Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PowerupComponent Class Reference
+
+
+
+Inheritance diagram for PowerupComponent:
+
+
+
[legend]
+
+Collaboration diagram for PowerupComponent:
+
+
+
[legend]
+ + + + + + + + + + + + + + + + + +

+Public Member Functions

PowerupComponent (PowerupType type)
 
void update () override
 
+void heartEffect (Entity *player)
 
+void movementSpeedEffect (Entity *player)
 
+void atkSpeedEffect (Entity *player)
 
- Public Member Functions inherited from Component
+virtual void init ()
 
+virtual void draw ()
 
+ + + + +

+Additional Inherited Members

- Public Attributes inherited from Component
+Entityentity
 
+

Member Function Documentation

+ +

◆ update()

+ +
+
+ + + + + +
+ + + + + + + +
void PowerupComponent::update ()
+
+overridevirtual
+
+ +

Reimplemented from Component.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classPowerupComponent__coll__graph.map b/classPowerupComponent__coll__graph.map new file mode 100644 index 0000000..6f712f3 --- /dev/null +++ b/classPowerupComponent__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/classPowerupComponent__coll__graph.md5 b/classPowerupComponent__coll__graph.md5 new file mode 100644 index 0000000..5e598eb --- /dev/null +++ b/classPowerupComponent__coll__graph.md5 @@ -0,0 +1 @@ +83eb8a1184d725bd4e00f0226f850a21 \ No newline at end of file diff --git a/classPowerupComponent__coll__graph.svg b/classPowerupComponent__coll__graph.svg new file mode 100644 index 0000000..9667b35 --- /dev/null +++ b/classPowerupComponent__coll__graph.svg @@ -0,0 +1,83 @@ + + + + + + + + + + + +PowerupComponent + + +Node1 + + +PowerupComponent + + + + + +Node2 + + +Component + + + + + +Node2->Node1 + + + + + + + + +Node3 + + +Entity + + + + + +Node3->Node2 + + + + + + entity + + + + + + + + diff --git a/classPowerupComponent__coll__graph_org.svg b/classPowerupComponent__coll__graph_org.svg new file mode 100644 index 0000000..cb9c46c --- /dev/null +++ b/classPowerupComponent__coll__graph_org.svg @@ -0,0 +1,58 @@ + + + + + + +PowerupComponent + + +Node1 + + +PowerupComponent + + + + + +Node2 + + +Component + + + + + +Node2->Node1 + + + + + + + + +Node3 + + +Entity + + + + + +Node3->Node2 + + + + + + entity + + + diff --git a/classPowerupComponent__inherit__graph.map b/classPowerupComponent__inherit__graph.map new file mode 100644 index 0000000..30c7081 --- /dev/null +++ b/classPowerupComponent__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/classPowerupComponent__inherit__graph.md5 b/classPowerupComponent__inherit__graph.md5 new file mode 100644 index 0000000..c669f2d --- /dev/null +++ b/classPowerupComponent__inherit__graph.md5 @@ -0,0 +1 @@ +b900b329db175ab82c00fb521ffbabeb \ No newline at end of file diff --git a/classPowerupComponent__inherit__graph.svg b/classPowerupComponent__inherit__graph.svg new file mode 100644 index 0000000..06273e4 --- /dev/null +++ b/classPowerupComponent__inherit__graph.svg @@ -0,0 +1,64 @@ + + + + + + + + + + + +PowerupComponent + + +Node1 + + +PowerupComponent + + + + + +Node2 + + +Component + + + + + +Node2->Node1 + + + + + + + + + + + + + diff --git a/classPowerupComponent__inherit__graph_org.svg b/classPowerupComponent__inherit__graph_org.svg new file mode 100644 index 0000000..2b07a2b --- /dev/null +++ b/classPowerupComponent__inherit__graph_org.svg @@ -0,0 +1,39 @@ + + + + + + +PowerupComponent + + +Node1 + + +PowerupComponent + + + + + +Node2 + + +Component + + + + + +Node2->Node1 + + + + + + + + diff --git a/classProjectileComponent-members.html b/classProjectileComponent-members.html new file mode 100644 index 0000000..21e42d8 --- /dev/null +++ b/classProjectileComponent-members.html @@ -0,0 +1,139 @@ + + + + + + + + + SDL Minigame: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ProjectileComponent Member List
+
+
+ +

This is the complete list of members for ProjectileComponent, including all inherited members.

+ + + + + + + + +
draw() (defined in Component)Componentinlinevirtual
entity (defined in Component)Component
init() override (defined in ProjectileComponent)ProjectileComponentvirtual
ProjectileComponent(int range, int speed, Vector2D direction) (defined in ProjectileComponent)ProjectileComponentinline
update() override (defined in ProjectileComponent)ProjectileComponentvirtual
~Component()=default (defined in Component)Componentvirtual
~ProjectileComponent() (defined in ProjectileComponent)ProjectileComponentinline
+
+ + + + diff --git a/classProjectileComponent.html b/classProjectileComponent.html new file mode 100644 index 0000000..89ced01 --- /dev/null +++ b/classProjectileComponent.html @@ -0,0 +1,224 @@ + + + + + + + + + SDL Minigame: ProjectileComponent Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ProjectileComponent Class Reference
+
+
+
+Inheritance diagram for ProjectileComponent:
+
+
+
[legend]
+
+Collaboration diagram for ProjectileComponent:
+
+
+
[legend]
+ + + + + + + + + + + +

+Public Member Functions

ProjectileComponent (int range, int speed, Vector2D direction)
 
void init () override
 
void update () override
 
- Public Member Functions inherited from Component
+virtual void draw ()
 
+ + + + +

+Additional Inherited Members

- Public Attributes inherited from Component
+Entityentity
 
+

Member Function Documentation

+ +

◆ init()

+ +
+
+ + + + + +
+ + + + + + + +
void ProjectileComponent::init ()
+
+overridevirtual
+
+ +

Reimplemented from Component.

+ +
+
+ +

◆ update()

+ +
+
+ + + + + +
+ + + + + + + +
void ProjectileComponent::update ()
+
+overridevirtual
+
+ +

Reimplemented from Component.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classProjectileComponent__coll__graph.map b/classProjectileComponent__coll__graph.map new file mode 100644 index 0000000..0bc61dd --- /dev/null +++ b/classProjectileComponent__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/classProjectileComponent__coll__graph.md5 b/classProjectileComponent__coll__graph.md5 new file mode 100644 index 0000000..dbeed5d --- /dev/null +++ b/classProjectileComponent__coll__graph.md5 @@ -0,0 +1 @@ +188bdb51174d2436601db465119bc37e \ No newline at end of file diff --git a/classProjectileComponent__coll__graph.svg b/classProjectileComponent__coll__graph.svg new file mode 100644 index 0000000..cbea75d --- /dev/null +++ b/classProjectileComponent__coll__graph.svg @@ -0,0 +1,83 @@ + + + + + + + + + + + +ProjectileComponent + + +Node1 + + +ProjectileComponent + + + + + +Node2 + + +Component + + + + + +Node2->Node1 + + + + + + + + +Node3 + + +Entity + + + + + +Node3->Node2 + + + + + + entity + + + + + + + + diff --git a/classProjectileComponent__coll__graph_org.svg b/classProjectileComponent__coll__graph_org.svg new file mode 100644 index 0000000..b97a404 --- /dev/null +++ b/classProjectileComponent__coll__graph_org.svg @@ -0,0 +1,58 @@ + + + + + + +ProjectileComponent + + +Node1 + + +ProjectileComponent + + + + + +Node2 + + +Component + + + + + +Node2->Node1 + + + + + + + + +Node3 + + +Entity + + + + + +Node3->Node2 + + + + + + entity + + + diff --git a/classProjectileComponent__inherit__graph.map b/classProjectileComponent__inherit__graph.map new file mode 100644 index 0000000..3ae472f --- /dev/null +++ b/classProjectileComponent__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/classProjectileComponent__inherit__graph.md5 b/classProjectileComponent__inherit__graph.md5 new file mode 100644 index 0000000..f405538 --- /dev/null +++ b/classProjectileComponent__inherit__graph.md5 @@ -0,0 +1 @@ +8750e2ad869462f7e853472c23fa3b08 \ No newline at end of file diff --git a/classProjectileComponent__inherit__graph.svg b/classProjectileComponent__inherit__graph.svg new file mode 100644 index 0000000..a91088f --- /dev/null +++ b/classProjectileComponent__inherit__graph.svg @@ -0,0 +1,64 @@ + + + + + + + + + + + +ProjectileComponent + + +Node1 + + +ProjectileComponent + + + + + +Node2 + + +Component + + + + + +Node2->Node1 + + + + + + + + + + + + + diff --git a/classProjectileComponent__inherit__graph_org.svg b/classProjectileComponent__inherit__graph_org.svg new file mode 100644 index 0000000..dfd9187 --- /dev/null +++ b/classProjectileComponent__inherit__graph_org.svg @@ -0,0 +1,39 @@ + + + + + + +ProjectileComponent + + +Node1 + + +ProjectileComponent + + + + + +Node2 + + +Component + + + + + +Node2->Node1 + + + + + + + + diff --git a/classSoundManager-members.html b/classSoundManager-members.html new file mode 100644 index 0000000..8974992 --- /dev/null +++ b/classSoundManager-members.html @@ -0,0 +1,139 @@ + + + + + + + + + SDL Minigame: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SoundManager Member List
+
+
+ +

This is the complete list of members for SoundManager, including all inherited members.

+ + + + + + + + +
loadSound(const char *fileName) (defined in SoundManager)SoundManager
operator=(SoundManager const &)=delete (defined in SoundManager)SoundManager
playSound(SoundTypes sound) (defined in SoundManager)SoundManagerstatic
sound_cache (defined in SoundManager)SoundManager
SoundManager() (defined in SoundManager)SoundManagerinline
SoundManager(SoundManager const &)=delete (defined in SoundManager)SoundManager
~SoundManager() (defined in SoundManager)SoundManagerinline
+
+ + + + diff --git a/classSoundManager.html b/classSoundManager.html new file mode 100644 index 0000000..490ae94 --- /dev/null +++ b/classSoundManager.html @@ -0,0 +1,169 @@ + + + + + + + + + SDL Minigame: SoundManager Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+Collaboration diagram for SoundManager:
+
+
+
[legend]
+ + + + + + + + +

+Public Member Functions

SoundManager (SoundManager const &)=delete
 
+void operator= (SoundManager const &)=delete
 
+Mix_Chunk * loadSound (const char *fileName)
 
+ + + +

+Static Public Member Functions

+static void playSound (SoundTypes sound)
 
+ + + +

+Public Attributes

+std::map< const char *, Mix_Chunk * > sound_cache
 
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classSoundManager__coll__graph.map b/classSoundManager__coll__graph.map new file mode 100644 index 0000000..12a7288 --- /dev/null +++ b/classSoundManager__coll__graph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/classSoundManager__coll__graph.md5 b/classSoundManager__coll__graph.md5 new file mode 100644 index 0000000..22df809 --- /dev/null +++ b/classSoundManager__coll__graph.md5 @@ -0,0 +1 @@ +c58653095aa058e64ea7461ae4280ad8 \ No newline at end of file diff --git a/classSoundManager__coll__graph.svg b/classSoundManager__coll__graph.svg new file mode 100644 index 0000000..5837a5b --- /dev/null +++ b/classSoundManager__coll__graph.svg @@ -0,0 +1,124 @@ + + + + + + + + + + + +SoundManager + + +Node1 + + +SoundManager + + + + + +Node2 + + +std::map< const char + *, Mix_Chunk * > + + + + + +Node2->Node1 + + + + + + sound_cache + + + +Node3 + + +std::map< K, T > + + + + + +Node3->Node2 + + + + + + < const char *, Mix +_Chunk * > + + + +Node4 + + +K + + + + + +Node4->Node3 + + + + + + keys + + + +Node5 + + +T + + + + + +Node5->Node3 + + + + + + elements + + + + + + + + diff --git a/classSoundManager__coll__graph_org.svg b/classSoundManager__coll__graph_org.svg new file mode 100644 index 0000000..6dc2d0c --- /dev/null +++ b/classSoundManager__coll__graph_org.svg @@ -0,0 +1,99 @@ + + + + + + +SoundManager + + +Node1 + + +SoundManager + + + + + +Node2 + + +std::map< const char + *, Mix_Chunk * > + + + + + +Node2->Node1 + + + + + + sound_cache + + + +Node3 + + +std::map< K, T > + + + + + +Node3->Node2 + + + + + + < const char *, Mix +_Chunk * > + + + +Node4 + + +K + + + + + +Node4->Node3 + + + + + + keys + + + +Node5 + + +T + + + + + +Node5->Node3 + + + + + + elements + + + diff --git a/classSpriteComponent-members.html b/classSpriteComponent-members.html new file mode 100644 index 0000000..f807307 --- /dev/null +++ b/classSpriteComponent-members.html @@ -0,0 +1,146 @@ + + + + + + + + + SDL Minigame: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SpriteComponent Member List
+
+
+ +

This is the complete list of members for SpriteComponent, including all inherited members.

+ + + + + + + + + + + + + + + +
animationIndex (defined in SpriteComponent)SpriteComponent
animations (defined in SpriteComponent)SpriteComponent
draw() override (defined in SpriteComponent)SpriteComponentvirtual
entity (defined in Component)Component
init() override (defined in SpriteComponent)SpriteComponentvirtual
playAnimation(AnimationType type) (defined in SpriteComponent)SpriteComponent
setDirection(Direction direction) (defined in SpriteComponent)SpriteComponent
setTexture(const char *path) (defined in SpriteComponent)SpriteComponent
SpriteComponent()=default (defined in SpriteComponent)SpriteComponent
SpriteComponent(const char *path) (defined in SpriteComponent)SpriteComponent
SpriteComponent(const char *path, bool isAnimated) (defined in SpriteComponent)SpriteComponent
update() override (defined in SpriteComponent)SpriteComponentvirtual
~Component()=default (defined in Component)Componentvirtual
~SpriteComponent() (defined in SpriteComponent)SpriteComponent
+
+ + + + diff --git a/classSpriteComponent.html b/classSpriteComponent.html new file mode 100644 index 0000000..15edce9 --- /dev/null +++ b/classSpriteComponent.html @@ -0,0 +1,268 @@ + + + + + + + + + SDL Minigame: SpriteComponent Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SpriteComponent Class Reference
+
+
+
+Inheritance diagram for SpriteComponent:
+
+
+
[legend]
+
+Collaboration diagram for SpriteComponent:
+
+
+
[legend]
+ + + + + + + + + + + + + + + + + + +

+Public Member Functions

SpriteComponent (const char *path)
 
SpriteComponent (const char *path, bool isAnimated)
 
+void setTexture (const char *path)
 
void init () override
 
void update () override
 
void draw () override
 
+void playAnimation (AnimationType type)
 
+void setDirection (Direction direction)
 
+ + + + + + + + +

+Public Attributes

+int animationIndex = 0
 
+std::map< AnimationType, std::unique_ptr< Animation > > animations
 
- Public Attributes inherited from Component
+Entityentity
 
+

Member Function Documentation

+ +

◆ draw()

+ +
+
+ + + + + +
+ + + + + + + +
void SpriteComponent::draw ()
+
+overridevirtual
+
+ +

Reimplemented from Component.

+ +
+
+ +

◆ init()

+ +
+
+ + + + + +
+ + + + + + + +
void SpriteComponent::init ()
+
+overridevirtual
+
+ +

Reimplemented from Component.

+ +
+
+ +

◆ update()

+ +
+
+ + + + + +
+ + + + + + + +
void SpriteComponent::update ()
+
+overridevirtual
+
+ +

Reimplemented from Component.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classSpriteComponent__coll__graph.map b/classSpriteComponent__coll__graph.map new file mode 100644 index 0000000..ebd26c4 --- /dev/null +++ b/classSpriteComponent__coll__graph.map @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/classSpriteComponent__coll__graph.md5 b/classSpriteComponent__coll__graph.md5 new file mode 100644 index 0000000..ed0047b --- /dev/null +++ b/classSpriteComponent__coll__graph.md5 @@ -0,0 +1 @@ +d51998a4579dca594aea0dad18b75bec \ No newline at end of file diff --git a/classSpriteComponent__coll__graph.svg b/classSpriteComponent__coll__graph.svg new file mode 100644 index 0000000..f294b7a --- /dev/null +++ b/classSpriteComponent__coll__graph.svg @@ -0,0 +1,228 @@ + + + + + + + + + + + +SpriteComponent + + +Node1 + + +SpriteComponent + + + + + +Node2 + + +Component + + + + + +Node2->Node1 + + + + + + + + +Node3 + + +Entity + + + + + +Node3->Node2 + + + + + + entity + + + +Node4 + + +std::map< AnimationType, + std::unique_ptr< Animation > > + + + + + +Node4->Node1 + + + + + + animations + + + +Node5 + + +std::unique_ptr< Animation > + + + + + +Node5->Node4 + + + + + + elements + + + +Node6 + + +Animation + + + + + +Node6->Node5 + + + + + + ptr + + + +Node7 + + +std::unique_ptr< T > + + + + + +Node7->Node5 + + + + + + < Animation > + + + +Node8 + + +T + + + + + +Node8->Node7 + + + + + + ptr + + + +Node9 + + +std::map< K, T > + + + + + +Node8->Node9 + + + + + + elements + + + +Node9->Node4 + + + + + + < AnimationType, std +::unique_ptr< Animation > > + + + +Node10 + + +K + + + + + +Node10->Node9 + + + + + + keys + + + + + + + + diff --git a/classSpriteComponent__coll__graph_org.svg b/classSpriteComponent__coll__graph_org.svg new file mode 100644 index 0000000..6d5a026 --- /dev/null +++ b/classSpriteComponent__coll__graph_org.svg @@ -0,0 +1,203 @@ + + + + + + +SpriteComponent + + +Node1 + + +SpriteComponent + + + + + +Node2 + + +Component + + + + + +Node2->Node1 + + + + + + + + +Node3 + + +Entity + + + + + +Node3->Node2 + + + + + + entity + + + +Node4 + + +std::map< AnimationType, + std::unique_ptr< Animation > > + + + + + +Node4->Node1 + + + + + + animations + + + +Node5 + + +std::unique_ptr< Animation > + + + + + +Node5->Node4 + + + + + + elements + + + +Node6 + + +Animation + + + + + +Node6->Node5 + + + + + + ptr + + + +Node7 + + +std::unique_ptr< T > + + + + + +Node7->Node5 + + + + + + < Animation > + + + +Node8 + + +T + + + + + +Node8->Node7 + + + + + + ptr + + + +Node9 + + +std::map< K, T > + + + + + +Node8->Node9 + + + + + + elements + + + +Node9->Node4 + + + + + + < AnimationType, std +::unique_ptr< Animation > > + + + +Node10 + + +K + + + + + +Node10->Node9 + + + + + + keys + + + diff --git a/classSpriteComponent__inherit__graph.map b/classSpriteComponent__inherit__graph.map new file mode 100644 index 0000000..d39ebe9 --- /dev/null +++ b/classSpriteComponent__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/classSpriteComponent__inherit__graph.md5 b/classSpriteComponent__inherit__graph.md5 new file mode 100644 index 0000000..d192860 --- /dev/null +++ b/classSpriteComponent__inherit__graph.md5 @@ -0,0 +1 @@ +0252810522368f3671cc9aa9fd14a88d \ No newline at end of file diff --git a/classSpriteComponent__inherit__graph.svg b/classSpriteComponent__inherit__graph.svg new file mode 100644 index 0000000..a461016 --- /dev/null +++ b/classSpriteComponent__inherit__graph.svg @@ -0,0 +1,64 @@ + + + + + + + + + + + +SpriteComponent + + +Node1 + + +SpriteComponent + + + + + +Node2 + + +Component + + + + + +Node2->Node1 + + + + + + + + + + + + + diff --git a/classSpriteComponent__inherit__graph_org.svg b/classSpriteComponent__inherit__graph_org.svg new file mode 100644 index 0000000..a2c3270 --- /dev/null +++ b/classSpriteComponent__inherit__graph_org.svg @@ -0,0 +1,39 @@ + + + + + + +SpriteComponent + + +Node1 + + +SpriteComponent + + + + + +Node2 + + +Component + + + + + +Node2->Node1 + + + + + + + + diff --git a/classStatEffectsComponent-members.html b/classStatEffectsComponent-members.html new file mode 100644 index 0000000..757fc13 --- /dev/null +++ b/classStatEffectsComponent-members.html @@ -0,0 +1,141 @@ + + + + + + + + + SDL Minigame: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
StatEffectsComponent Member List
+
+
+ +

This is the complete list of members for StatEffectsComponent, including all inherited members.

+ + + + + + + + + + +
draw() (defined in Component)Componentinlinevirtual
entity (defined in Component)Component
init() override (defined in StatEffectsComponent)StatEffectsComponentvirtual
modifyStatDur(Stats stat, int duration) (defined in StatEffectsComponent)StatEffectsComponent
modifyStatValue(Stats stat, int modifier) (defined in StatEffectsComponent)StatEffectsComponent
StatEffectsComponent() (defined in StatEffectsComponent)StatEffectsComponentinline
update() override (defined in StatEffectsComponent)StatEffectsComponentvirtual
~Component()=default (defined in Component)Componentvirtual
~StatEffectsComponent() (defined in StatEffectsComponent)StatEffectsComponentinline
+
+ + + + diff --git a/classStatEffectsComponent.html b/classStatEffectsComponent.html new file mode 100644 index 0000000..9bde528 --- /dev/null +++ b/classStatEffectsComponent.html @@ -0,0 +1,227 @@ + + + + + + + + + SDL Minigame: StatEffectsComponent Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
StatEffectsComponent Class Reference
+
+
+
+Inheritance diagram for StatEffectsComponent:
+
+
+
[legend]
+
+Collaboration diagram for StatEffectsComponent:
+
+
+
[legend]
+ + + + + + + + + + + + + +

+Public Member Functions

void init () override
 
void update () override
 
+void modifyStatDur (Stats stat, int duration)
 
+void modifyStatValue (Stats stat, int modifier)
 
- Public Member Functions inherited from Component
+virtual void draw ()
 
+ + + + +

+Additional Inherited Members

- Public Attributes inherited from Component
+Entityentity
 
+

Member Function Documentation

+ +

◆ init()

+ +
+
+ + + + + +
+ + + + + + + +
void StatEffectsComponent::init ()
+
+overridevirtual
+
+ +

Reimplemented from Component.

+ +
+
+ +

◆ update()

+ +
+
+ + + + + +
+ + + + + + + +
void StatEffectsComponent::update ()
+
+overridevirtual
+
+ +

Reimplemented from Component.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classStatEffectsComponent__coll__graph.map b/classStatEffectsComponent__coll__graph.map new file mode 100644 index 0000000..4f22d8a --- /dev/null +++ b/classStatEffectsComponent__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/classStatEffectsComponent__coll__graph.md5 b/classStatEffectsComponent__coll__graph.md5 new file mode 100644 index 0000000..bf8cfff --- /dev/null +++ b/classStatEffectsComponent__coll__graph.md5 @@ -0,0 +1 @@ +7b5788f040e1eda1892394bb2eed4ed4 \ No newline at end of file diff --git a/classStatEffectsComponent__coll__graph.svg b/classStatEffectsComponent__coll__graph.svg new file mode 100644 index 0000000..7b06ebf --- /dev/null +++ b/classStatEffectsComponent__coll__graph.svg @@ -0,0 +1,83 @@ + + + + + + + + + + + +StatEffectsComponent + + +Node1 + + +StatEffectsComponent + + + + + +Node2 + + +Component + + + + + +Node2->Node1 + + + + + + + + +Node3 + + +Entity + + + + + +Node3->Node2 + + + + + + entity + + + + + + + + diff --git a/classStatEffectsComponent__coll__graph_org.svg b/classStatEffectsComponent__coll__graph_org.svg new file mode 100644 index 0000000..22fc87b --- /dev/null +++ b/classStatEffectsComponent__coll__graph_org.svg @@ -0,0 +1,58 @@ + + + + + + +StatEffectsComponent + + +Node1 + + +StatEffectsComponent + + + + + +Node2 + + +Component + + + + + +Node2->Node1 + + + + + + + + +Node3 + + +Entity + + + + + +Node3->Node2 + + + + + + entity + + + diff --git a/classStatEffectsComponent__inherit__graph.map b/classStatEffectsComponent__inherit__graph.map new file mode 100644 index 0000000..2276843 --- /dev/null +++ b/classStatEffectsComponent__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/classStatEffectsComponent__inherit__graph.md5 b/classStatEffectsComponent__inherit__graph.md5 new file mode 100644 index 0000000..173a83b --- /dev/null +++ b/classStatEffectsComponent__inherit__graph.md5 @@ -0,0 +1 @@ +307ba1563493266b81e66e9a079d04c9 \ No newline at end of file diff --git a/classStatEffectsComponent__inherit__graph.svg b/classStatEffectsComponent__inherit__graph.svg new file mode 100644 index 0000000..978339b --- /dev/null +++ b/classStatEffectsComponent__inherit__graph.svg @@ -0,0 +1,64 @@ + + + + + + + + + + + +StatEffectsComponent + + +Node1 + + +StatEffectsComponent + + + + + +Node2 + + +Component + + + + + +Node2->Node1 + + + + + + + + + + + + + diff --git a/classStatEffectsComponent__inherit__graph_org.svg b/classStatEffectsComponent__inherit__graph_org.svg new file mode 100644 index 0000000..fdf186c --- /dev/null +++ b/classStatEffectsComponent__inherit__graph_org.svg @@ -0,0 +1,39 @@ + + + + + + +StatEffectsComponent + + +Node1 + + +StatEffectsComponent + + + + + +Node2 + + +Component + + + + + +Node2->Node1 + + + + + + + + diff --git a/classTextureDict-members.html b/classTextureDict-members.html new file mode 100644 index 0000000..f7fde26 --- /dev/null +++ b/classTextureDict-members.html @@ -0,0 +1,134 @@ + + + + + + + + + SDL Minigame: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TextureDict Member List
+
+
+ +

This is the complete list of members for TextureDict, including all inherited members.

+ + + +
powerupDictionary (defined in TextureDict)TextureDict
tileDictionary (defined in TextureDict)TextureDict
+
+ + + + diff --git a/classTextureDict.html b/classTextureDict.html new file mode 100644 index 0000000..1bd296f --- /dev/null +++ b/classTextureDict.html @@ -0,0 +1,190 @@ + + + + + + + + + SDL Minigame: TextureDict Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TextureDict Class Reference
+
+
+
+Collaboration diagram for TextureDict:
+
+
+
[legend]
+ + + + + + +

+Public Attributes

const std::map< int, std::string > tileDictionary
 
std::map< PowerupType, std::string > powerupDictionary
 
+

Member Data Documentation

+ +

◆ powerupDictionary

+ +
+
+ + + + +
std::map<PowerupType, std::string> TextureDict::powerupDictionary
+
+Initial value:
= {
+
{PowerupType::HEART, "assets/heart_powerup.png"},
+
{PowerupType::WALKINGSPEED, "assets/movement_speed_powerup.png"},
+
{PowerupType::SHOOTINGSPEED, "assets/atk_speed_powerup.png"}
+
}
+
+
+
+ +

◆ tileDictionary

+ +
+
+ + + + +
const std::map<int, std::string> TextureDict::tileDictionary
+
+Initial value:
= {
+
{1, "assets/water.png"},
+
{2, "assets/dirt.png"},
+
{3, "assets/grass.png"},
+
{7, "assets/grass_water_left.png"},
+
{9, "assets/grass_water_right.png"}
+
}
+
+
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classTextureDict__coll__graph.map b/classTextureDict__coll__graph.map new file mode 100644 index 0000000..2000b4e --- /dev/null +++ b/classTextureDict__coll__graph.map @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/classTextureDict__coll__graph.md5 b/classTextureDict__coll__graph.md5 new file mode 100644 index 0000000..e021d97 --- /dev/null +++ b/classTextureDict__coll__graph.md5 @@ -0,0 +1 @@ +a4536964abd5ec758fd9eaa36f3f85af \ No newline at end of file diff --git a/classTextureDict__coll__graph.svg b/classTextureDict__coll__graph.svg new file mode 100644 index 0000000..b7a7262 --- /dev/null +++ b/classTextureDict__coll__graph.svg @@ -0,0 +1,202 @@ + + + + + + + + + + + +TextureDict + + +Node1 + + +TextureDict + + + + + +Node2 + + +std::map< int, std +::string > + + + + + +Node2->Node1 + + + + + + tileDictionary + + + +Node3 + + +std::string + + + + + +Node3->Node2 + + + + + + elements + + + +Node8 + + +std::map< PowerupType, + std::string > + + + + + +Node3->Node8 + + + + + + elements + + + +Node4 + + +std::basic_string< + Char > + + + + + +Node4->Node3 + + + + + + + + +Node5 + + +std::map< K, T > + + + + + +Node5->Node2 + + + + + + < int, std::string > + + + +Node5->Node8 + + + + + + < PowerupType, std +::string > + + + +Node6 + + +K + + + + + +Node6->Node5 + + + + + + keys + + + +Node7 + + +T + + + + + +Node7->Node5 + + + + + + elements + + + +Node8->Node1 + + + + + + powerupDictionary + + + + + + + + diff --git a/classTextureDict__coll__graph_org.svg b/classTextureDict__coll__graph_org.svg new file mode 100644 index 0000000..469e536 --- /dev/null +++ b/classTextureDict__coll__graph_org.svg @@ -0,0 +1,177 @@ + + + + + + +TextureDict + + +Node1 + + +TextureDict + + + + + +Node2 + + +std::map< int, std +::string > + + + + + +Node2->Node1 + + + + + + tileDictionary + + + +Node3 + + +std::string + + + + + +Node3->Node2 + + + + + + elements + + + +Node8 + + +std::map< PowerupType, + std::string > + + + + + +Node3->Node8 + + + + + + elements + + + +Node4 + + +std::basic_string< + Char > + + + + + +Node4->Node3 + + + + + + + + +Node5 + + +std::map< K, T > + + + + + +Node5->Node2 + + + + + + < int, std::string > + + + +Node5->Node8 + + + + + + < PowerupType, std +::string > + + + +Node6 + + +K + + + + + +Node6->Node5 + + + + + + keys + + + +Node7 + + +T + + + + + +Node7->Node5 + + + + + + elements + + + +Node8->Node1 + + + + + + powerupDictionary + + + diff --git a/classTextureManager-members.html b/classTextureManager-members.html new file mode 100644 index 0000000..c0d39ae --- /dev/null +++ b/classTextureManager-members.html @@ -0,0 +1,138 @@ + + + + + + + + + SDL Minigame: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TextureManager Member List
+
+
+ +

This is the complete list of members for TextureManager, including all inherited members.

+ + + + + + + +
draw(SDL_Texture *texture, SDL_Rect src, SDL_Rect dest, bool flipped=false) (defined in TextureManager)TextureManagerstatic
loadTexture(const char *fileName) (defined in TextureManager)TextureManager
splitSpriteSheet(SDL_Texture *spriteSheet, int width, int height, int spritesOnSheet) (defined in TextureManager)TextureManagerstatic
texture_cache (defined in TextureManager)TextureManager
TextureManager() (defined in TextureManager)TextureManagerinline
~TextureManager() (defined in TextureManager)TextureManagerinline
+
+ + + + diff --git a/classTextureManager.html b/classTextureManager.html new file mode 100644 index 0000000..556404a --- /dev/null +++ b/classTextureManager.html @@ -0,0 +1,166 @@ + + + + + + + + + SDL Minigame: TextureManager Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+Collaboration diagram for TextureManager:
+
+
+
[legend]
+ + + + +

+Public Member Functions

+SDL_Texture * loadTexture (const char *fileName)
 
+ + + + + +

+Static Public Member Functions

+static std::vector< SDL_Rect > splitSpriteSheet (SDL_Texture *spriteSheet, int width, int height, int spritesOnSheet)
 
+static void draw (SDL_Texture *texture, SDL_Rect src, SDL_Rect dest, bool flipped=false)
 
+ + + +

+Public Attributes

+std::map< std::string, SDL_Texture * > texture_cache
 
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classTextureManager__coll__graph.map b/classTextureManager__coll__graph.map new file mode 100644 index 0000000..f4e8825 --- /dev/null +++ b/classTextureManager__coll__graph.map @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/classTextureManager__coll__graph.md5 b/classTextureManager__coll__graph.md5 new file mode 100644 index 0000000..0daddac --- /dev/null +++ b/classTextureManager__coll__graph.md5 @@ -0,0 +1 @@ +06b0406f5895f8ce326cf4d184fb643b \ No newline at end of file diff --git a/classTextureManager__coll__graph.svg b/classTextureManager__coll__graph.svg new file mode 100644 index 0000000..37dc696 --- /dev/null +++ b/classTextureManager__coll__graph.svg @@ -0,0 +1,162 @@ + + + + + + + + + + + +TextureManager + + +Node1 + + +TextureManager + + + + + +Node2 + + +std::map< std::string, + SDL_Texture * > + + + + + +Node2->Node1 + + + + + + texture_cache + + + +Node3 + + +std::string + + + + + +Node3->Node2 + + + + + + keys + + + +Node4 + + +std::basic_string< + Char > + + + + + +Node4->Node3 + + + + + + + + +Node5 + + +std::map< K, T > + + + + + +Node5->Node2 + + + + + + < std::string, SDL +_Texture * > + + + +Node6 + + +K + + + + + +Node6->Node5 + + + + + + keys + + + +Node7 + + +T + + + + + +Node7->Node5 + + + + + + elements + + + + + + + + diff --git a/classTextureManager__coll__graph_org.svg b/classTextureManager__coll__graph_org.svg new file mode 100644 index 0000000..1ce5b80 --- /dev/null +++ b/classTextureManager__coll__graph_org.svg @@ -0,0 +1,137 @@ + + + + + + +TextureManager + + +Node1 + + +TextureManager + + + + + +Node2 + + +std::map< std::string, + SDL_Texture * > + + + + + +Node2->Node1 + + + + + + texture_cache + + + +Node3 + + +std::string + + + + + +Node3->Node2 + + + + + + keys + + + +Node4 + + +std::basic_string< + Char > + + + + + +Node4->Node3 + + + + + + + + +Node5 + + +std::map< K, T > + + + + + +Node5->Node2 + + + + + + < std::string, SDL +_Texture * > + + + +Node6 + + +K + + + + + +Node6->Node5 + + + + + + keys + + + +Node7 + + +T + + + + + +Node7->Node5 + + + + + + elements + + + diff --git a/classTileComponent-members.html b/classTileComponent-members.html new file mode 100644 index 0000000..c75e028 --- /dev/null +++ b/classTileComponent-members.html @@ -0,0 +1,146 @@ + + + + + + + + + SDL Minigame: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TileComponent Member List
+
+
+ +

This is the complete list of members for TileComponent, including all inherited members.

+ + + + + + + + + + + + + + + +
draw() (defined in Component)Componentinlinevirtual
entity (defined in Component)Component
init() override (defined in TileComponent)TileComponentvirtual
path (defined in TileComponent)TileComponent
sprite (defined in TileComponent)TileComponent
textureDict (defined in TileComponent)TileComponent
TileComponent()=default (defined in TileComponent)TileComponent
TileComponent(int x, int y, int w, int h, int id) (defined in TileComponent)TileComponent
tileID (defined in TileComponent)TileComponent
tileRect (defined in TileComponent)TileComponent
transform (defined in TileComponent)TileComponent
update() (defined in Component)Componentinlinevirtual
~Component()=default (defined in Component)Componentvirtual
~TileComponent()=default (defined in TileComponent)TileComponent
+
+ + + + diff --git a/classTileComponent.html b/classTileComponent.html new file mode 100644 index 0000000..7e65d66 --- /dev/null +++ b/classTileComponent.html @@ -0,0 +1,216 @@ + + + + + + + + + SDL Minigame: TileComponent Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TileComponent Class Reference
+
+
+
+Inheritance diagram for TileComponent:
+
+
+
[legend]
+
+Collaboration diagram for TileComponent:
+
+
+
[legend]
+ + + + + + + + + + + +

+Public Member Functions

TileComponent (int x, int y, int w, int h, int id)
 
void init () override
 
- Public Member Functions inherited from Component
virtual void update ()
 
+virtual void draw ()
 
+ + + + + + + + + + + + + + + + +

+Public Attributes

+TransformComponenttransform
 
+SpriteComponentsprite
 
+TextureDict textureDict
 
+SDL_Rect tileRect
 
+int tileID
 
+const char * path
 
- Public Attributes inherited from Component
+Entityentity
 
+

Member Function Documentation

+ +

◆ init()

+ +
+
+ + + + + +
+ + + + + + + +
void TileComponent::init ()
+
+overridevirtual
+
+ +

Reimplemented from Component.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classTileComponent__coll__graph.map b/classTileComponent__coll__graph.map new file mode 100644 index 0000000..52b751a --- /dev/null +++ b/classTileComponent__coll__graph.map @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/classTileComponent__coll__graph.md5 b/classTileComponent__coll__graph.md5 new file mode 100644 index 0000000..b719085 --- /dev/null +++ b/classTileComponent__coll__graph.md5 @@ -0,0 +1 @@ +247c99686cbec86138180b707e962c7c \ No newline at end of file diff --git a/classTileComponent__coll__graph.svg b/classTileComponent__coll__graph.svg new file mode 100644 index 0000000..2740e8a --- /dev/null +++ b/classTileComponent__coll__graph.svg @@ -0,0 +1,489 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +TileComponent + + +Node1 + + +TileComponent + + + + + +Node2 + + +Component + + + + + +Node2->Node1 + + + + + + + + +Node4 + + +TransformComponent + + + + + +Node2->Node4 + + + + + + + + +Node6 + + +SpriteComponent + + + + + +Node2->Node6 + + + + + + + + +Node3 + + +Entity + + + + + +Node3->Node2 + + + + + + entity + + + +Node4->Node1 + + + + + + transform + + + +Node5 + + +Vector2D + + + + + +Node5->Node4 + + + + + + direction +position + + + +Node6->Node1 + + + + + + sprite + + + +Node7 + + +std::map< AnimationType, + std::unique_ptr< Animation > > + + + + + +Node7->Node6 + + + + + + animations + + + +Node8 + + +std::unique_ptr< Animation > + + + + + +Node8->Node7 + + + + + + elements + + + +Node9 + + +Animation + + + + + +Node9->Node8 + + + + + + ptr + + + +Node10 + + +std::unique_ptr< T > + + + + + +Node10->Node8 + + + + + + < Animation > + + + +Node11 + + +T + + + + + +Node11->Node10 + + + + + + ptr + + + +Node12 + + +std::map< K, T > + + + + + +Node11->Node12 + + + + + + elements + + + +Node12->Node7 + + + + + + < AnimationType, std +::unique_ptr< Animation > > + + + +Node15 + + +std::map< int, std +::string > + + + + + +Node12->Node15 + + + + + + < int, std::string > + + + +Node18 + + +std::map< PowerupType, + std::string > + + + + + +Node12->Node18 + + + + + + < PowerupType, std +::string > + + + +Node13 + + +K + + + + + +Node13->Node12 + + + + + + keys + + + +Node14 + + +TextureDict + + + + + +Node14->Node1 + + + + + + textureDict + + + +Node15->Node14 + + + + + + tileDictionary + + + +Node16 + + +std::string + + + + + +Node16->Node15 + + + + + + elements + + + +Node16->Node18 + + + + + + elements + + + +Node17 + + +std::basic_string< + Char > + + + + + +Node17->Node16 + + + + + + + + +Node18->Node14 + + + + + + powerupDictionary + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/classTileComponent__coll__graph_org.svg b/classTileComponent__coll__graph_org.svg new file mode 100644 index 0000000..2b6e073 --- /dev/null +++ b/classTileComponent__coll__graph_org.svg @@ -0,0 +1,407 @@ + + + + + + +TileComponent + + +Node1 + + +TileComponent + + + + + +Node2 + + +Component + + + + + +Node2->Node1 + + + + + + + + +Node4 + + +TransformComponent + + + + + +Node2->Node4 + + + + + + + + +Node6 + + +SpriteComponent + + + + + +Node2->Node6 + + + + + + + + +Node3 + + +Entity + + + + + +Node3->Node2 + + + + + + entity + + + +Node4->Node1 + + + + + + transform + + + +Node5 + + +Vector2D + + + + + +Node5->Node4 + + + + + + direction +position + + + +Node6->Node1 + + + + + + sprite + + + +Node7 + + +std::map< AnimationType, + std::unique_ptr< Animation > > + + + + + +Node7->Node6 + + + + + + animations + + + +Node8 + + +std::unique_ptr< Animation > + + + + + +Node8->Node7 + + + + + + elements + + + +Node9 + + +Animation + + + + + +Node9->Node8 + + + + + + ptr + + + +Node10 + + +std::unique_ptr< T > + + + + + +Node10->Node8 + + + + + + < Animation > + + + +Node11 + + +T + + + + + +Node11->Node10 + + + + + + ptr + + + +Node12 + + +std::map< K, T > + + + + + +Node11->Node12 + + + + + + elements + + + +Node12->Node7 + + + + + + < AnimationType, std +::unique_ptr< Animation > > + + + +Node15 + + +std::map< int, std +::string > + + + + + +Node12->Node15 + + + + + + < int, std::string > + + + +Node18 + + +std::map< PowerupType, + std::string > + + + + + +Node12->Node18 + + + + + + < PowerupType, std +::string > + + + +Node13 + + +K + + + + + +Node13->Node12 + + + + + + keys + + + +Node14 + + +TextureDict + + + + + +Node14->Node1 + + + + + + textureDict + + + +Node15->Node14 + + + + + + tileDictionary + + + +Node16 + + +std::string + + + + + +Node16->Node15 + + + + + + elements + + + +Node16->Node18 + + + + + + elements + + + +Node17 + + +std::basic_string< + Char > + + + + + +Node17->Node16 + + + + + + + + +Node18->Node14 + + + + + + powerupDictionary + + + diff --git a/classTileComponent__inherit__graph.map b/classTileComponent__inherit__graph.map new file mode 100644 index 0000000..0a77dbc --- /dev/null +++ b/classTileComponent__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/classTileComponent__inherit__graph.md5 b/classTileComponent__inherit__graph.md5 new file mode 100644 index 0000000..0e023ec --- /dev/null +++ b/classTileComponent__inherit__graph.md5 @@ -0,0 +1 @@ +fe1a9828bfd716ec8cf8750057d8a370 \ No newline at end of file diff --git a/classTileComponent__inherit__graph.svg b/classTileComponent__inherit__graph.svg new file mode 100644 index 0000000..db9c65c --- /dev/null +++ b/classTileComponent__inherit__graph.svg @@ -0,0 +1,64 @@ + + + + + + + + + + + +TileComponent + + +Node1 + + +TileComponent + + + + + +Node2 + + +Component + + + + + +Node2->Node1 + + + + + + + + + + + + + diff --git a/classTileComponent__inherit__graph_org.svg b/classTileComponent__inherit__graph_org.svg new file mode 100644 index 0000000..f76ddce --- /dev/null +++ b/classTileComponent__inherit__graph_org.svg @@ -0,0 +1,39 @@ + + + + + + +TileComponent + + +Node1 + + +TileComponent + + + + + +Node2 + + +Component + + + + + +Node2->Node1 + + + + + + + + diff --git a/classTransformComponent-members.html b/classTransformComponent-members.html new file mode 100644 index 0000000..d4de8f2 --- /dev/null +++ b/classTransformComponent-members.html @@ -0,0 +1,149 @@ + + + + + + + + + SDL Minigame: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TransformComponent Member List
+
+
+ +

This is the complete list of members for TransformComponent, including all inherited members.

+ + + + + + + + + + + + + + + + + + +
direction (defined in TransformComponent)TransformComponent
draw() (defined in Component)Componentinlinevirtual
entity (defined in Component)Component
height (defined in TransformComponent)TransformComponent
init() override (defined in TransformComponent)TransformComponentvirtual
modifySpeed(int8_t modifier) (defined in TransformComponent)TransformComponent
position (defined in TransformComponent)TransformComponent
scale (defined in TransformComponent)TransformComponent
speed (defined in TransformComponent)TransformComponent
TransformComponent() (defined in TransformComponent)TransformComponent
TransformComponent(int scale) (defined in TransformComponent)TransformComponentexplicit
TransformComponent(float x, float y) (defined in TransformComponent)TransformComponent
TransformComponent(float x, float y, int scale) (defined in TransformComponent)TransformComponent
TransformComponent(float x, float y, int w, int h, int scale) (defined in TransformComponent)TransformComponent
update() overrideTransformComponentvirtual
width (defined in TransformComponent)TransformComponent
~Component()=default (defined in Component)Componentvirtual
+
+ + + + diff --git a/classTransformComponent.html b/classTransformComponent.html new file mode 100644 index 0000000..d0cb138 --- /dev/null +++ b/classTransformComponent.html @@ -0,0 +1,256 @@ + + + + + + + + + SDL Minigame: TransformComponent Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TransformComponent Class Reference
+
+
+
+Inheritance diagram for TransformComponent:
+
+
+
[legend]
+
+Collaboration diagram for TransformComponent:
+
+
+
[legend]
+ + + + + + + + + + + + + + + + + + + +

+Public Member Functions

TransformComponent (int scale)
 
TransformComponent (float x, float y)
 
TransformComponent (float x, float y, int scale)
 
TransformComponent (float x, float y, int w, int h, int scale)
 
void init () override
 
void update () override
 
+void modifySpeed (int8_t modifier)
 
- Public Member Functions inherited from Component
+virtual void draw ()
 
+ + + + + + + + + + + + + + + + +

+Public Attributes

+Vector2D position
 
+Vector2D direction
 
+int height = 32
 
+int width = 32
 
+int scale = 1
 
+int speed = 3
 
- Public Attributes inherited from Component
+Entityentity
 
+

Member Function Documentation

+ +

◆ init()

+ +
+
+ + + + + +
+ + + + + + + +
void TransformComponent::init ()
+
+overridevirtual
+
+ +

Reimplemented from Component.

+ +
+
+ +

◆ update()

+ +
+
+ + + + + +
+ + + + + + + +
void TransformComponent::update ()
+
+overridevirtual
+
+

TODO: document usage of collision handler

+ +

Reimplemented from Component.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classTransformComponent.js b/classTransformComponent.js new file mode 100644 index 0000000..3c58d61 --- /dev/null +++ b/classTransformComponent.js @@ -0,0 +1,4 @@ +var classTransformComponent = +[ + [ "update", "classTransformComponent.html#a2a5fefaf80674dbd9854e7d0386a64e7", null ] +]; \ No newline at end of file diff --git a/classTransformComponent__coll__graph.map b/classTransformComponent__coll__graph.map new file mode 100644 index 0000000..f9d8006 --- /dev/null +++ b/classTransformComponent__coll__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/classTransformComponent__coll__graph.md5 b/classTransformComponent__coll__graph.md5 new file mode 100644 index 0000000..64b3f86 --- /dev/null +++ b/classTransformComponent__coll__graph.md5 @@ -0,0 +1 @@ +9a668e8582caa3a4194741a4c074d606 \ No newline at end of file diff --git a/classTransformComponent__coll__graph.svg b/classTransformComponent__coll__graph.svg new file mode 100644 index 0000000..a7997f1 --- /dev/null +++ b/classTransformComponent__coll__graph.svg @@ -0,0 +1,103 @@ + + + + + + + + + + + +TransformComponent + + +Node1 + + +TransformComponent + + + + + +Node2 + + +Component + + + + + +Node2->Node1 + + + + + + + + +Node3 + + +Entity + + + + + +Node3->Node2 + + + + + + entity + + + +Node4 + + +Vector2D + + + + + +Node4->Node1 + + + + + + direction +position + + + + + + + + diff --git a/classTransformComponent__coll__graph_org.svg b/classTransformComponent__coll__graph_org.svg new file mode 100644 index 0000000..343749a --- /dev/null +++ b/classTransformComponent__coll__graph_org.svg @@ -0,0 +1,78 @@ + + + + + + +TransformComponent + + +Node1 + + +TransformComponent + + + + + +Node2 + + +Component + + + + + +Node2->Node1 + + + + + + + + +Node3 + + +Entity + + + + + +Node3->Node2 + + + + + + entity + + + +Node4 + + +Vector2D + + + + + +Node4->Node1 + + + + + + direction +position + + + diff --git a/classTransformComponent__inherit__graph.map b/classTransformComponent__inherit__graph.map new file mode 100644 index 0000000..f14ad4d --- /dev/null +++ b/classTransformComponent__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/classTransformComponent__inherit__graph.md5 b/classTransformComponent__inherit__graph.md5 new file mode 100644 index 0000000..bd49fac --- /dev/null +++ b/classTransformComponent__inherit__graph.md5 @@ -0,0 +1 @@ +785e1f1051837a262943ea6c8dcb78fb \ No newline at end of file diff --git a/classTransformComponent__inherit__graph.svg b/classTransformComponent__inherit__graph.svg new file mode 100644 index 0000000..f264f76 --- /dev/null +++ b/classTransformComponent__inherit__graph.svg @@ -0,0 +1,64 @@ + + + + + + + + + + + +TransformComponent + + +Node1 + + +TransformComponent + + + + + +Node2 + + +Component + + + + + +Node2->Node1 + + + + + + + + + + + + + diff --git a/classTransformComponent__inherit__graph_org.svg b/classTransformComponent__inherit__graph_org.svg new file mode 100644 index 0000000..19bcd2d --- /dev/null +++ b/classTransformComponent__inherit__graph_org.svg @@ -0,0 +1,39 @@ + + + + + + +TransformComponent + + +Node1 + + +TransformComponent + + + + + +Node2 + + +Component + + + + + +Node2->Node1 + + + + + + + + diff --git a/classVector2D-members.html b/classVector2D-members.html new file mode 100644 index 0000000..68dd097 --- /dev/null +++ b/classVector2D-members.html @@ -0,0 +1,143 @@ + + + + + + + + + SDL Minigame: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Vector2D Member List
+
+
+ +

This is the complete list of members for Vector2D, including all inherited members.

+ + + + + + + + + + + + +
operator* (defined in Vector2D)Vector2Dfriend
operator*(const int &i) (defined in Vector2D)Vector2D
operator+ (defined in Vector2D)Vector2Dfriend
operator+= (defined in Vector2D)Vector2Dfriend
operator- (defined in Vector2D)Vector2Dfriend
operator/ (defined in Vector2D)Vector2Dfriend
Vector2D() (defined in Vector2D)Vector2D
Vector2D(float x, float y) (defined in Vector2D)Vector2D
x (defined in Vector2D)Vector2D
y (defined in Vector2D)Vector2D
zero() (defined in Vector2D)Vector2D
+
+ + + + diff --git a/classVector2D.html b/classVector2D.html new file mode 100644 index 0000000..a4d7ed4 --- /dev/null +++ b/classVector2D.html @@ -0,0 +1,179 @@ + + + + + + + + + SDL Minigame: Vector2D Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Vector2D Class Reference
+
+
+ + + + + + + + +

+Public Member Functions

Vector2D (float x, float y)
 
+Vector2Doperator* (const int &i)
 
+Vector2Dzero ()
 
+ + + + + +

+Public Attributes

+float x
 
+float y
 
+ + + + + + + + + + + +

+Friends

+Vector2Doperator+ (Vector2D &vector1, const Vector2D &vector2)
 
+Vector2Doperator- (Vector2D &vector1, const Vector2D &vector2)
 
+Vector2Doperator* (Vector2D &vector1, const Vector2D &vector2)
 
+Vector2Doperator/ (Vector2D &vector1, const Vector2D &vector2)
 
+Vector2Doperator+= (Vector2D &vector1, const Vector2D &vector2)
 
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classes.html b/classes.html new file mode 100644 index 0000000..12d8f78 --- /dev/null +++ b/classes.html @@ -0,0 +1,165 @@ + + + + + + + + + SDL Minigame: Class Index + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class Index
+
+ +
+ + + + diff --git a/clipboard.js b/clipboard.js new file mode 100644 index 0000000..42c1fb0 --- /dev/null +++ b/clipboard.js @@ -0,0 +1,61 @@ +/** + +The code below is based on the Doxygen Awesome project, see +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2021 - 2022 jothepro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +*/ + +let clipboard_title = "Copy to clipboard" +let clipboard_icon = `` +let clipboard_successIcon = `` +let clipboard_successDuration = 1000 + +$(function() { + if(navigator.clipboard) { + const fragments = document.getElementsByClassName("fragment") + for(const fragment of fragments) { + const clipboard_div = document.createElement("div") + clipboard_div.classList.add("clipboard") + clipboard_div.innerHTML = clipboard_icon + clipboard_div.title = clipboard_title + $(clipboard_div).click(function() { + const content = this.parentNode.cloneNode(true) + // filter out line number and folded fragments from file listings + content.querySelectorAll(".lineno, .ttc, .foldclosed").forEach((node) => { node.remove() }) + let text = content.textContent + // remove trailing newlines and trailing spaces from empty lines + text = text.replace(/^\s*\n/gm,'\n').replace(/\n*$/,'') + navigator.clipboard.writeText(text); + this.classList.add("success") + this.innerHTML = clipboard_successIcon + window.setTimeout(() => { // switch back to normal icon after timeout + this.classList.remove("success") + this.innerHTML = clipboard_icon + }, clipboard_successDuration); + }) + fragment.insertBefore(clipboard_div, fragment.firstChild) + } + } +}) diff --git a/closed.png b/closed.png new file mode 100644 index 0000000..98cc2c9 Binary files /dev/null and b/closed.png differ diff --git a/cookie.js b/cookie.js new file mode 100644 index 0000000..53ad21d --- /dev/null +++ b/cookie.js @@ -0,0 +1,58 @@ +/*! + Cookie helper functions + Copyright (c) 2023 Dimitri van Heesch + Released under MIT license. +*/ +let Cookie = { + cookie_namespace: 'doxygen_', + + readSetting(cookie,defVal) { + if (window.chrome) { + const val = localStorage.getItem(this.cookie_namespace+cookie) || + sessionStorage.getItem(this.cookie_namespace+cookie); + if (val) return val; + } else { + let myCookie = this.cookie_namespace+cookie+"="; + if (document.cookie) { + const index = document.cookie.indexOf(myCookie); + if (index != -1) { + const valStart = index + myCookie.length; + let valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + return document.cookie.substring(valStart, valEnd); + } + } + } + return defVal; + }, + + writeSetting(cookie,val,days=10*365) { // default days='forever', 0=session cookie, -1=delete + if (window.chrome) { + if (days==0) { + sessionStorage.setItem(this.cookie_namespace+cookie,val); + } else { + localStorage.setItem(this.cookie_namespace+cookie,val); + } + } else { + let date = new Date(); + date.setTime(date.getTime()+(days*24*60*60*1000)); + const expiration = days!=0 ? "expires="+date.toGMTString()+";" : ""; + document.cookie = this.cookie_namespace + cookie + "=" + + val + "; SameSite=Lax;" + expiration + "path=/"; + } + }, + + eraseSetting(cookie) { + if (window.chrome) { + if (localStorage.getItem(this.cookie_namespace+cookie)) { + localStorage.removeItem(this.cookie_namespace+cookie); + } else if (sessionStorage.getItem(this.cookie_namespace+cookie)) { + sessionStorage.removeItem(this.cookie_namespace+cookie); + } + } else { + this.writeSetting(cookie,'',-1); + } + }, +} diff --git a/custom.css b/custom.css new file mode 100644 index 0000000..720b3bd --- /dev/null +++ b/custom.css @@ -0,0 +1,54 @@ +html { + /* primary theme color. This will affect the entire websites color scheme: links, arrows, labels, ... */ + --primary-color: #bd93f9; + --primary-dark-color: #9270e4; + --primary-light-color: #9270e4; + + /* page base colors */ + --page-background-color: #ffffff; + --page-foreground-color: #2f4153; + --page-secondary-foreground-color: #6f7e8e; + + /* color for all separators on the website: hr, borders, ... */ + --separator-color: #bd93f965; + + /* border radius for all rounded components. Will affect many components, like dropdowns, memitems, codeblocks, ... */ + --border-radius-large: 22px; + --border-radius-small: 9px; + --border-radius-medium: 14px; + + /* default spacings. Most components reference these values for spacing, to provide uniform spacing on the page. */ + --spacing-small: 8px; + --spacing-medium: 14px; + --spacing-large: 19px; + + --top-height: 125px; + + ... +} + +html.dark-mode { + color-scheme: dark; + + --primary-color: #bd93f9; + --primary-dark-color: #9270e4; + --primary-light-color: #9270e4; + --primary-lighter-color: #191e21; + --primary-lightest-color: #191a1c; + + --page-background-color: #21222c; + --page-foreground-color: #d2dbde; + --page-secondary-foreground-color: #859399; + --separator-color: #3a3246; + --side-nav-background: #282a36; + --side-nav-foreground: #f8f8f2; + --toc-background: #282A36; + --searchbar-background: var(--page-background-color); + + ... +} + +.paramname em { + font-weight: 600; + color: var(--primary-dark-color); +} \ No newline at end of file diff --git a/deprecated.html b/deprecated.html new file mode 100644 index 0000000..5319fb0 --- /dev/null +++ b/deprecated.html @@ -0,0 +1,134 @@ + + + + + + + + + SDL Minigame: Deprecated List + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Deprecated List
+
+
+
+
Member Entity::ENEMIES
+
All players now grouped as Entity::PLAYERS
+
+
+
+
+ + + + diff --git a/dir_000001_000000.html b/dir_000001_000000.html new file mode 100644 index 0000000..04630c2 --- /dev/null +++ b/dir_000001_000000.html @@ -0,0 +1,127 @@ + + + + + + + + + SDL Minigame: src -> include Relation + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+

src → include Relation

File in srcIncludes file in include
AssetManager.cppCollisionHandler.h
ColliderComponent.cppCollisionHandler.h
CollisionHandler.cppCollisionHandler.h
Game.cppCollisionHandler.h
PowerupComponent.cppCollisionHandler.h
ProjectileComponent.cppCollisionHandler.h
TransformComponent.cppCollisionHandler.h
+
+ + + + diff --git a/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/dir_68267d1309a1af8e8297ef4c3efbcdba.html new file mode 100644 index 0000000..78b5b97 --- /dev/null +++ b/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -0,0 +1,143 @@ + + + + + + + + + SDL Minigame: src Directory Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
src Directory Reference
+
+
+
+Directory dependency graph for src:
+
+
+
+ + + + + + +

+Files

 CollisionHandler.cpp
 
 TransformComponent.cpp
 
+
+
+ + + + diff --git a/dir_68267d1309a1af8e8297ef4c3efbcdba.js b/dir_68267d1309a1af8e8297ef4c3efbcdba.js new file mode 100644 index 0000000..b311965 --- /dev/null +++ b/dir_68267d1309a1af8e8297ef4c3efbcdba.js @@ -0,0 +1,5 @@ +var dir_68267d1309a1af8e8297ef4c3efbcdba = +[ + [ "CollisionHandler.cpp", "CollisionHandler_8cpp.html", null ], + [ "TransformComponent.cpp", "TransformComponent_8cpp.html", null ] +]; \ No newline at end of file diff --git a/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.map b/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.map new file mode 100644 index 0000000..a9c4029 --- /dev/null +++ b/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.md5 b/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.md5 new file mode 100644 index 0000000..a175941 --- /dev/null +++ b/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.md5 @@ -0,0 +1 @@ +c72099d3be41659aa6dba3a9d06085f5 \ No newline at end of file diff --git a/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.svg b/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.svg new file mode 100644 index 0000000..1f702e0 --- /dev/null +++ b/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.svg @@ -0,0 +1,68 @@ + + + + + + + + + + + +src + + +dir_68267d1309a1af8e8297ef4c3efbcdba + + +src + + + + + +dir_d44c64559bbebec7f509842c48db8b23 + + +include + + + + + +dir_68267d1309a1af8e8297ef4c3efbcdba->dir_d44c64559bbebec7f509842c48db8b23 + + + + + + +7 + + + + + + + + + + diff --git a/dir_68267d1309a1af8e8297ef4c3efbcdba_dep_org.svg b/dir_68267d1309a1af8e8297ef4c3efbcdba_dep_org.svg new file mode 100644 index 0000000..44180de --- /dev/null +++ b/dir_68267d1309a1af8e8297ef4c3efbcdba_dep_org.svg @@ -0,0 +1,43 @@ + + + + + + +src + + +dir_68267d1309a1af8e8297ef4c3efbcdba + + +src + + + + + +dir_d44c64559bbebec7f509842c48db8b23 + + +include + + + + + +dir_68267d1309a1af8e8297ef4c3efbcdba->dir_d44c64559bbebec7f509842c48db8b23 + + + + + + +7 + + + + + diff --git a/dir_d44c64559bbebec7f509842c48db8b23.html b/dir_d44c64559bbebec7f509842c48db8b23.html new file mode 100644 index 0000000..cb68fee --- /dev/null +++ b/dir_d44c64559bbebec7f509842c48db8b23.html @@ -0,0 +1,192 @@ + + + + + + + + + SDL Minigame: include Directory Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
include Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

 AnimationHandler.h
 
 AssetManager.h
 
 ColliderComponent.h
 
 CollisionHandler.h
 
 Component.h
 
 Components.h
 
 Constants.h
 
 Defines.h
 
 Direction.h
 
 ECS.h
 
 Entity.h
 
 Game.h
 
 GameObject.h
 
 HealthComponent.h
 
 KeyboardController.h
 
 Manager.h
 
 Map.h
 
 PlayerComponent.h
 
 PopupWindow.h
 
 PowerupComponent.h
 
 ProjectileComponent.h
 
 SoundManager.h
 
 SpriteComponent.h
 
 StatEffectsComponent.h
 
 TextureDict.h
 
 TextureManager.h
 
 TileComponent.h
 
 TransformComponent.h
 
 Vector2D.h
 
+
+
+ + + + diff --git a/dir_d44c64559bbebec7f509842c48db8b23.js b/dir_d44c64559bbebec7f509842c48db8b23.js new file mode 100644 index 0000000..fe61b76 --- /dev/null +++ b/dir_d44c64559bbebec7f509842c48db8b23.js @@ -0,0 +1,32 @@ +var dir_d44c64559bbebec7f509842c48db8b23 = +[ + [ "AnimationHandler.h", "AnimationHandler_8h_source.html", null ], + [ "AssetManager.h", "AssetManager_8h_source.html", null ], + [ "ColliderComponent.h", "ColliderComponent_8h_source.html", null ], + [ "CollisionHandler.h", "CollisionHandler_8h.html", "CollisionHandler_8h" ], + [ "Component.h", "Component_8h_source.html", null ], + [ "Components.h", "Components_8h_source.html", null ], + [ "Constants.h", "Constants_8h_source.html", null ], + [ "Defines.h", "Defines_8h_source.html", null ], + [ "Direction.h", "Direction_8h_source.html", null ], + [ "ECS.h", "ECS_8h_source.html", null ], + [ "Entity.h", "Entity_8h_source.html", null ], + [ "Game.h", "Game_8h_source.html", null ], + [ "GameObject.h", "GameObject_8h_source.html", null ], + [ "HealthComponent.h", "HealthComponent_8h_source.html", null ], + [ "KeyboardController.h", "KeyboardController_8h_source.html", null ], + [ "Manager.h", "Manager_8h_source.html", null ], + [ "Map.h", "Map_8h_source.html", null ], + [ "PlayerComponent.h", "PlayerComponent_8h_source.html", null ], + [ "PopupWindow.h", "PopupWindow_8h_source.html", null ], + [ "PowerupComponent.h", "PowerupComponent_8h_source.html", null ], + [ "ProjectileComponent.h", "ProjectileComponent_8h_source.html", null ], + [ "SoundManager.h", "SoundManager_8h_source.html", null ], + [ "SpriteComponent.h", "SpriteComponent_8h_source.html", null ], + [ "StatEffectsComponent.h", "StatEffectsComponent_8h_source.html", null ], + [ "TextureDict.h", "TextureDict_8h_source.html", null ], + [ "TextureManager.h", "TextureManager_8h_source.html", null ], + [ "TileComponent.h", "TileComponent_8h_source.html", null ], + [ "TransformComponent.h", "TransformComponent_8h_source.html", null ], + [ "Vector2D.h", "Vector2D_8h_source.html", null ] +]; \ No newline at end of file diff --git a/doc.svg b/doc.svg new file mode 100644 index 0000000..0b928a5 --- /dev/null +++ b/doc.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/docd.svg b/docd.svg new file mode 100644 index 0000000..ac18b27 --- /dev/null +++ b/docd.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doxygen-awesome-darkmode-toggle.js b/doxygen-awesome-darkmode-toggle.js new file mode 100644 index 0000000..40fe2d3 --- /dev/null +++ b/doxygen-awesome-darkmode-toggle.js @@ -0,0 +1,157 @@ +/** + +Doxygen Awesome +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2021 - 2023 jothepro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +*/ + +class DoxygenAwesomeDarkModeToggle extends HTMLElement { + // SVG icons from https://fonts.google.com/icons + // Licensed under the Apache 2.0 license: + // https://www.apache.org/licenses/LICENSE-2.0.html + static lightModeIcon = `` + static darkModeIcon = `` + static title = "Toggle Light/Dark Mode" + + static prefersLightModeInDarkModeKey = "prefers-light-mode-in-dark-mode" + static prefersDarkModeInLightModeKey = "prefers-dark-mode-in-light-mode" + + static _staticConstructor = function() { + DoxygenAwesomeDarkModeToggle.enableDarkMode(DoxygenAwesomeDarkModeToggle.userPreference) + // Update the color scheme when the browsers preference changes + // without user interaction on the website. + window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', event => { + DoxygenAwesomeDarkModeToggle.onSystemPreferenceChanged() + }) + // Update the color scheme when the tab is made visible again. + // It is possible that the appearance was changed in another tab + // while this tab was in the background. + document.addEventListener("visibilitychange", visibilityState => { + if (document.visibilityState === 'visible') { + DoxygenAwesomeDarkModeToggle.onSystemPreferenceChanged() + } + }); + }() + + static init() { + $(function() { + $(document).ready(function() { + const toggleButton = document.createElement('doxygen-awesome-dark-mode-toggle') + toggleButton.title = DoxygenAwesomeDarkModeToggle.title + toggleButton.updateIcon() + + window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', event => { + toggleButton.updateIcon() + }) + document.addEventListener("visibilitychange", visibilityState => { + if (document.visibilityState === 'visible') { + toggleButton.updateIcon() + } + }); + + $(document).ready(function(){ + document.getElementById("MSearchBox").parentNode.appendChild(toggleButton) + }) + $(window).resize(function(){ + document.getElementById("MSearchBox").parentNode.appendChild(toggleButton) + }) + }) + }) + } + + constructor() { + super(); + this.onclick=this.toggleDarkMode + } + + /** + * @returns `true` for dark-mode, `false` for light-mode system preference + */ + static get systemPreference() { + return window.matchMedia('(prefers-color-scheme: dark)').matches + } + + /** + * @returns `true` for dark-mode, `false` for light-mode user preference + */ + static get userPreference() { + return (!DoxygenAwesomeDarkModeToggle.systemPreference && localStorage.getItem(DoxygenAwesomeDarkModeToggle.prefersDarkModeInLightModeKey)) || + (DoxygenAwesomeDarkModeToggle.systemPreference && !localStorage.getItem(DoxygenAwesomeDarkModeToggle.prefersLightModeInDarkModeKey)) + } + + static set userPreference(userPreference) { + DoxygenAwesomeDarkModeToggle.darkModeEnabled = userPreference + if(!userPreference) { + if(DoxygenAwesomeDarkModeToggle.systemPreference) { + localStorage.setItem(DoxygenAwesomeDarkModeToggle.prefersLightModeInDarkModeKey, true) + } else { + localStorage.removeItem(DoxygenAwesomeDarkModeToggle.prefersDarkModeInLightModeKey) + } + } else { + if(!DoxygenAwesomeDarkModeToggle.systemPreference) { + localStorage.setItem(DoxygenAwesomeDarkModeToggle.prefersDarkModeInLightModeKey, true) + } else { + localStorage.removeItem(DoxygenAwesomeDarkModeToggle.prefersLightModeInDarkModeKey) + } + } + DoxygenAwesomeDarkModeToggle.onUserPreferenceChanged() + } + + static enableDarkMode(enable) { + if(enable) { + DoxygenAwesomeDarkModeToggle.darkModeEnabled = true + document.documentElement.classList.add("dark-mode") + document.documentElement.classList.remove("light-mode") + } else { + DoxygenAwesomeDarkModeToggle.darkModeEnabled = false + document.documentElement.classList.remove("dark-mode") + document.documentElement.classList.add("light-mode") + } + } + + static onSystemPreferenceChanged() { + DoxygenAwesomeDarkModeToggle.darkModeEnabled = DoxygenAwesomeDarkModeToggle.userPreference + DoxygenAwesomeDarkModeToggle.enableDarkMode(DoxygenAwesomeDarkModeToggle.darkModeEnabled) + } + + static onUserPreferenceChanged() { + DoxygenAwesomeDarkModeToggle.enableDarkMode(DoxygenAwesomeDarkModeToggle.darkModeEnabled) + } + + toggleDarkMode() { + DoxygenAwesomeDarkModeToggle.userPreference = !DoxygenAwesomeDarkModeToggle.userPreference + this.updateIcon() + } + + updateIcon() { + if(DoxygenAwesomeDarkModeToggle.darkModeEnabled) { + this.innerHTML = DoxygenAwesomeDarkModeToggle.darkModeIcon + } else { + this.innerHTML = DoxygenAwesomeDarkModeToggle.lightModeIcon + } + } +} + +customElements.define("doxygen-awesome-dark-mode-toggle", DoxygenAwesomeDarkModeToggle); diff --git a/doxygen-awesome-fragment-copy-button.js b/doxygen-awesome-fragment-copy-button.js new file mode 100644 index 0000000..86c16fd --- /dev/null +++ b/doxygen-awesome-fragment-copy-button.js @@ -0,0 +1,85 @@ +/** + +Doxygen Awesome +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2022 - 2023 jothepro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +*/ + +class DoxygenAwesomeFragmentCopyButton extends HTMLElement { + constructor() { + super(); + this.onclick=this.copyContent + } + static title = "Copy to clipboard" + static copyIcon = `` + static successIcon = `` + static successDuration = 980 + static init() { + $(function() { + $(document).ready(function() { + if(navigator.clipboard) { + const fragments = document.getElementsByClassName("fragment") + for(const fragment of fragments) { + const fragmentWrapper = document.createElement("div") + fragmentWrapper.className = "doxygen-awesome-fragment-wrapper" + const fragmentCopyButton = document.createElement("doxygen-awesome-fragment-copy-button") + fragmentCopyButton.innerHTML = DoxygenAwesomeFragmentCopyButton.copyIcon + fragmentCopyButton.title = DoxygenAwesomeFragmentCopyButton.title + + fragment.parentNode.replaceChild(fragmentWrapper, fragment) + fragmentWrapper.appendChild(fragment) + fragmentWrapper.appendChild(fragmentCopyButton) + + } + } + }) + }) + } + + + copyContent() { + const content = this.previousSibling.cloneNode(true) + // filter out line number from file listings + content.querySelectorAll(".lineno, .ttc").forEach((node) => { + node.remove() + }) + let textContent = content.textContent + // remove trailing newlines that appear in file listings + let numberOfTrailingNewlines = 0 + while(textContent.charAt(textContent.length - (numberOfTrailingNewlines + 1)) == '\n') { + numberOfTrailingNewlines++; + } + textContent = textContent.substring(0, textContent.length - numberOfTrailingNewlines) + navigator.clipboard.writeText(textContent); + this.classList.add("success") + this.innerHTML = DoxygenAwesomeFragmentCopyButton.successIcon + window.setTimeout(() => { + this.classList.remove("success") + this.innerHTML = DoxygenAwesomeFragmentCopyButton.copyIcon + }, DoxygenAwesomeFragmentCopyButton.successDuration); + } +} + +customElements.define("doxygen-awesome-fragment-copy-button", DoxygenAwesomeFragmentCopyButton) diff --git a/doxygen-awesome-interactive-toc.js b/doxygen-awesome-interactive-toc.js new file mode 100644 index 0000000..20a9669 --- /dev/null +++ b/doxygen-awesome-interactive-toc.js @@ -0,0 +1,81 @@ +/** + +Doxygen Awesome +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2022 - 2023 jothepro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +*/ + +class DoxygenAwesomeInteractiveToc { + static topOffset = 38 + static hideMobileMenu = true + static headers = [] + + static init() { + window.addEventListener("load", () => { + let toc = document.querySelector(".contents > .toc") + if(toc) { + toc.classList.add("interactive") + if(!DoxygenAwesomeInteractiveToc.hideMobileMenu) { + toc.classList.add("open") + } + document.querySelector(".contents > .toc > h3")?.addEventListener("click", () => { + if(toc.classList.contains("open")) { + toc.classList.remove("open") + } else { + toc.classList.add("open") + } + }) + + document.querySelectorAll(".contents > .toc > ul a").forEach((node) => { + let id = node.getAttribute("href").substring(1) + DoxygenAwesomeInteractiveToc.headers.push({ + node: node, + headerNode: document.getElementById(id) + }) + + document.getElementById("doc-content")?.addEventListener("scroll", () => { + DoxygenAwesomeInteractiveToc.update() + }) + }) + DoxygenAwesomeInteractiveToc.update() + } + }) + } + + static update() { + let active = DoxygenAwesomeInteractiveToc.headers[0]?.node + DoxygenAwesomeInteractiveToc.headers.forEach((header) => { + let position = header.headerNode.getBoundingClientRect().top + header.node.classList.remove("active") + header.node.classList.remove("aboveActive") + if(position < DoxygenAwesomeInteractiveToc.topOffset) { + active = header.node + active?.classList.add("aboveActive") + } + }) + active?.classList.add("active") + active?.classList.remove("aboveActive") + } +} \ No newline at end of file diff --git a/doxygen-awesome-paragraph-link.js b/doxygen-awesome-paragraph-link.js new file mode 100644 index 0000000..e53d132 --- /dev/null +++ b/doxygen-awesome-paragraph-link.js @@ -0,0 +1,51 @@ +/** + +Doxygen Awesome +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2022 - 2023 jothepro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +*/ + +class DoxygenAwesomeParagraphLink { + // Icon from https://fonts.google.com/icons + // Licensed under the Apache 2.0 license: + // https://www.apache.org/licenses/LICENSE-2.0.html + static icon = `` + static title = "Permanent Link" + static init() { + $(function() { + $(document).ready(function() { + document.querySelectorAll(".contents a.anchor[id], .contents .groupheader > a[id]").forEach((node) => { + let anchorlink = document.createElement("a") + anchorlink.setAttribute("href", `#${node.getAttribute("id")}`) + anchorlink.setAttribute("title", DoxygenAwesomeParagraphLink.title) + anchorlink.classList.add("anchorlink") + node.classList.add("anchor") + anchorlink.innerHTML = DoxygenAwesomeParagraphLink.icon + node.parentElement.appendChild(anchorlink) + }) + }) + }) + } +} diff --git a/doxygen-awesome-sidebar-only-darkmode-toggle.css b/doxygen-awesome-sidebar-only-darkmode-toggle.css new file mode 100644 index 0000000..d207446 --- /dev/null +++ b/doxygen-awesome-sidebar-only-darkmode-toggle.css @@ -0,0 +1,40 @@ + +/** + +Doxygen Awesome +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2021 - 2023 jothepro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +*/ + +@media screen and (min-width: 768px) { + + #MSearchBox { + width: calc(var(--side-nav-fixed-width) - calc(2 * var(--spacing-medium)) - var(--searchbar-height) - 1px); + } + + #MSearchField { + width: calc(var(--side-nav-fixed-width) - calc(2 * var(--spacing-medium)) - 66px - var(--searchbar-height)); + } +} diff --git a/doxygen-awesome-sidebar-only.css b/doxygen-awesome-sidebar-only.css new file mode 100644 index 0000000..853f6d6 --- /dev/null +++ b/doxygen-awesome-sidebar-only.css @@ -0,0 +1,116 @@ +/** + +Doxygen Awesome +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2021 - 2023 jothepro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + */ + +html { + /* side nav width. MUST be = `TREEVIEW_WIDTH`. + * Make sure it is wide enough to contain the page title (logo + title + version) + */ + --side-nav-fixed-width: 335px; + --menu-display: none; + + --top-height: 120px; + --toc-sticky-top: -25px; + --toc-max-height: calc(100vh - 2 * var(--spacing-medium) - 25px); +} + +#projectname { + white-space: nowrap; +} + + +@media screen and (min-width: 768px) { + html { + --searchbar-background: var(--page-background-color); + } + + #side-nav { + min-width: var(--side-nav-fixed-width); + max-width: var(--side-nav-fixed-width); + top: var(--top-height); + overflow: visible; + } + + #nav-tree, #side-nav { + height: calc(100vh - var(--top-height)) !important; + } + + #nav-tree { + padding: 0; + } + + #top { + display: block; + border-bottom: none; + height: var(--top-height); + margin-bottom: calc(0px - var(--top-height)); + max-width: var(--side-nav-fixed-width); + overflow: hidden; + background: var(--side-nav-background); + } + #main-nav { + float: left; + padding-right: 0; + } + + .ui-resizable-handle { + cursor: default; + width: 1px !important; + background: var(--separator-color); + box-shadow: 0 calc(-2 * var(--top-height)) 0 0 var(--separator-color); + } + + #nav-path { + position: fixed; + right: 0; + left: var(--side-nav-fixed-width); + bottom: 0; + width: auto; + } + + #doc-content { + height: calc(100vh - 31px) !important; + padding-bottom: calc(3 * var(--spacing-large)); + padding-top: calc(var(--top-height) - 80px); + box-sizing: border-box; + margin-left: var(--side-nav-fixed-width) !important; + } + + #MSearchBox { + width: calc(var(--side-nav-fixed-width) - calc(2 * var(--spacing-medium))); + } + + #MSearchField { + width: calc(var(--side-nav-fixed-width) - calc(2 * var(--spacing-medium)) - 65px); + } + + #MSearchResultsWindow { + left: var(--spacing-medium) !important; + right: auto; + } +} diff --git a/doxygen-awesome.css b/doxygen-awesome.css new file mode 100644 index 0000000..ac7f060 --- /dev/null +++ b/doxygen-awesome.css @@ -0,0 +1,2669 @@ +/** + +Doxygen Awesome +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2021 - 2023 jothepro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +*/ + +html { + /* primary theme color. This will affect the entire websites color scheme: links, arrows, labels, ... */ + --primary-color: #1779c4; + --primary-dark-color: #335c80; + --primary-light-color: #70b1e9; + + /* page base colors */ + --page-background-color: #ffffff; + --page-foreground-color: #2f4153; + --page-secondary-foreground-color: #6f7e8e; + + /* color for all separators on the website: hr, borders, ... */ + --separator-color: #dedede; + + /* border radius for all rounded components. Will affect many components, like dropdowns, memitems, codeblocks, ... */ + --border-radius-large: 8px; + --border-radius-small: 4px; + --border-radius-medium: 6px; + + /* default spacings. Most components reference these values for spacing, to provide uniform spacing on the page. */ + --spacing-small: 5px; + --spacing-medium: 10px; + --spacing-large: 16px; + + /* default box shadow used for raising an element above the normal content. Used in dropdowns, search result, ... */ + --box-shadow: 0 2px 8px 0 rgba(0,0,0,.075); + + --odd-color: rgba(0,0,0,.028); + + /* font-families. will affect all text on the website + * font-family: the normal font for text, headlines, menus + * font-family-monospace: used for preformatted text in memtitle, code, fragments + */ + --font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif; + --font-family-monospace: ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace; + + /* font sizes */ + --page-font-size: 15.6px; + --navigation-font-size: 14.4px; + --toc-font-size: 13.4px; + --code-font-size: 14px; /* affects code, fragment */ + --title-font-size: 22px; + + /* content text properties. These only affect the page content, not the navigation or any other ui elements */ + --content-line-height: 27px; + /* The content is centered and constraint in it's width. To make the content fill the whole page, set the variable to auto.*/ + --content-maxwidth: 1050px; + --table-line-height: 24px; + --toc-sticky-top: var(--spacing-medium); + --toc-width: 200px; + --toc-max-height: calc(100vh - 2 * var(--spacing-medium) - 85px); + + /* colors for various content boxes: @warning, @note, @deprecated @bug */ + --warning-color: #faf3d8; + --warning-color-dark: #f3a600; + --warning-color-darker: #5f4204; + --note-color: #e4f3ff; + --note-color-dark: #1879C4; + --note-color-darker: #274a5c; + --todo-color: #e4dafd; + --todo-color-dark: #5b2bdd; + --todo-color-darker: #2a0d72; + --deprecated-color: #ecf0f3; + --deprecated-color-dark: #5b6269; + --deprecated-color-darker: #43454a; + --bug-color: #f8d1cc; + --bug-color-dark: #b61825; + --bug-color-darker: #75070f; + --invariant-color: #d8f1e3; + --invariant-color-dark: #44b86f; + --invariant-color-darker: #265532; + + /* blockquote colors */ + --blockquote-background: #f8f9fa; + --blockquote-foreground: #636568; + + /* table colors */ + --tablehead-background: #f1f1f1; + --tablehead-foreground: var(--page-foreground-color); + + /* menu-display: block | none + * Visibility of the top navigation on screens >= 768px. On smaller screen the menu is always visible. + * `GENERATE_TREEVIEW` MUST be enabled! + */ + --menu-display: block; + + --menu-focus-foreground: var(--page-background-color); + --menu-focus-background: var(--primary-color); + --menu-selected-background: rgba(0,0,0,.05); + + + --header-background: var(--page-background-color); + --header-foreground: var(--page-foreground-color); + + /* searchbar colors */ + --searchbar-background: var(--side-nav-background); + --searchbar-foreground: var(--page-foreground-color); + + /* searchbar size + * (`searchbar-width` is only applied on screens >= 768px. + * on smaller screens the searchbar will always fill the entire screen width) */ + --searchbar-height: 33px; + --searchbar-width: 210px; + --searchbar-border-radius: var(--searchbar-height); + + /* code block colors */ + --code-background: #f5f5f5; + --code-foreground: var(--page-foreground-color); + + /* fragment colors */ + --fragment-background: #F8F9FA; + --fragment-foreground: #37474F; + --fragment-keyword: #bb6bb2; + --fragment-keywordtype: #8258b3; + --fragment-keywordflow: #d67c3b; + --fragment-token: #438a59; + --fragment-comment: #969696; + --fragment-link: #5383d6; + --fragment-preprocessor: #46aaa5; + --fragment-linenumber-color: #797979; + --fragment-linenumber-background: #f4f4f5; + --fragment-linenumber-border: #e3e5e7; + --fragment-lineheight: 20px; + + /* sidebar navigation (treeview) colors */ + --side-nav-background: #fbfbfb; + --side-nav-foreground: var(--page-foreground-color); + --side-nav-arrow-opacity: 0; + --side-nav-arrow-hover-opacity: 0.9; + + --toc-background: var(--side-nav-background); + --toc-foreground: var(--side-nav-foreground); + + /* height of an item in any tree / collapsible table */ + --tree-item-height: 30px; + + --memname-font-size: var(--code-font-size); + --memtitle-font-size: 18px; + + --webkit-scrollbar-size: 7px; + --webkit-scrollbar-padding: 4px; + --webkit-scrollbar-color: var(--separator-color); + + --animation-duration: .12s +} + +@media screen and (max-width: 767px) { + html { + --page-font-size: 16px; + --navigation-font-size: 16px; + --toc-font-size: 15px; + --code-font-size: 15px; /* affects code, fragment */ + --title-font-size: 22px; + } +} + +@media (prefers-color-scheme: dark) { + html:not(.light-mode) { + color-scheme: dark; + + --primary-color: #1982d2; + --primary-dark-color: #86a9c4; + --primary-light-color: #4779ac; + + --box-shadow: 0 2px 8px 0 rgba(0,0,0,.35); + + --odd-color: rgba(100,100,100,.06); + + --menu-selected-background: rgba(0,0,0,.4); + + --page-background-color: #1C1D1F; + --page-foreground-color: #d2dbde; + --page-secondary-foreground-color: #859399; + --separator-color: #38393b; + --side-nav-background: #252628; + + --code-background: #2a2c2f; + + --tablehead-background: #2a2c2f; + + --blockquote-background: #222325; + --blockquote-foreground: #7e8c92; + + --warning-color: #3b2e04; + --warning-color-dark: #f1b602; + --warning-color-darker: #ceb670; + --note-color: #163750; + --note-color-dark: #1982D2; + --note-color-darker: #dcf0fa; + --todo-color: #2a2536; + --todo-color-dark: #7661b3; + --todo-color-darker: #ae9ed6; + --deprecated-color: #2e323b; + --deprecated-color-dark: #738396; + --deprecated-color-darker: #abb0bd; + --bug-color: #2e1917; + --bug-color-dark: #ad2617; + --bug-color-darker: #f5b1aa; + --invariant-color: #303a35; + --invariant-color-dark: #76ce96; + --invariant-color-darker: #cceed5; + + --fragment-background: #282c34; + --fragment-foreground: #dbe4eb; + --fragment-keyword: #cc99cd; + --fragment-keywordtype: #ab99cd; + --fragment-keywordflow: #e08000; + --fragment-token: #7ec699; + --fragment-comment: #999999; + --fragment-link: #98c0e3; + --fragment-preprocessor: #65cabe; + --fragment-linenumber-color: #cccccc; + --fragment-linenumber-background: #35393c; + --fragment-linenumber-border: #1f1f1f; + } +} + +/* dark mode variables are defined twice, to support both the dark-mode without and with doxygen-awesome-darkmode-toggle.js */ +html.dark-mode { + color-scheme: dark; + + --primary-color: #1982d2; + --primary-dark-color: #86a9c4; + --primary-light-color: #4779ac; + + --box-shadow: 0 2px 8px 0 rgba(0,0,0,.30); + + --odd-color: rgba(100,100,100,.06); + + --menu-selected-background: rgba(0,0,0,.4); + + --page-background-color: #1C1D1F; + --page-foreground-color: #d2dbde; + --page-secondary-foreground-color: #859399; + --separator-color: #38393b; + --side-nav-background: #252628; + + --code-background: #2a2c2f; + + --tablehead-background: #2a2c2f; + + --blockquote-background: #222325; + --blockquote-foreground: #7e8c92; + + --warning-color: #3b2e04; + --warning-color-dark: #f1b602; + --warning-color-darker: #ceb670; + --note-color: #163750; + --note-color-dark: #1982D2; + --note-color-darker: #dcf0fa; + --todo-color: #2a2536; + --todo-color-dark: #7661b3; + --todo-color-darker: #ae9ed6; + --deprecated-color: #2e323b; + --deprecated-color-dark: #738396; + --deprecated-color-darker: #abb0bd; + --bug-color: #2e1917; + --bug-color-dark: #ad2617; + --bug-color-darker: #f5b1aa; + --invariant-color: #303a35; + --invariant-color-dark: #76ce96; + --invariant-color-darker: #cceed5; + + --fragment-background: #282c34; + --fragment-foreground: #dbe4eb; + --fragment-keyword: #cc99cd; + --fragment-keywordtype: #ab99cd; + --fragment-keywordflow: #e08000; + --fragment-token: #7ec699; + --fragment-comment: #999999; + --fragment-link: #98c0e3; + --fragment-preprocessor: #65cabe; + --fragment-linenumber-color: #cccccc; + --fragment-linenumber-background: #35393c; + --fragment-linenumber-border: #1f1f1f; +} + +body { + color: var(--page-foreground-color); + background-color: var(--page-background-color); + font-size: var(--page-font-size); +} + +body, table, div, p, dl, #nav-tree .label, .title, +.sm-dox a, .sm-dox a:hover, .sm-dox a:focus, #projectname, +.SelectItem, #MSearchField, .navpath li.navelem a, +.navpath li.navelem a:hover, p.reference, p.definition { + font-family: var(--font-family); +} + +h1, h2, h3, h4, h5 { + margin-top: 1em; + font-weight: 600; + line-height: initial; +} + +p, div, table, dl, p.reference, p.definition { + font-size: var(--page-font-size); +} + +p.reference, p.definition { + color: var(--page-secondary-foreground-color); +} + +a:link, a:visited, a:hover, a:focus, a:active { + color: var(--primary-color) !important; + font-weight: 500; +} + +a.anchor { + scroll-margin-top: var(--spacing-large); + display: block; +} + +/* + Title and top navigation + */ + +#top { + background: var(--header-background); + border-bottom: 1px solid var(--separator-color); +} + +@media screen and (min-width: 768px) { + #top { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + align-items: center; + } +} + +#main-nav { + flex-grow: 5; + padding: var(--spacing-small) var(--spacing-medium); +} + +#titlearea { + width: auto; + padding: var(--spacing-medium) var(--spacing-large); + background: none; + color: var(--header-foreground); + border-bottom: none; +} + +@media screen and (max-width: 767px) { + #titlearea { + padding-bottom: var(--spacing-small); + } +} + +#titlearea table tbody tr { + height: auto !important; +} + +#projectname { + font-size: var(--title-font-size); + font-weight: 600; +} + +#projectnumber { + font-family: inherit; + font-size: 60%; +} + +#projectbrief { + font-family: inherit; + font-size: 80%; +} + +#projectlogo { + vertical-align: middle; +} + +#projectlogo img { + max-height: calc(var(--title-font-size) * 2); + margin-right: var(--spacing-small); +} + +.sm-dox, .tabs, .tabs2, .tabs3 { + background: none; + padding: 0; +} + +.tabs, .tabs2, .tabs3 { + border-bottom: 1px solid var(--separator-color); + margin-bottom: -1px; +} + +.main-menu-btn-icon, .main-menu-btn-icon:before, .main-menu-btn-icon:after { + background: var(--page-secondary-foreground-color); +} + +@media screen and (max-width: 767px) { + .sm-dox a span.sub-arrow { + background: var(--code-background); + } + + #main-menu a.has-submenu span.sub-arrow { + color: var(--page-secondary-foreground-color); + border-radius: var(--border-radius-medium); + } + + #main-menu a.has-submenu:hover span.sub-arrow { + color: var(--page-foreground-color); + } +} + +@media screen and (min-width: 768px) { + .sm-dox li, .tablist li { + display: var(--menu-display); + } + + .sm-dox a span.sub-arrow { + border-color: var(--header-foreground) transparent transparent transparent; + } + + .sm-dox a:hover span.sub-arrow { + border-color: var(--menu-focus-foreground) transparent transparent transparent; + } + + .sm-dox ul a span.sub-arrow { + border-color: transparent transparent transparent var(--page-foreground-color); + } + + .sm-dox ul a:hover span.sub-arrow { + border-color: transparent transparent transparent var(--menu-focus-foreground); + } +} + +.sm-dox ul { + background: var(--page-background-color); + box-shadow: var(--box-shadow); + border: 1px solid var(--separator-color); + border-radius: var(--border-radius-medium) !important; + padding: var(--spacing-small); + animation: ease-out 150ms slideInMenu; +} + +@keyframes slideInMenu { + from { + opacity: 0; + transform: translate(0px, -2px); + } + + to { + opacity: 1; + transform: translate(0px, 0px); + } +} + +.sm-dox ul a { + color: var(--page-foreground-color) !important; + background: var(--page-background-color); + font-size: var(--navigation-font-size); +} + +.sm-dox>li>ul:after { + border-bottom-color: var(--page-background-color) !important; +} + +.sm-dox>li>ul:before { + border-bottom-color: var(--separator-color) !important; +} + +.sm-dox ul a:hover, .sm-dox ul a:active, .sm-dox ul a:focus { + font-size: var(--navigation-font-size) !important; + color: var(--menu-focus-foreground) !important; + text-shadow: none; + background-color: var(--menu-focus-background); + border-radius: var(--border-radius-small) !important; +} + +.sm-dox a, .sm-dox a:focus, .tablist li, .tablist li a, .tablist li.current a { + text-shadow: none; + background: transparent; + background-image: none !important; + color: var(--header-foreground) !important; + font-weight: normal; + font-size: var(--navigation-font-size); + border-radius: var(--border-radius-small) !important; +} + +.sm-dox a:focus { + outline: auto; +} + +.sm-dox a:hover, .sm-dox a:active, .tablist li a:hover { + text-shadow: none; + font-weight: normal; + background: var(--menu-focus-background); + color: var(--menu-focus-foreground) !important; + border-radius: var(--border-radius-small) !important; + font-size: var(--navigation-font-size); +} + +.tablist li.current { + border-radius: var(--border-radius-small); + background: var(--menu-selected-background); +} + +.tablist li { + margin: var(--spacing-small) 0 var(--spacing-small) var(--spacing-small); +} + +.tablist a { + padding: 0 var(--spacing-large); +} + + +/* + Search box + */ + +#MSearchBox { + height: var(--searchbar-height); + background: var(--searchbar-background); + border-radius: var(--searchbar-border-radius); + border: 1px solid var(--separator-color); + overflow: hidden; + width: var(--searchbar-width); + position: relative; + box-shadow: none; + display: block; + margin-top: 0; +} + +/* until Doxygen 1.9.4 */ +.left img#MSearchSelect { + left: 0; + user-select: none; + padding-left: 8px; +} + +/* Doxygen 1.9.5 */ +.left span#MSearchSelect { + left: 0; + user-select: none; + margin-left: 8px; + padding: 0; +} + +.left #MSearchSelect[src$=".png"] { + padding-left: 0 +} + +.SelectionMark { + user-select: none; +} + +.tabs .left #MSearchSelect { + padding-left: 0; +} + +.tabs #MSearchBox { + position: absolute; + right: var(--spacing-medium); +} + +@media screen and (max-width: 767px) { + .tabs #MSearchBox { + position: relative; + right: 0; + margin-left: var(--spacing-medium); + margin-top: 0; + } +} + +#MSearchSelectWindow, #MSearchResultsWindow { + z-index: 9999; +} + +#MSearchBox.MSearchBoxActive { + border-color: var(--primary-color); + box-shadow: inset 0 0 0 1px var(--primary-color); +} + +#main-menu > li:last-child { + margin-right: 0; +} + +@media screen and (max-width: 767px) { + #main-menu > li:last-child { + height: 50px; + } +} + +#MSearchField { + font-size: var(--navigation-font-size); + height: calc(var(--searchbar-height) - 2px); + background: transparent; + width: calc(var(--searchbar-width) - 64px); +} + +.MSearchBoxActive #MSearchField { + color: var(--searchbar-foreground); +} + +#MSearchSelect { + top: calc(calc(var(--searchbar-height) / 2) - 11px); +} + +#MSearchBox span.left, #MSearchBox span.right { + background: none; + background-image: none; +} + +#MSearchBox span.right { + padding-top: calc(calc(var(--searchbar-height) / 2) - 12px); + position: absolute; + right: var(--spacing-small); +} + +.tabs #MSearchBox span.right { + top: calc(calc(var(--searchbar-height) / 2) - 12px); +} + +@keyframes slideInSearchResults { + from { + opacity: 0; + transform: translate(0, 15px); + } + + to { + opacity: 1; + transform: translate(0, 20px); + } +} + +#MSearchResultsWindow { + left: auto !important; + right: var(--spacing-medium); + border-radius: var(--border-radius-large); + border: 1px solid var(--separator-color); + transform: translate(0, 20px); + box-shadow: var(--box-shadow); + animation: ease-out 280ms slideInSearchResults; + background: var(--page-background-color); +} + +iframe#MSearchResults { + margin: 4px; +} + +iframe { + color-scheme: normal; +} + +@media (prefers-color-scheme: dark) { + html:not(.light-mode) iframe#MSearchResults { + filter: invert() hue-rotate(180deg); + } +} + +html.dark-mode iframe#MSearchResults { + filter: invert() hue-rotate(180deg); +} + +#MSearchResults .SRPage { + background-color: transparent; +} + +#MSearchResults .SRPage .SREntry { + font-size: 10pt; + padding: var(--spacing-small) var(--spacing-medium); +} + +#MSearchSelectWindow { + border: 1px solid var(--separator-color); + border-radius: var(--border-radius-medium); + box-shadow: var(--box-shadow); + background: var(--page-background-color); + padding-top: var(--spacing-small); + padding-bottom: var(--spacing-small); +} + +#MSearchSelectWindow a.SelectItem { + font-size: var(--navigation-font-size); + line-height: var(--content-line-height); + margin: 0 var(--spacing-small); + border-radius: var(--border-radius-small); + color: var(--page-foreground-color) !important; + font-weight: normal; +} + +#MSearchSelectWindow a.SelectItem:hover { + background: var(--menu-focus-background); + color: var(--menu-focus-foreground) !important; +} + +@media screen and (max-width: 767px) { + #MSearchBox { + margin-top: var(--spacing-medium); + margin-bottom: var(--spacing-medium); + width: calc(100vw - 30px); + } + + #main-menu > li:last-child { + float: none !important; + } + + #MSearchField { + width: calc(100vw - 110px); + } + + @keyframes slideInSearchResultsMobile { + from { + opacity: 0; + transform: translate(0, 15px); + } + + to { + opacity: 1; + transform: translate(0, 20px); + } + } + + #MSearchResultsWindow { + left: var(--spacing-medium) !important; + right: var(--spacing-medium); + overflow: auto; + transform: translate(0, 20px); + animation: ease-out 280ms slideInSearchResultsMobile; + width: auto !important; + } + + /* + * Overwrites for fixing the searchbox on mobile in doxygen 1.9.2 + */ + label.main-menu-btn ~ #searchBoxPos1 { + top: 3px !important; + right: 6px !important; + left: 45px; + display: flex; + } + + label.main-menu-btn ~ #searchBoxPos1 > #MSearchBox { + margin-top: 0; + margin-bottom: 0; + flex-grow: 2; + float: left; + } +} + +/* + Tree view + */ + +#side-nav { + padding: 0 !important; + background: var(--side-nav-background); + min-width: 8px; + max-width: 50vw; +} + +@media screen and (max-width: 767px) { + #side-nav { + display: none; + } + + #doc-content { + margin-left: 0 !important; + } +} + +#nav-tree { + background: transparent; + margin-right: 1px; +} + +#nav-tree .label { + font-size: var(--navigation-font-size); +} + +#nav-tree .item { + height: var(--tree-item-height); + line-height: var(--tree-item-height); +} + +#nav-sync { + bottom: 12px; + right: 12px; + top: auto !important; + user-select: none; +} + +#nav-tree .selected { + text-shadow: none; + background-image: none; + background-color: transparent; + position: relative; +} + +#nav-tree .selected::after { + content: ""; + position: absolute; + top: 1px; + bottom: 1px; + left: 0; + width: 4px; + border-radius: 0 var(--border-radius-small) var(--border-radius-small) 0; + background: var(--primary-color); +} + + +#nav-tree a { + color: var(--side-nav-foreground) !important; + font-weight: normal; +} + +#nav-tree a:focus { + outline-style: auto; +} + +#nav-tree .arrow { + opacity: var(--side-nav-arrow-opacity); +} + +.arrow { + color: inherit; + cursor: pointer; + font-size: 45%; + vertical-align: middle; + margin-right: 2px; + font-family: serif; + height: auto; + text-align: right; +} + +#nav-tree div.item:hover .arrow, #nav-tree a:focus .arrow { + opacity: var(--side-nav-arrow-hover-opacity); +} + +#nav-tree .selected a { + color: var(--primary-color) !important; + font-weight: bolder; + font-weight: 600; +} + +.ui-resizable-e { + width: 4px; + background: transparent; + box-shadow: inset -1px 0 0 0 var(--separator-color); +} + +/* + Contents + */ + +div.header { + border-bottom: 1px solid var(--separator-color); + background-color: var(--page-background-color); + background-image: none; +} + +@media screen and (min-width: 1000px) { + #doc-content > div > div.contents, + .PageDoc > div.contents { + display: flex; + flex-direction: row-reverse; + flex-wrap: nowrap; + align-items: flex-start; + } + + div.contents .textblock { + min-width: 200px; + flex-grow: 1; + } +} + +div.contents, div.header .title, div.header .summary { + max-width: var(--content-maxwidth); +} + +div.contents, div.header .title { + line-height: initial; + margin: calc(var(--spacing-medium) + .2em) auto var(--spacing-medium) auto; +} + +div.header .summary { + margin: var(--spacing-medium) auto 0 auto; +} + +div.headertitle { + padding: 0; +} + +div.header .title { + font-weight: 600; + font-size: 225%; + padding: var(--spacing-medium) var(--spacing-large); + word-break: break-word; +} + +div.header .summary { + width: auto; + display: block; + float: none; + padding: 0 var(--spacing-large); +} + +td.memSeparator { + border-color: var(--separator-color); +} + +span.mlabel { + background: var(--primary-color); + border: none; + padding: 4px 9px; + border-radius: 12px; + margin-right: var(--spacing-medium); +} + +span.mlabel:last-of-type { + margin-right: 2px; +} + +div.contents { + padding: 0 var(--spacing-large); +} + +div.contents p, div.contents li { + line-height: var(--content-line-height); +} + +div.contents div.dyncontent { + margin: var(--spacing-medium) 0; +} + +@media (prefers-color-scheme: dark) { + html:not(.light-mode) div.contents div.dyncontent img, + html:not(.light-mode) div.contents center img, + html:not(.light-mode) div.contents > table img, + html:not(.light-mode) div.contents div.dyncontent iframe, + html:not(.light-mode) div.contents center iframe, + html:not(.light-mode) div.contents table iframe, + html:not(.light-mode) div.contents .dotgraph iframe { + filter: brightness(89%) hue-rotate(180deg) invert(); + } +} + +html.dark-mode div.contents div.dyncontent img, +html.dark-mode div.contents center img, +html.dark-mode div.contents > table img, +html.dark-mode div.contents div.dyncontent iframe, +html.dark-mode div.contents center iframe, +html.dark-mode div.contents table iframe, +html.dark-mode div.contents .dotgraph iframe + { + filter: brightness(89%) hue-rotate(180deg) invert(); +} + +h2.groupheader { + border-bottom: 0px; + color: var(--page-foreground-color); + box-shadow: + 100px 0 var(--page-background-color), + -100px 0 var(--page-background-color), + 100px 0.75px var(--separator-color), + -100px 0.75px var(--separator-color), + 500px 0 var(--page-background-color), + -500px 0 var(--page-background-color), + 500px 0.75px var(--separator-color), + -500px 0.75px var(--separator-color), + 900px 0 var(--page-background-color), + -900px 0 var(--page-background-color), + 900px 0.75px var(--separator-color), + -900px 0.75px var(--separator-color), + 1400px 0 var(--page-background-color), + -1400px 0 var(--page-background-color), + 1400px 0.75px var(--separator-color), + -1400px 0.75px var(--separator-color), + 1900px 0 var(--page-background-color), + -1900px 0 var(--page-background-color), + 1900px 0.75px var(--separator-color), + -1900px 0.75px var(--separator-color); +} + +blockquote { + margin: 0 var(--spacing-medium) 0 var(--spacing-medium); + padding: var(--spacing-small) var(--spacing-large); + background: var(--blockquote-background); + color: var(--blockquote-foreground); + border-left: 0; + overflow: visible; + border-radius: var(--border-radius-medium); + overflow: visible; + position: relative; +} + +blockquote::before, blockquote::after { + font-weight: bold; + font-family: serif; + font-size: 360%; + opacity: .15; + position: absolute; +} + +blockquote::before { + content: "“"; + left: -10px; + top: 4px; +} + +blockquote::after { + content: "”"; + right: -8px; + bottom: -25px; +} + +blockquote p { + margin: var(--spacing-small) 0 var(--spacing-medium) 0; +} +.paramname { + font-weight: 600; + color: var(--primary-dark-color); +} + +.paramname > code { + border: 0; +} + +table.params .paramname { + font-weight: 600; + font-family: var(--font-family-monospace); + font-size: var(--code-font-size); + padding-right: var(--spacing-small); + line-height: var(--table-line-height); +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px var(--primary-light-color); +} + +.alphachar a { + color: var(--page-foreground-color); +} + +.dotgraph { + max-width: 100%; + overflow-x: scroll; +} + +.dotgraph .caption { + position: sticky; + left: 0; +} + +/* Wrap Graphviz graphs with the `interactive_dotgraph` class if `INTERACTIVE_SVG = YES` */ +.interactive_dotgraph .dotgraph iframe { + max-width: 100%; +} + +/* + Table of Contents + */ + +div.contents .toc { + max-height: var(--toc-max-height); + min-width: var(--toc-width); + border: 0; + border-left: 1px solid var(--separator-color); + border-radius: 0; + background-color: transparent; + box-shadow: none; + position: sticky; + top: var(--toc-sticky-top); + padding: 0 var(--spacing-large); + margin: var(--spacing-small) 0 var(--spacing-large) var(--spacing-large); +} + +div.toc h3 { + color: var(--toc-foreground); + font-size: var(--navigation-font-size); + margin: var(--spacing-large) 0 var(--spacing-medium) 0; +} + +div.toc li { + padding: 0; + background: none; + line-height: var(--toc-font-size); + margin: var(--toc-font-size) 0 0 0; +} + +div.toc li::before { + display: none; +} + +div.toc ul { + margin-top: 0 +} + +div.toc li a { + font-size: var(--toc-font-size); + color: var(--page-foreground-color) !important; + text-decoration: none; +} + +div.toc li a:hover, div.toc li a.active { + color: var(--primary-color) !important; +} + +div.toc li a.aboveActive { + color: var(--page-secondary-foreground-color) !important; +} + + +@media screen and (max-width: 999px) { + div.contents .toc { + max-height: 45vh; + float: none; + width: auto; + margin: 0 0 var(--spacing-medium) 0; + position: relative; + top: 0; + position: relative; + border: 1px solid var(--separator-color); + border-radius: var(--border-radius-medium); + background-color: var(--toc-background); + box-shadow: var(--box-shadow); + } + + div.contents .toc.interactive { + max-height: calc(var(--navigation-font-size) + 2 * var(--spacing-large)); + overflow: hidden; + } + + div.contents .toc > h3 { + -webkit-tap-highlight-color: transparent; + cursor: pointer; + position: sticky; + top: 0; + background-color: var(--toc-background); + margin: 0; + padding: var(--spacing-large) 0; + display: block; + } + + div.contents .toc.interactive > h3::before { + content: ""; + width: 0; + height: 0; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-top: 5px solid var(--primary-color); + display: inline-block; + margin-right: var(--spacing-small); + margin-bottom: calc(var(--navigation-font-size) / 4); + transform: rotate(-90deg); + transition: transform var(--animation-duration) ease-out; + } + + div.contents .toc.interactive.open > h3::before { + transform: rotate(0deg); + } + + div.contents .toc.interactive.open { + max-height: 45vh; + overflow: auto; + transition: max-height 0.2s ease-in-out; + } + + div.contents .toc a, div.contents .toc a.active { + color: var(--primary-color) !important; + } + + div.contents .toc a:hover { + text-decoration: underline; + } +} + +/* + Code & Fragments + */ + +code, div.fragment, pre.fragment { + border-radius: var(--border-radius-small); + border: 1px solid var(--separator-color); + overflow: hidden; +} + +code { + display: inline; + background: var(--code-background); + color: var(--code-foreground); + padding: 2px 6px; +} + +div.fragment, pre.fragment { + margin: var(--spacing-medium) 0; + padding: calc(var(--spacing-large) - (var(--spacing-large) / 6)) var(--spacing-large); + background: var(--fragment-background); + color: var(--fragment-foreground); + overflow-x: auto; +} + +@media screen and (max-width: 767px) { + div.fragment, pre.fragment { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-right: 0; + } + + .contents > div.fragment, + .textblock > div.fragment, + .textblock > pre.fragment, + .textblock > .tabbed > ul > li > div.fragment, + .textblock > .tabbed > ul > li > pre.fragment, + .contents > .doxygen-awesome-fragment-wrapper > div.fragment, + .textblock > .doxygen-awesome-fragment-wrapper > div.fragment, + .textblock > .doxygen-awesome-fragment-wrapper > pre.fragment, + .textblock > .tabbed > ul > li > .doxygen-awesome-fragment-wrapper > div.fragment, + .textblock > .tabbed > ul > li > .doxygen-awesome-fragment-wrapper > pre.fragment { + margin: var(--spacing-medium) calc(0px - var(--spacing-large)); + border-radius: 0; + border-left: 0; + } + + .textblock li > .fragment, + .textblock li > .doxygen-awesome-fragment-wrapper > .fragment { + margin: var(--spacing-medium) calc(0px - var(--spacing-large)); + } + + .memdoc li > .fragment, + .memdoc li > .doxygen-awesome-fragment-wrapper > .fragment { + margin: var(--spacing-medium) calc(0px - var(--spacing-medium)); + } + + .textblock ul, .memdoc ul { + overflow: initial; + } + + .memdoc > div.fragment, + .memdoc > pre.fragment, + dl dd > div.fragment, + dl dd pre.fragment, + .memdoc > .doxygen-awesome-fragment-wrapper > div.fragment, + .memdoc > .doxygen-awesome-fragment-wrapper > pre.fragment, + dl dd > .doxygen-awesome-fragment-wrapper > div.fragment, + dl dd .doxygen-awesome-fragment-wrapper > pre.fragment { + margin: var(--spacing-medium) calc(0px - var(--spacing-medium)); + border-radius: 0; + border-left: 0; + } +} + +code, code a, pre.fragment, div.fragment, div.fragment .line, div.fragment span, div.fragment .line a, div.fragment .line span { + font-family: var(--font-family-monospace); + font-size: var(--code-font-size) !important; +} + +div.line:after { + margin-right: var(--spacing-medium); +} + +div.fragment .line, pre.fragment { + white-space: pre; + word-wrap: initial; + line-height: var(--fragment-lineheight); +} + +div.fragment span.keyword { + color: var(--fragment-keyword); +} + +div.fragment span.keywordtype { + color: var(--fragment-keywordtype); +} + +div.fragment span.keywordflow { + color: var(--fragment-keywordflow); +} + +div.fragment span.stringliteral { + color: var(--fragment-token) +} + +div.fragment span.comment { + color: var(--fragment-comment); +} + +div.fragment a.code { + color: var(--fragment-link) !important; +} + +div.fragment span.preprocessor { + color: var(--fragment-preprocessor); +} + +div.fragment span.lineno { + display: inline-block; + width: 27px; + border-right: none; + background: var(--fragment-linenumber-background); + color: var(--fragment-linenumber-color); +} + +div.fragment span.lineno a { + background: none; + color: var(--fragment-link) !important; +} + +div.fragment > .line:first-child .lineno { + box-shadow: -999999px 0px 0 999999px var(--fragment-linenumber-background), -999998px 0px 0 999999px var(--fragment-linenumber-border); + background-color: var(--fragment-linenumber-background) !important; +} + +div.line { + border-radius: var(--border-radius-small); +} + +div.line.glow { + background-color: var(--primary-light-color); + box-shadow: none; +} + +/* + dl warning, attention, note, deprecated, bug, ... + */ + +dl.bug dt a, dl.deprecated dt a, dl.todo dt a { + font-weight: bold !important; +} + +dl.warning, dl.attention, dl.note, dl.deprecated, dl.bug, dl.invariant, dl.pre, dl.post, dl.todo, dl.remark { + padding: var(--spacing-medium); + margin: var(--spacing-medium) 0; + color: var(--page-background-color); + overflow: hidden; + margin-left: 0; + border-radius: var(--border-radius-small); +} + +dl.section dd { + margin-bottom: 2px; +} + +dl.warning, dl.attention { + background: var(--warning-color); + border-left: 8px solid var(--warning-color-dark); + color: var(--warning-color-darker); +} + +dl.warning dt, dl.attention dt { + color: var(--warning-color-dark); +} + +dl.note, dl.remark { + background: var(--note-color); + border-left: 8px solid var(--note-color-dark); + color: var(--note-color-darker); +} + +dl.note dt, dl.remark dt { + color: var(--note-color-dark); +} + +dl.todo { + background: var(--todo-color); + border-left: 8px solid var(--todo-color-dark); + color: var(--todo-color-darker); +} + +dl.todo dt a { + color: var(--todo-color-dark) !important; +} + +dl.bug dt a { + color: var(--todo-color-dark) !important; +} + +dl.bug { + background: var(--bug-color); + border-left: 8px solid var(--bug-color-dark); + color: var(--bug-color-darker); +} + +dl.bug dt a { + color: var(--bug-color-dark) !important; +} + +dl.deprecated { + background: var(--deprecated-color); + border-left: 8px solid var(--deprecated-color-dark); + color: var(--deprecated-color-darker); +} + +dl.deprecated dt a { + color: var(--deprecated-color-dark) !important; +} + +dl.section dd, dl.bug dd, dl.deprecated dd, dl.todo dd { + margin-inline-start: 0px; +} + +dl.invariant, dl.pre, dl.post { + background: var(--invariant-color); + border-left: 8px solid var(--invariant-color-dark); + color: var(--invariant-color-darker); +} + +dl.invariant dt, dl.pre dt, dl.post dt { + color: var(--invariant-color-dark); +} + +/* + memitem + */ + +div.memdoc, div.memproto, h2.memtitle { + box-shadow: none; + background-image: none; + border: none; +} + +div.memdoc { + padding: 0 var(--spacing-medium); + background: var(--page-background-color); +} + +h2.memtitle, div.memitem { + border: 1px solid var(--separator-color); + box-shadow: var(--box-shadow); +} + +h2.memtitle { + box-shadow: 0px var(--spacing-medium) 0 -1px var(--fragment-background), var(--box-shadow); +} + +div.memitem { + transition: none; +} + +div.memproto, h2.memtitle { + background: var(--fragment-background); +} + +h2.memtitle { + font-weight: 500; + font-size: var(--memtitle-font-size); + font-family: var(--font-family-monospace); + border-bottom: none; + border-top-left-radius: var(--border-radius-medium); + border-top-right-radius: var(--border-radius-medium); + word-break: break-all; + position: relative; +} + +h2.memtitle:after { + content: ""; + display: block; + background: var(--fragment-background); + height: var(--spacing-medium); + bottom: calc(0px - var(--spacing-medium)); + left: 0; + right: -14px; + position: absolute; + border-top-right-radius: var(--border-radius-medium); +} + +h2.memtitle > span.permalink { + font-size: inherit; +} + +h2.memtitle > span.permalink > a { + text-decoration: none; + padding-left: 3px; + margin-right: -4px; + user-select: none; + display: inline-block; + margin-top: -6px; +} + +h2.memtitle > span.permalink > a:hover { + color: var(--primary-dark-color) !important; +} + +a:target + h2.memtitle, a:target + h2.memtitle + div.memitem { + border-color: var(--primary-light-color); +} + +div.memitem { + border-top-right-radius: var(--border-radius-medium); + border-bottom-right-radius: var(--border-radius-medium); + border-bottom-left-radius: var(--border-radius-medium); + overflow: hidden; + display: block !important; +} + +div.memdoc { + border-radius: 0; +} + +div.memproto { + border-radius: 0 var(--border-radius-small) 0 0; + overflow: auto; + border-bottom: 1px solid var(--separator-color); + padding: var(--spacing-medium); + margin-bottom: -1px; +} + +div.memtitle { + border-top-right-radius: var(--border-radius-medium); + border-top-left-radius: var(--border-radius-medium); +} + +div.memproto table.memname { + font-family: var(--font-family-monospace); + color: var(--page-foreground-color); + font-size: var(--memname-font-size); + text-shadow: none; +} + +div.memproto div.memtemplate { + font-family: var(--font-family-monospace); + color: var(--primary-dark-color); + font-size: var(--memname-font-size); + margin-left: 2px; + text-shadow: none; +} + +table.mlabels, table.mlabels > tbody { + display: block; +} + +td.mlabels-left { + width: auto; +} + +td.mlabels-right { + margin-top: 3px; + position: sticky; + left: 0; +} + +table.mlabels > tbody > tr:first-child { + display: flex; + justify-content: space-between; + flex-wrap: wrap; +} + +.memname, .memitem span.mlabels { + margin: 0 +} + +/* + reflist + */ + +dl.reflist { + box-shadow: var(--box-shadow); + border-radius: var(--border-radius-medium); + border: 1px solid var(--separator-color); + overflow: hidden; + padding: 0; +} + + +dl.reflist dt, dl.reflist dd { + box-shadow: none; + text-shadow: none; + background-image: none; + border: none; + padding: 12px; +} + + +dl.reflist dt { + font-weight: 500; + border-radius: 0; + background: var(--code-background); + border-bottom: 1px solid var(--separator-color); + color: var(--page-foreground-color) +} + + +dl.reflist dd { + background: none; +} + +/* + Table + */ + +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname), +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody { + display: inline-block; + max-width: 100%; +} + +.contents > table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname):not(.classindex) { + margin-left: calc(0px - var(--spacing-large)); + margin-right: calc(0px - var(--spacing-large)); + max-width: calc(100% + 2 * var(--spacing-large)); +} + +table.fieldtable, +table.markdownTable tbody, +table.doxtable tbody { + border: none; + margin: var(--spacing-medium) 0; + box-shadow: 0 0 0 1px var(--separator-color); + border-radius: var(--border-radius-small); +} + +table.markdownTable, table.doxtable, table.fieldtable { + padding: 1px; +} + +table.doxtable caption { + display: block; +} + +table.fieldtable { + border-collapse: collapse; + width: 100%; +} + +th.markdownTableHeadLeft, +th.markdownTableHeadRight, +th.markdownTableHeadCenter, +th.markdownTableHeadNone, +table.doxtable th { + background: var(--tablehead-background); + color: var(--tablehead-foreground); + font-weight: 600; + font-size: var(--page-font-size); +} + +th.markdownTableHeadLeft:first-child, +th.markdownTableHeadRight:first-child, +th.markdownTableHeadCenter:first-child, +th.markdownTableHeadNone:first-child, +table.doxtable tr th:first-child { + border-top-left-radius: var(--border-radius-small); +} + +th.markdownTableHeadLeft:last-child, +th.markdownTableHeadRight:last-child, +th.markdownTableHeadCenter:last-child, +th.markdownTableHeadNone:last-child, +table.doxtable tr th:last-child { + border-top-right-radius: var(--border-radius-small); +} + +table.markdownTable td, +table.markdownTable th, +table.fieldtable td, +table.fieldtable th, +table.doxtable td, +table.doxtable th { + border: 1px solid var(--separator-color); + padding: var(--spacing-small) var(--spacing-medium); +} + +table.markdownTable td:last-child, +table.markdownTable th:last-child, +table.fieldtable td:last-child, +table.fieldtable th:last-child, +table.doxtable td:last-child, +table.doxtable th:last-child { + border-right: none; +} + +table.markdownTable td:first-child, +table.markdownTable th:first-child, +table.fieldtable td:first-child, +table.fieldtable th:first-child, +table.doxtable td:first-child, +table.doxtable th:first-child { + border-left: none; +} + +table.markdownTable tr:first-child td, +table.markdownTable tr:first-child th, +table.fieldtable tr:first-child td, +table.fieldtable tr:first-child th, +table.doxtable tr:first-child td, +table.doxtable tr:first-child th { + border-top: none; +} + +table.markdownTable tr:last-child td, +table.markdownTable tr:last-child th, +table.fieldtable tr:last-child td, +table.fieldtable tr:last-child th, +table.doxtable tr:last-child td, +table.doxtable tr:last-child th { + border-bottom: none; +} + +table.markdownTable tr, table.doxtable tr { + border-bottom: 1px solid var(--separator-color); +} + +table.markdownTable tr:last-child, table.doxtable tr:last-child { + border-bottom: none; +} + +.full_width_table table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) { + display: block; +} + +.full_width_table table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody { + display: table; + width: 100%; +} + +table.fieldtable th { + font-size: var(--page-font-size); + font-weight: 600; + background-image: none; + background-color: var(--tablehead-background); + color: var(--tablehead-foreground); +} + +table.fieldtable td.fieldtype, .fieldtable td.fieldname, .fieldtable td.fielddoc, .fieldtable th { + border-bottom: 1px solid var(--separator-color); + border-right: 1px solid var(--separator-color); +} + +table.fieldtable tr:last-child td:first-child { + border-bottom-left-radius: var(--border-radius-small); +} + +table.fieldtable tr:last-child td:last-child { + border-bottom-right-radius: var(--border-radius-small); +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: var(--primary-light-color); + box-shadow: none; +} + +table.memberdecls { + display: block; + -webkit-tap-highlight-color: transparent; +} + +table.memberdecls tr[class^='memitem'] { + font-family: var(--font-family-monospace); + font-size: var(--code-font-size); +} + +table.memberdecls tr[class^='memitem'] .memTemplParams { + font-family: var(--font-family-monospace); + font-size: var(--code-font-size); + color: var(--primary-dark-color); + white-space: normal; +} + +table.memberdecls .memItemLeft, +table.memberdecls .memItemRight, +table.memberdecls .memTemplItemLeft, +table.memberdecls .memTemplItemRight, +table.memberdecls .memTemplParams { + transition: none; + padding-top: var(--spacing-small); + padding-bottom: var(--spacing-small); + border-top: 1px solid var(--separator-color); + border-bottom: 1px solid var(--separator-color); + background-color: var(--fragment-background); +} + +table.memberdecls .memTemplItemLeft, +table.memberdecls .memTemplItemRight { + padding-top: 2px; +} + +table.memberdecls .memTemplParams { + border-bottom: 0; + border-left: 1px solid var(--separator-color); + border-right: 1px solid var(--separator-color); + border-radius: var(--border-radius-small) var(--border-radius-small) 0 0; + padding-bottom: var(--spacing-small); +} + +table.memberdecls .memTemplItemLeft { + border-radius: 0 0 0 var(--border-radius-small); + border-left: 1px solid var(--separator-color); + border-top: 0; +} + +table.memberdecls .memTemplItemRight { + border-radius: 0 0 var(--border-radius-small) 0; + border-right: 1px solid var(--separator-color); + padding-left: 0; + border-top: 0; +} + +table.memberdecls .memItemLeft { + border-radius: var(--border-radius-small) 0 0 var(--border-radius-small); + border-left: 1px solid var(--separator-color); + padding-left: var(--spacing-medium); + padding-right: 0; +} + +table.memberdecls .memItemRight { + border-radius: 0 var(--border-radius-small) var(--border-radius-small) 0; + border-right: 1px solid var(--separator-color); + padding-right: var(--spacing-medium); + padding-left: 0; + +} + +table.memberdecls .mdescLeft, table.memberdecls .mdescRight { + background: none; + color: var(--page-foreground-color); + padding: var(--spacing-small) 0; +} + +table.memberdecls .memItemLeft, +table.memberdecls .memTemplItemLeft { + padding-right: var(--spacing-medium); +} + +table.memberdecls .memSeparator { + background: var(--page-background-color); + height: var(--spacing-large); + border: 0; + transition: none; +} + +table.memberdecls .groupheader { + margin-bottom: var(--spacing-large); +} + +table.memberdecls .inherit_header td { + padding: 0 0 var(--spacing-medium) 0; + text-indent: -12px; + color: var(--page-secondary-foreground-color); +} + +table.memberdecls img[src="closed.png"], +table.memberdecls img[src="open.png"], +div.dynheader img[src="open.png"], +div.dynheader img[src="closed.png"] { + width: 0; + height: 0; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-top: 5px solid var(--primary-color); + margin-top: 8px; + display: block; + float: left; + margin-left: -10px; + transition: transform var(--animation-duration) ease-out; +} + +table.memberdecls img { + margin-right: 10px; +} + +table.memberdecls img[src="closed.png"], +div.dynheader img[src="closed.png"] { + transform: rotate(-90deg); + +} + +.compoundTemplParams { + font-family: var(--font-family-monospace); + color: var(--primary-dark-color); + font-size: var(--code-font-size); +} + +@media screen and (max-width: 767px) { + + table.memberdecls .memItemLeft, + table.memberdecls .memItemRight, + table.memberdecls .mdescLeft, + table.memberdecls .mdescRight, + table.memberdecls .memTemplItemLeft, + table.memberdecls .memTemplItemRight, + table.memberdecls .memTemplParams { + display: block; + text-align: left; + padding-left: var(--spacing-large); + margin: 0 calc(0px - var(--spacing-large)) 0 calc(0px - var(--spacing-large)); + border-right: none; + border-left: none; + border-radius: 0; + white-space: normal; + } + + table.memberdecls .memItemLeft, + table.memberdecls .mdescLeft, + table.memberdecls .memTemplItemLeft { + border-bottom: 0; + padding-bottom: 0; + } + + table.memberdecls .memTemplItemLeft { + padding-top: 0; + } + + table.memberdecls .mdescLeft { + margin-bottom: calc(0px - var(--page-font-size)); + } + + table.memberdecls .memItemRight, + table.memberdecls .mdescRight, + table.memberdecls .memTemplItemRight { + border-top: 0; + padding-top: 0; + padding-right: var(--spacing-large); + overflow-x: auto; + } + + table.memberdecls tr[class^='memitem']:not(.inherit) { + display: block; + width: calc(100vw - 2 * var(--spacing-large)); + } + + table.memberdecls .mdescRight { + color: var(--page-foreground-color); + } + + table.memberdecls tr.inherit { + visibility: hidden; + } + + table.memberdecls tr[style="display: table-row;"] { + display: block !important; + visibility: visible; + width: calc(100vw - 2 * var(--spacing-large)); + animation: fade .5s; + } + + @keyframes fade { + 0% { + opacity: 0; + max-height: 0; + } + + 100% { + opacity: 1; + max-height: 200px; + } + } +} + + +/* + Horizontal Rule + */ + +hr { + margin-top: var(--spacing-large); + margin-bottom: var(--spacing-large); + height: 1px; + background-color: var(--separator-color); + border: 0; +} + +.contents hr { + box-shadow: 100px 0 0 var(--separator-color), + -100px 0 0 var(--separator-color), + 500px 0 0 var(--separator-color), + -500px 0 0 var(--separator-color), + 1500px 0 0 var(--separator-color), + -1500px 0 0 var(--separator-color), + 2000px 0 0 var(--separator-color), + -2000px 0 0 var(--separator-color); +} + +.contents img, .contents .center, .contents center, .contents div.image object { + max-width: 100%; + overflow: auto; +} + +@media screen and (max-width: 767px) { + .contents .dyncontent > .center, .contents > center { + margin-left: calc(0px - var(--spacing-large)); + margin-right: calc(0px - var(--spacing-large)); + max-width: calc(100% + 2 * var(--spacing-large)); + } +} + +/* + Directories + */ +div.directory { + border-top: 1px solid var(--separator-color); + border-bottom: 1px solid var(--separator-color); + width: auto; +} + +table.directory { + font-family: var(--font-family); + font-size: var(--page-font-size); + font-weight: normal; + width: 100%; +} + +table.directory td.entry, table.directory td.desc { + padding: calc(var(--spacing-small) / 2) var(--spacing-small); + line-height: var(--table-line-height); +} + +table.directory tr.even td:last-child { + border-radius: 0 var(--border-radius-small) var(--border-radius-small) 0; +} + +table.directory tr.even td:first-child { + border-radius: var(--border-radius-small) 0 0 var(--border-radius-small); +} + +table.directory tr.even:last-child td:last-child { + border-radius: 0 var(--border-radius-small) 0 0; +} + +table.directory tr.even:last-child td:first-child { + border-radius: var(--border-radius-small) 0 0 0; +} + +table.directory td.desc { + min-width: 250px; +} + +table.directory tr.even { + background-color: var(--odd-color); +} + +table.directory tr.odd { + background-color: transparent; +} + +.icona { + width: auto; + height: auto; + margin: 0 var(--spacing-small); +} + +.icon { + background: var(--primary-color); + border-radius: var(--border-radius-small); + font-size: var(--page-font-size); + padding: calc(var(--page-font-size) / 5); + line-height: var(--page-font-size); + transform: scale(0.8); + height: auto; + width: var(--page-font-size); + user-select: none; +} + +.iconfopen, .icondoc, .iconfclosed { + background-position: center; + margin-bottom: 0; + height: var(--table-line-height); +} + +.icondoc { + filter: saturate(0.2); +} + +@media screen and (max-width: 767px) { + div.directory { + margin-left: calc(0px - var(--spacing-large)); + margin-right: calc(0px - var(--spacing-large)); + } +} + +@media (prefers-color-scheme: dark) { + html:not(.light-mode) .iconfopen, html:not(.light-mode) .iconfclosed { + filter: hue-rotate(180deg) invert(); + } +} + +html.dark-mode .iconfopen, html.dark-mode .iconfclosed { + filter: hue-rotate(180deg) invert(); +} + +/* + Class list + */ + +.classindex dl.odd { + background: var(--odd-color); + border-radius: var(--border-radius-small); +} + +.classindex dl.even { + background-color: transparent; +} + +/* + Class Index Doxygen 1.8 +*/ + +table.classindex { + margin-left: 0; + margin-right: 0; + width: 100%; +} + +table.classindex table div.ah { + background-image: none; + background-color: initial; + border-color: var(--separator-color); + color: var(--page-foreground-color); + box-shadow: var(--box-shadow); + border-radius: var(--border-radius-large); + padding: var(--spacing-small); +} + +div.qindex { + background-color: var(--odd-color); + border-radius: var(--border-radius-small); + border: 1px solid var(--separator-color); + padding: var(--spacing-small) 0; +} + +/* + Footer and nav-path + */ + +#nav-path { + width: 100%; +} + +#nav-path ul { + background-image: none; + background: var(--page-background-color); + border: none; + border-top: 1px solid var(--separator-color); + border-bottom: 1px solid var(--separator-color); + border-bottom: 0; + box-shadow: 0 0.75px 0 var(--separator-color); + font-size: var(--navigation-font-size); +} + +img.footer { + width: 60px; +} + +.navpath li.footer { + color: var(--page-secondary-foreground-color); +} + +address.footer { + color: var(--page-secondary-foreground-color); + margin-bottom: var(--spacing-large); +} + +#nav-path li.navelem { + background-image: none; + display: flex; + align-items: center; +} + +.navpath li.navelem a { + text-shadow: none; + display: inline-block; + color: var(--primary-color) !important; +} + +.navpath li.navelem b { + color: var(--primary-dark-color); + font-weight: 500; +} + +li.navelem { + padding: 0; + margin-left: -8px; +} + +li.navelem:first-child { + margin-left: var(--spacing-large); +} + +li.navelem:first-child:before { + display: none; +} + +#nav-path li.navelem:after { + content: ''; + border: 5px solid var(--page-background-color); + border-bottom-color: transparent; + border-right-color: transparent; + border-top-color: transparent; + transform: translateY(-1px) scaleY(4.2); + z-index: 10; + margin-left: 6px; +} + +#nav-path li.navelem:before { + content: ''; + border: 5px solid var(--separator-color); + border-bottom-color: transparent; + border-right-color: transparent; + border-top-color: transparent; + transform: translateY(-1px) scaleY(3.2); + margin-right: var(--spacing-small); +} + +.navpath li.navelem a:hover { + color: var(--primary-color); +} + +/* + Scrollbars for Webkit +*/ + +#nav-tree::-webkit-scrollbar, +div.fragment::-webkit-scrollbar, +pre.fragment::-webkit-scrollbar, +div.memproto::-webkit-scrollbar, +.contents center::-webkit-scrollbar, +.contents .center::-webkit-scrollbar, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody::-webkit-scrollbar, +div.contents .toc::-webkit-scrollbar, +.contents .dotgraph::-webkit-scrollbar, +.contents .tabs-overview-container::-webkit-scrollbar { + background: transparent; + width: calc(var(--webkit-scrollbar-size) + var(--webkit-scrollbar-padding) + var(--webkit-scrollbar-padding)); + height: calc(var(--webkit-scrollbar-size) + var(--webkit-scrollbar-padding) + var(--webkit-scrollbar-padding)); +} + +#nav-tree::-webkit-scrollbar-thumb, +div.fragment::-webkit-scrollbar-thumb, +pre.fragment::-webkit-scrollbar-thumb, +div.memproto::-webkit-scrollbar-thumb, +.contents center::-webkit-scrollbar-thumb, +.contents .center::-webkit-scrollbar-thumb, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody::-webkit-scrollbar-thumb, +div.contents .toc::-webkit-scrollbar-thumb, +.contents .dotgraph::-webkit-scrollbar-thumb, +.contents .tabs-overview-container::-webkit-scrollbar-thumb { + background-color: transparent; + border: var(--webkit-scrollbar-padding) solid transparent; + border-radius: calc(var(--webkit-scrollbar-padding) + var(--webkit-scrollbar-padding)); + background-clip: padding-box; +} + +#nav-tree:hover::-webkit-scrollbar-thumb, +div.fragment:hover::-webkit-scrollbar-thumb, +pre.fragment:hover::-webkit-scrollbar-thumb, +div.memproto:hover::-webkit-scrollbar-thumb, +.contents center:hover::-webkit-scrollbar-thumb, +.contents .center:hover::-webkit-scrollbar-thumb, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody:hover::-webkit-scrollbar-thumb, +div.contents .toc:hover::-webkit-scrollbar-thumb, +.contents .dotgraph:hover::-webkit-scrollbar-thumb, +.contents .tabs-overview-container:hover::-webkit-scrollbar-thumb { + background-color: var(--webkit-scrollbar-color); +} + +#nav-tree::-webkit-scrollbar-track, +div.fragment::-webkit-scrollbar-track, +pre.fragment::-webkit-scrollbar-track, +div.memproto::-webkit-scrollbar-track, +.contents center::-webkit-scrollbar-track, +.contents .center::-webkit-scrollbar-track, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody::-webkit-scrollbar-track, +div.contents .toc::-webkit-scrollbar-track, +.contents .dotgraph::-webkit-scrollbar-track, +.contents .tabs-overview-container::-webkit-scrollbar-track { + background: transparent; +} + +#nav-tree::-webkit-scrollbar-corner { + background-color: var(--side-nav-background); +} + +#nav-tree, +div.fragment, +pre.fragment, +div.memproto, +.contents center, +.contents .center, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody, +div.contents .toc { + overflow-x: auto; + overflow-x: overlay; +} + +#nav-tree { + overflow-x: auto; + overflow-y: auto; + overflow-y: overlay; +} + +/* + Scrollbars for Firefox +*/ + +#nav-tree, +div.fragment, +pre.fragment, +div.memproto, +.contents center, +.contents .center, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody, +div.contents .toc, +.contents .dotgraph, +.contents .tabs-overview-container { + scrollbar-width: thin; +} + +/* + Optional Dark mode toggle button +*/ + +doxygen-awesome-dark-mode-toggle { + display: inline-block; + margin: 0 0 0 var(--spacing-small); + padding: 0; + width: var(--searchbar-height); + height: var(--searchbar-height); + background: none; + border: none; + border-radius: var(--searchbar-height); + vertical-align: middle; + text-align: center; + line-height: var(--searchbar-height); + font-size: 22px; + display: flex; + align-items: center; + justify-content: center; + user-select: none; + cursor: pointer; +} + +doxygen-awesome-dark-mode-toggle > svg { + transition: transform var(--animation-duration) ease-in-out; +} + +doxygen-awesome-dark-mode-toggle:active > svg { + transform: scale(.5); +} + +doxygen-awesome-dark-mode-toggle:hover { + background-color: rgba(0,0,0,.03); +} + +html.dark-mode doxygen-awesome-dark-mode-toggle:hover { + background-color: rgba(0,0,0,.18); +} + +/* + Optional fragment copy button +*/ +.doxygen-awesome-fragment-wrapper { + position: relative; +} + +doxygen-awesome-fragment-copy-button { + opacity: 0; + background: var(--fragment-background); + width: 28px; + height: 28px; + position: absolute; + right: calc(var(--spacing-large) - (var(--spacing-large) / 2.5)); + top: calc(var(--spacing-large) - (var(--spacing-large) / 2.5)); + border: 1px solid var(--fragment-foreground); + cursor: pointer; + border-radius: var(--border-radius-small); + display: flex; + justify-content: center; + align-items: center; +} + +.doxygen-awesome-fragment-wrapper:hover doxygen-awesome-fragment-copy-button, doxygen-awesome-fragment-copy-button.success { + opacity: .28; +} + +doxygen-awesome-fragment-copy-button:hover, doxygen-awesome-fragment-copy-button.success { + opacity: 1 !important; +} + +doxygen-awesome-fragment-copy-button:active:not([class~=success]) svg { + transform: scale(.91); +} + +doxygen-awesome-fragment-copy-button svg { + fill: var(--fragment-foreground); + width: 18px; + height: 18px; +} + +doxygen-awesome-fragment-copy-button.success svg { + fill: rgb(14, 168, 14); +} + +doxygen-awesome-fragment-copy-button.success { + border-color: rgb(14, 168, 14); +} + +@media screen and (max-width: 767px) { + .textblock > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, + .textblock li > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, + .memdoc li > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, + .memdoc > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, + dl dd > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button { + right: 0; + } +} + +/* + Optional paragraph link button +*/ + +a.anchorlink { + font-size: 90%; + margin-left: var(--spacing-small); + color: var(--page-foreground-color) !important; + text-decoration: none; + opacity: .15; + display: none; + transition: opacity var(--animation-duration) ease-in-out, color var(--animation-duration) ease-in-out; +} + +a.anchorlink svg { + fill: var(--page-foreground-color); +} + +h3 a.anchorlink svg, h4 a.anchorlink svg { + margin-bottom: -3px; + margin-top: -4px; +} + +a.anchorlink:hover { + opacity: .45; +} + +h2:hover a.anchorlink, h1:hover a.anchorlink, h3:hover a.anchorlink, h4:hover a.anchorlink { + display: inline-block; +} + +/* + Optional tab feature +*/ + +.tabbed ul { + padding-inline-start: 0px; + margin: 0; + padding: var(--spacing-small) 0; +} + +.tabbed li { + display: none; +} + +.tabbed li.selected { + display: block; +} + +.tabs-overview-container { + overflow-x: auto; + display: block; + overflow-y: visible; +} + +.tabs-overview { + border-bottom: 1px solid var(--separator-color); + display: flex; + flex-direction: row; +} + +@media screen and (max-width: 767px) { + .tabs-overview-container { + margin: 0 calc(0px - var(--spacing-large)); + } + .tabs-overview { + padding: 0 var(--spacing-large) + } +} + +.tabs-overview button.tab-button { + color: var(--page-foreground-color); + margin: 0; + border: none; + background: transparent; + padding: calc(var(--spacing-large) / 2) 0; + display: inline-block; + font-size: var(--page-font-size); + cursor: pointer; + box-shadow: 0 1px 0 0 var(--separator-color); + position: relative; + + -webkit-tap-highlight-color: transparent; +} + +.tabs-overview button.tab-button .tab-title::before { + display: block; + content: attr(title); + font-weight: 600; + height: 0; + overflow: hidden; + visibility: hidden; +} + +.tabs-overview button.tab-button .tab-title { + float: left; + white-space: nowrap; + font-weight: normal; + padding: calc(var(--spacing-large) / 2) var(--spacing-large); + border-radius: var(--border-radius-medium); + transition: background-color var(--animation-duration) ease-in-out, font-weight var(--animation-duration) ease-in-out; +} + +.tabs-overview button.tab-button:not(:last-child) .tab-title { + box-shadow: 8px 0 0 -7px var(--separator-color); +} + +.tabs-overview button.tab-button:hover .tab-title { + background: var(--separator-color); + box-shadow: none; +} + +.tabs-overview button.tab-button.active .tab-title { + font-weight: 600; +} + +.tabs-overview button.tab-button::after { + content: ''; + display: block; + position: absolute; + left: 0; + bottom: 0; + right: 0; + height: 0; + width: 0%; + margin: 0 auto; + border-radius: var(--border-radius-small) var(--border-radius-small) 0 0; + background-color: var(--primary-color); + transition: width var(--animation-duration) ease-in-out, height var(--animation-duration) ease-in-out; +} + +.tabs-overview button.tab-button.active::after { + width: 100%; + box-sizing: border-box; + height: 3px; +} + + +/* + Navigation Buttons +*/ + +.section_buttons:not(:empty) { + margin-top: calc(var(--spacing-large) * 3); +} + +.section_buttons table.markdownTable { + display: block; + width: 100%; +} + +.section_buttons table.markdownTable tbody { + display: table !important; + width: 100%; + box-shadow: none; + border-spacing: 10px; +} + +.section_buttons table.markdownTable td { + padding: 0; +} + +.section_buttons table.markdownTable th { + display: none; +} + +.section_buttons table.markdownTable tr.markdownTableHead { + border: none; +} + +.section_buttons tr th, .section_buttons tr td { + background: none; + border: none; + padding: var(--spacing-large) 0 var(--spacing-small); +} + +.section_buttons a { + display: inline-block; + border: 1px solid var(--separator-color); + border-radius: var(--border-radius-medium); + color: var(--page-secondary-foreground-color) !important; + text-decoration: none; + transition: color var(--animation-duration) ease-in-out, background-color var(--animation-duration) ease-in-out; +} + +.section_buttons a:hover { + color: var(--page-foreground-color) !important; + background-color: var(--odd-color); +} + +.section_buttons tr td.markdownTableBodyLeft a { + padding: var(--spacing-medium) var(--spacing-large) var(--spacing-medium) calc(var(--spacing-large) / 2); +} + +.section_buttons tr td.markdownTableBodyRight a { + padding: var(--spacing-medium) calc(var(--spacing-large) / 2) var(--spacing-medium) var(--spacing-large); +} + +.section_buttons tr td.markdownTableBodyLeft a::before, +.section_buttons tr td.markdownTableBodyRight a::after { + color: var(--page-secondary-foreground-color) !important; + display: inline-block; + transition: color .08s ease-in-out, transform .09s ease-in-out; +} + +.section_buttons tr td.markdownTableBodyLeft a::before { + content: '〈'; + padding-right: var(--spacing-large); +} + + +.section_buttons tr td.markdownTableBodyRight a::after { + content: '〉'; + padding-left: var(--spacing-large); +} + + +.section_buttons tr td.markdownTableBodyLeft a:hover::before { + color: var(--page-foreground-color) !important; + transform: translateX(-3px); +} + +.section_buttons tr td.markdownTableBodyRight a:hover::after { + color: var(--page-foreground-color) !important; + transform: translateX(3px); +} + +@media screen and (max-width: 450px) { + .section_buttons a { + width: 100%; + box-sizing: border-box; + } + + .section_buttons tr td:nth-of-type(1).markdownTableBodyLeft a { + border-radius: var(--border-radius-medium) 0 0 var(--border-radius-medium); + border-right: none; + } + + .section_buttons tr td:nth-of-type(2).markdownTableBodyRight a { + border-radius: 0 var(--border-radius-medium) var(--border-radius-medium) 0; + } +} diff --git a/doxygen.css b/doxygen.css new file mode 100644 index 0000000..b4fc124 --- /dev/null +++ b/doxygen.css @@ -0,0 +1,1819 @@ +/* The standard CSS for doxygen 1.10.0*/ + +body { + background-color: white; + color: black; +} + +body, table, div, p, dl { + font-weight: 400; + font-size: 14px; + font-family: Roboto,sans-serif; + line-height: 22px; +} + +/* @group Heading Levels */ + +.title { + font-family: Roboto,sans-serif; + line-height: 28px; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h1.groupheader { + font-size: 150%; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: white; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: #A0A0A0; +} + +#main-menu a:focus { + outline: auto; + z-index: 10; + position: relative; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: black; +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.even { + background-color: white; +} + +.classindex dl.odd { + background-color: #F8F9FC; +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: none; + background: linear-gradient(to bottom, transparent 0,transparent calc(100% - 1px), currentColor 100%); +} + +a:hover > span.arrow { + text-decoration: none; + background : #F9FAFC; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: visible; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; + list-style-type: none; +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; + overflow-y: hidden; + position: relative; + min-height: 12px; + margin: 10px 0px; + padding: 10px 10px; + border: 1px solid #C4CFE5; + border-radius: 4px; + background-color: #FBFCFD; + color: black; +} + +pre.fragment { + word-wrap: break-word; + font-size: 10pt; + line-height: 125%; + font-family: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +} + +.clipboard { + width: 24px; + height: 24px; + right: 5px; + top: 5px; + opacity: 0; + position: absolute; + display: inline; + overflow: auto; + fill: black; + justify-content: center; + align-items: center; + cursor: pointer; +} + +.clipboard.success { + border: 1px solid black; + border-radius: 4px; +} + +.fragment:hover .clipboard, .clipboard.success { + opacity: .28; +} + +.clipboard:hover, .clipboard.success { + opacity: 1 !important; +} + +.clipboard:active:not([class~=success]) svg { + transform: scale(.91); +} + +.clipboard.success svg { + fill: #2EC82E; +} + +.clipboard.success { + border-color: #2EC82E; +} + +div.line { + font-family: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.2; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + +span.fold { + margin-left: 5px; + margin-right: 1px; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; + display: inline-block; + width: 12px; + height: 12px; + background-repeat:no-repeat; + background-position:center; +} + +span.lineno { + padding-right: 4px; + margin-right: 9px; + text-align: right; + border-right: 2px solid #00FF00; + color: black; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a, span.lineno a:visited { + color: #4665A2; + background-color: #D8D8D8; +} + +span.lineno a:hover { + color: #4665A2; + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +p.formulaDsp { + text-align: center; +} + +img.dark-mode-visible { + display: none; +} +img.light-mode-visible { + display: none; +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; + width: 104px; +} + +.compoundTemplParams { + color: #4665A2; + font-size: 80%; + line-height: 120%; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000; +} + +span.keywordtype { + color: #604020; +} + +span.keywordflow { + color: #E08000; +} + +span.comment { + color: #800000; +} + +span.preprocessor { + color: #806020; +} + +span.stringliteral { + color: #002080; +} + +span.charliteral { + color: #008080; +} + +span.xmlcdata { + color: black; +} + +span.vhdldigit { + color: #FF00FF; +} + +span.vhdlchar { + color: #000000; +} + +span.vhdlkeyword { + color: #700070; +} + +span.vhdllogic { + color: #FF0000; +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #2D4068; +} + +th.dirtab { + background-color: #374F7F; + color: #FFFFFF; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; +} + +.overload { + font-family: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: white; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; + padding: 0px; + padding-bottom: 1px; +} + +.paramname { + white-space: nowrap; + padding: 0px; + padding-bottom: 1px; + margin-left: 2px; +} + +.paramname em { + color: #602020; + font-style: normal; + margin-right: 1px; +} + +.paramname .paramdefval { + font-family: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.odd { + padding-left: 6px; + background-color: #F8F9FC; +} + +.directory tr.even { + padding-left: 6px; + background-color: white; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial,Helvetica; + line-height: normal; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.svg'); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.svg'); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.svg'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + border-radius: 4px; + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image: url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image: url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#283A5D; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color: #364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color: white; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color: #2A3D61; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image: url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* + +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +*/ + +dl.bug dt a, dl.deprecated dt a, dl.todo dt a, dl.test a { + font-weight: bold !important; +} + +dl.warning, dl.attention, dl.note, dl.deprecated, dl.bug, +dl.invariant, dl.pre, dl.post, dl.todo, dl.test, dl.remark { + padding: 10px; + margin: 10px 0px; + overflow: hidden; + margin-left: 0; + border-radius: 4px; +} + +dl.section dd { + margin-bottom: 2px; +} + +dl.warning, dl.attention { + background: #f8d1cc; + border-left: 8px solid #b61825; + color: #75070f; +} + +dl.warning dt, dl.attention dt { + color: #b61825; +} + +dl.note, dl.remark { + background: #faf3d8; + border-left: 8px solid #f3a600; + color: #5f4204; +} + +dl.note dt, dl.remark dt { + color: #f3a600; +} + +dl.todo { + background: #e4f3ff; + border-left: 8px solid #1879C4; + color: #274a5c; +} + +dl.todo dt { + color: #1879C4; +} + +dl.test { + background: #e8e8ff; + border-left: 8px solid #3939C4; + color: #1a1a5c; +} + +dl.test dt { + color: #3939C4; +} + +dl.bug dt a { + color: #5b2bdd !important; +} + +dl.bug { + background: #e4dafd; + border-left: 8px solid #5b2bdd; + color: #2a0d72; +} + +dl.bug dt a { + color: #5b2bdd !important; +} + +dl.deprecated { + background: #ecf0f3; + border-left: 8px solid #5b6269; + color: #43454a; +} + +dl.deprecated dt a { + color: #5b6269 !important; +} + +dl.section dd, dl.bug dd, dl.deprecated dd, dl.todo dd, dl.test dd { + margin-inline-start: 0px; +} + +dl.invariant, dl.pre, dl.post { + background: #d8f1e3; + border-left: 8px solid #44b86f; + color: #265532; +} + +dl.invariant dt, dl.pre dt, dl.post dt { + color: #44b86f; +} + + +#projectrow +{ + height: 56px; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; + padding-left: 0.5em; +} + +#projectname +{ + font-size: 200%; + font-family: Tahoma,Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font-size: 90%; + font-family: Tahoma,Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font-size: 50%; + font-family: 50% Tahoma,Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; + background-color: white; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("data:image/svg+xml;utf8,&%238595;") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,'DejaVu Sans',Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Verdana,'DejaVu Sans',Geneva,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 15px; +} + +div.toc li.level4 { + margin-left: 15px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +span.obfuscator { + display: none; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + /*white-space: nowrap;*/ + color: black; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip a { + color: #4665A2; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font-size: 12px; + font-family: Roboto,sans-serif; + line-height: 16px; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: white; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { + border-top-color: gray; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: white; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: gray; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: gray; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: gray; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: gray; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: gray; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +tt, code, kbd, samp +{ + display: inline-block; +} +/* @end */ + +u { + text-decoration: underline; +} + +details>summary { + list-style-type: none; +} + +details > summary::-webkit-details-marker { + display: none; +} + +details>summary::before { + content: "\25ba"; + padding-right:4px; + font-size: 80%; +} + +details[open]>summary::before { + content: "\25bc"; + padding-right:4px; + font-size: 80%; +} + diff --git a/doxygen.svg b/doxygen.svg new file mode 100644 index 0000000..79a7635 --- /dev/null +++ b/doxygen.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doxygen_crawl.html b/doxygen_crawl.html new file mode 100644 index 0000000..9d1d872 --- /dev/null +++ b/doxygen_crawl.html @@ -0,0 +1,129 @@ + + + +Validator / crawler helper + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dynsections.js b/dynsections.js new file mode 100644 index 0000000..8012854 --- /dev/null +++ b/dynsections.js @@ -0,0 +1,194 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ + +let dynsection = { + + // helper function + updateStripes : function() { + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); + $('table.directory tr'). + removeClass('odd').filter(':visible:odd').addClass('odd'); + }, + + toggleVisibility : function(linkObj) { + const base = $(linkObj).attr('id'); + const summary = $('#'+base+'-summary'); + const content = $('#'+base+'-content'); + const trigger = $('#'+base+'-trigger'); + const src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; + }, + + toggleLevel : function(level) { + $('table.directory tr').each(function() { + const l = this.id.split('_').length-1; + const i = $('#img'+this.id.substring(3)); + const a = $('#arr'+this.id.substring(3)); + if (l'); + // add vertical lines to other rows + $('span[class=lineno]').not(':eq(0)').append(''); + // add toggle controls to lines with fold divs + $('div[class=foldopen]').each(function() { + // extract specific id to use + const id = $(this).attr('id').replace('foldopen',''); + // extract start and end foldable fragment attributes + const start = $(this).attr('data-start'); + const end = $(this).attr('data-end'); + // replace normal fold span with controls for the first line of a foldable fragment + $(this).find('span[class=fold]:first').replaceWith(''); + // append div for folded (closed) representation + $(this).after(''); + // extract the first line from the "open" section to represent closed content + const line = $(this).children().first().clone(); + // remove any glow that might still be active on the original line + $(line).removeClass('glow'); + if (start) { + // if line already ends with a start marker (e.g. trailing {), remove it + $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); + } + // replace minus with plus symbol + $(line).find('span[class=fold]').css('background-image',codefold.plusImg[relPath]); + // append ellipsis + $(line).append(' '+start+''+end); + // insert constructed line into closed div + $('#foldclosed'+id).html(line); + }); + }, +}; +/* @license-end */ diff --git a/files.html b/files.html new file mode 100644 index 0000000..ad56c5a --- /dev/null +++ b/files.html @@ -0,0 +1,166 @@ + + + + + + + + + SDL Minigame: File List + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
File List
+
+
+
Here is a list of all documented files with brief descriptions:
+
[detail level 12]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  include
 AnimationHandler.h
 AssetManager.h
 ColliderComponent.h
 CollisionHandler.h
 Component.h
 Components.h
 Constants.h
 Defines.h
 Direction.h
 ECS.h
 Entity.h
 Game.h
 GameObject.h
 HealthComponent.h
 KeyboardController.h
 Manager.h
 Map.h
 PlayerComponent.h
 PopupWindow.h
 PowerupComponent.h
 ProjectileComponent.h
 SoundManager.h
 SpriteComponent.h
 StatEffectsComponent.h
 TextureDict.h
 TextureManager.h
 TileComponent.h
 TransformComponent.h
 Vector2D.h
  src
 CollisionHandler.cpp
 TransformComponent.cpp
+
+
+
+ + + + diff --git a/files_dup.js b/files_dup.js new file mode 100644 index 0000000..89e9042 --- /dev/null +++ b/files_dup.js @@ -0,0 +1,5 @@ +var files_dup = +[ + [ "include", "dir_d44c64559bbebec7f509842c48db8b23.html", "dir_d44c64559bbebec7f509842c48db8b23" ], + [ "src", "dir_68267d1309a1af8e8297ef4c3efbcdba.html", "dir_68267d1309a1af8e8297ef4c3efbcdba" ] +]; \ No newline at end of file diff --git a/folderclosed.svg b/folderclosed.svg new file mode 100644 index 0000000..b04bed2 --- /dev/null +++ b/folderclosed.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/folderclosedd.svg b/folderclosedd.svg new file mode 100644 index 0000000..52f0166 --- /dev/null +++ b/folderclosedd.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/folderopen.svg b/folderopen.svg new file mode 100644 index 0000000..f6896dd --- /dev/null +++ b/folderopen.svg @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/folderopend.svg b/folderopend.svg new file mode 100644 index 0000000..2d1f06e --- /dev/null +++ b/folderopend.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/functions.html b/functions.html new file mode 100644 index 0000000..4bdaf9d --- /dev/null +++ b/functions.html @@ -0,0 +1,195 @@ + + + + + + + + + SDL Minigame: Class Members + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- a -

+ + +

- d -

+ + +

- e -

+ + +

- g -

+ + +

- h -

+ + +

- i -

+ + +

- l -

    +
  • loadMap() : Map
  • +
+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+
+
+ + + + diff --git a/functions_enum.html b/functions_enum.html new file mode 100644 index 0000000..5c96175 --- /dev/null +++ b/functions_enum.html @@ -0,0 +1,130 @@ + + + + + + + + + SDL Minigame: Class Members - Enumerations + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented enums with links to the class documentation for each member:
+
+
+ + + + diff --git a/functions_func.html b/functions_func.html new file mode 100644 index 0000000..858057f --- /dev/null +++ b/functions_func.html @@ -0,0 +1,151 @@ + + + + + + + + + SDL Minigame: Class Members - Functions + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions with links to the class documentation for each member:
+
+
+ + + + diff --git a/graph_legend.html b/graph_legend.html new file mode 100644 index 0000000..a0378b3 --- /dev/null +++ b/graph_legend.html @@ -0,0 +1,189 @@ + + + + + + + + + SDL Minigame: Graph Legend + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Graph Legend
+
+
+

This page explains how to interpret the graphs that are generated by doxygen.

+

Consider the following example:

/*! Invisible class because of truncation */
+
class Invisible { };
+
+
/*! Truncated class, inheritance relation is hidden */
+
class Truncated : public Invisible { };
+
+
/* Class not documented with doxygen comments */
+
class Undocumented { };
+
+
/*! Class that is inherited using public inheritance */
+
class PublicBase : public Truncated { };
+
+
/*! A template class */
+
template<class T> class Templ { };
+
+
/*! Class that is inherited using protected inheritance */
+
class ProtectedBase { };
+
+
/*! Class that is inherited using private inheritance */
+
class PrivateBase { };
+
+
/*! Class that is used by the Inherited class */
+
class Used { };
+
+
/*! Super class that inherits a number of other classes */
+
class Inherited : public PublicBase,
+
protected ProtectedBase,
+
private PrivateBase,
+
public Undocumented,
+
public Templ<int>
+
{
+
private:
+
Used *m_usedClass;
+
};
+

This will result in the following graph:

+

The boxes in the above graph have the following meaning:

+
    +
  • +A filled gray box represents the struct or class for which the graph is generated.
  • +
  • +A box with a black border denotes a documented struct or class.
  • +
  • +A box with a gray border denotes an undocumented struct or class.
  • +
  • +A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
  • +
+

The arrows have the following meaning:

+
    +
  • +A blue arrow is used to visualize a public inheritance relation between two classes.
  • +
  • +A dark green arrow is used for protected inheritance.
  • +
  • +A dark red arrow is used for private inheritance.
  • +
  • +A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible.
  • +
  • +A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance.
  • +
+
+
+ + + + diff --git a/graph_legend.md5 b/graph_legend.md5 new file mode 100644 index 0000000..34a71d6 --- /dev/null +++ b/graph_legend.md5 @@ -0,0 +1 @@ +238bc3d95adc1929b3259d0c39010ed6 \ No newline at end of file diff --git a/graph_legend.svg b/graph_legend.svg new file mode 100644 index 0000000..10b28ec --- /dev/null +++ b/graph_legend.svg @@ -0,0 +1,167 @@ + + + + + + +Graph Legend + + +Node9 + + +Inherited + + + + + +Node10 + + +PublicBase + + + + + +Node10->Node9 + + + + + + + + +Node11 + + +Truncated + + + + + +Node11->Node10 + + + + + + + + +Node13 + + +ProtectedBase + + + + + +Node13->Node9 + + + + + + + + +Node14 + + +PrivateBase + + + + + +Node14->Node9 + + + + + + + + +Node15 + + +Undocumented + + + + + +Node15->Node9 + + + + + + + + +Node16 + + +Templ< int > + + + + + +Node16->Node9 + + + + + + + + +Node17 + + +Templ< T > + + + + + +Node17->Node16 + + + + + +< int > + + + +Node18 + + +Used + + + + + +Node18->Node9 + + + + + +m_usedClass + + + diff --git a/hierarchy.html b/hierarchy.html new file mode 100644 index 0000000..06e2018 --- /dev/null +++ b/hierarchy.html @@ -0,0 +1,159 @@ + + + + + + + + + SDL Minigame: Class Hierarchy + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class Hierarchy
+
+
+
+

Go to the graphical class hierarchy

+This inheritance list is sorted roughly, but not completely, alphabetically:
+
[detail level 12]
+ + + + + + + + + + + + + + + + + + + + + + + + +
 CAnimation
 CAssetManager
 CCollisionHandler
 CComponent
 CColliderComponent
 CHealthComponent
 CKeyboardController
 CPlayerComponent
 CPowerupComponent
 CProjectileComponent
 CSpriteComponent
 CStatEffectsComponent
 CTileComponent
 CTransformComponent
 CEntityMain class for any object in game, stores associations, labeling and components
 CGame
 CGameObject
 CManagerIs responsible for managing all entities
 CMap
 CPopupWindow
 CSoundManager
 CTextureDict
 CTextureManager
 CVector2D
+
+
+
+ + + + diff --git a/hierarchy.js b/hierarchy.js new file mode 100644 index 0000000..4359671 --- /dev/null +++ b/hierarchy.js @@ -0,0 +1,28 @@ +var hierarchy = +[ + [ "Animation", "structAnimation.html", null ], + [ "AssetManager", "classAssetManager.html", null ], + [ "CollisionHandler", "classCollisionHandler.html", null ], + [ "Component", "classComponent.html", [ + [ "ColliderComponent", "classColliderComponent.html", null ], + [ "HealthComponent", "classHealthComponent.html", null ], + [ "KeyboardController", "classKeyboardController.html", null ], + [ "PlayerComponent", "classPlayerComponent.html", null ], + [ "PowerupComponent", "classPowerupComponent.html", null ], + [ "ProjectileComponent", "classProjectileComponent.html", null ], + [ "SpriteComponent", "classSpriteComponent.html", null ], + [ "StatEffectsComponent", "classStatEffectsComponent.html", null ], + [ "TileComponent", "classTileComponent.html", null ], + [ "TransformComponent", "classTransformComponent.html", null ] + ] ], + [ "Entity", "classEntity.html", null ], + [ "Game", "classGame.html", null ], + [ "GameObject", "classGameObject.html", null ], + [ "Manager", "classManager.html", null ], + [ "Map", "classMap.html", null ], + [ "PopupWindow", "classPopupWindow.html", null ], + [ "SoundManager", "classSoundManager.html", null ], + [ "TextureDict", "classTextureDict.html", null ], + [ "TextureManager", "classTextureManager.html", null ], + [ "Vector2D", "classVector2D.html", null ] +]; \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..f40f823 --- /dev/null +++ b/index.html @@ -0,0 +1,130 @@ + + + + + + + + + SDL Minigame: Main Page + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SDL Minigame Documentation
+
+
+ +
+
+ + + + diff --git a/inherit_graph_0.map b/inherit_graph_0.map new file mode 100644 index 0000000..69e85c6 --- /dev/null +++ b/inherit_graph_0.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_0.md5 b/inherit_graph_0.md5 new file mode 100644 index 0000000..188c6ce --- /dev/null +++ b/inherit_graph_0.md5 @@ -0,0 +1 @@ +144b82de7c416a6d44a5b0d98a07750e \ No newline at end of file diff --git a/inherit_graph_0.svg b/inherit_graph_0.svg new file mode 100644 index 0000000..8b8c40d --- /dev/null +++ b/inherit_graph_0.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node0 + + +Animation + + + + + diff --git a/inherit_graph_1.map b/inherit_graph_1.map new file mode 100644 index 0000000..5fc2ed5 --- /dev/null +++ b/inherit_graph_1.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_1.md5 b/inherit_graph_1.md5 new file mode 100644 index 0000000..72ef6a5 --- /dev/null +++ b/inherit_graph_1.md5 @@ -0,0 +1 @@ +6a6f4ca16394296074a505ca4c242685 \ No newline at end of file diff --git a/inherit_graph_1.svg b/inherit_graph_1.svg new file mode 100644 index 0000000..51b37f8 --- /dev/null +++ b/inherit_graph_1.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node0 + + +AssetManager + + + + + diff --git a/inherit_graph_10.map b/inherit_graph_10.map new file mode 100644 index 0000000..6b17db4 --- /dev/null +++ b/inherit_graph_10.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_10.md5 b/inherit_graph_10.md5 new file mode 100644 index 0000000..e806558 --- /dev/null +++ b/inherit_graph_10.md5 @@ -0,0 +1 @@ +5fc313bd79960655b36d669cd9fe12aa \ No newline at end of file diff --git a/inherit_graph_10.svg b/inherit_graph_10.svg new file mode 100644 index 0000000..a9f6aa6 --- /dev/null +++ b/inherit_graph_10.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node0 + + +SoundManager + + + + + diff --git a/inherit_graph_11.map b/inherit_graph_11.map new file mode 100644 index 0000000..5f164fb --- /dev/null +++ b/inherit_graph_11.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_11.md5 b/inherit_graph_11.md5 new file mode 100644 index 0000000..1c899f4 --- /dev/null +++ b/inherit_graph_11.md5 @@ -0,0 +1 @@ +8021f398f0e3247852857dcf31d164f5 \ No newline at end of file diff --git a/inherit_graph_11.svg b/inherit_graph_11.svg new file mode 100644 index 0000000..1783185 --- /dev/null +++ b/inherit_graph_11.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node0 + + +TextureDict + + + + + diff --git a/inherit_graph_12.map b/inherit_graph_12.map new file mode 100644 index 0000000..2017f0d --- /dev/null +++ b/inherit_graph_12.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_12.md5 b/inherit_graph_12.md5 new file mode 100644 index 0000000..d0e281e --- /dev/null +++ b/inherit_graph_12.md5 @@ -0,0 +1 @@ +e9b56583422da82cde273e3fcf90ddf3 \ No newline at end of file diff --git a/inherit_graph_12.svg b/inherit_graph_12.svg new file mode 100644 index 0000000..f580d99 --- /dev/null +++ b/inherit_graph_12.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node0 + + +TextureManager + + + + + diff --git a/inherit_graph_13.map b/inherit_graph_13.map new file mode 100644 index 0000000..57df180 --- /dev/null +++ b/inherit_graph_13.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_13.md5 b/inherit_graph_13.md5 new file mode 100644 index 0000000..a04d730 --- /dev/null +++ b/inherit_graph_13.md5 @@ -0,0 +1 @@ +6246218a419de75307b08d700c9bf2b0 \ No newline at end of file diff --git a/inherit_graph_13.svg b/inherit_graph_13.svg new file mode 100644 index 0000000..4839f9e --- /dev/null +++ b/inherit_graph_13.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node0 + + +Vector2D + + + + + diff --git a/inherit_graph_2.map b/inherit_graph_2.map new file mode 100644 index 0000000..ae79065 --- /dev/null +++ b/inherit_graph_2.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_2.md5 b/inherit_graph_2.md5 new file mode 100644 index 0000000..7e29736 --- /dev/null +++ b/inherit_graph_2.md5 @@ -0,0 +1 @@ +deec844c5b6d4ec0f1ac67630cadd969 \ No newline at end of file diff --git a/inherit_graph_2.svg b/inherit_graph_2.svg new file mode 100644 index 0000000..4dddf4f --- /dev/null +++ b/inherit_graph_2.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node0 + + +CollisionHandler + + + + + diff --git a/inherit_graph_3.map b/inherit_graph_3.map new file mode 100644 index 0000000..f26e14c --- /dev/null +++ b/inherit_graph_3.map @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/inherit_graph_3.md5 b/inherit_graph_3.md5 new file mode 100644 index 0000000..77d07c7 --- /dev/null +++ b/inherit_graph_3.md5 @@ -0,0 +1 @@ +fa7ea6b1bca4d8d2452476d8b46b7571 \ No newline at end of file diff --git a/inherit_graph_3.svg b/inherit_graph_3.svg new file mode 100644 index 0000000..1d7383f --- /dev/null +++ b/inherit_graph_3.svg @@ -0,0 +1,201 @@ + + + + + + +Graphical Class Hierarchy + + +Node0 + + +Component + + + + + +Node1 + + +ColliderComponent + + + + + +Node0->Node1 + + + + + + + + +Node2 + + +HealthComponent + + + + + +Node0->Node2 + + + + + + + + +Node3 + + +KeyboardController + + + + + +Node0->Node3 + + + + + + + + +Node4 + + +PlayerComponent + + + + + +Node0->Node4 + + + + + + + + +Node5 + + +PowerupComponent + + + + + +Node0->Node5 + + + + + + + + +Node6 + + +ProjectileComponent + + + + + +Node0->Node6 + + + + + + + + +Node7 + + +SpriteComponent + + + + + +Node0->Node7 + + + + + + + + +Node8 + + +StatEffectsComponent + + + + + +Node0->Node8 + + + + + + + + +Node9 + + +TileComponent + + + + + +Node0->Node9 + + + + + + + + +Node10 + + +TransformComponent + + + + + +Node0->Node10 + + + + + + + + diff --git a/inherit_graph_4.map b/inherit_graph_4.map new file mode 100644 index 0000000..c6d246b --- /dev/null +++ b/inherit_graph_4.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_4.md5 b/inherit_graph_4.md5 new file mode 100644 index 0000000..866fe31 --- /dev/null +++ b/inherit_graph_4.md5 @@ -0,0 +1 @@ +8967802a6fadb4738a83c77b4fc4f2bc \ No newline at end of file diff --git a/inherit_graph_4.svg b/inherit_graph_4.svg new file mode 100644 index 0000000..4a83bfd --- /dev/null +++ b/inherit_graph_4.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node0 + + +Entity + + + + + diff --git a/inherit_graph_5.map b/inherit_graph_5.map new file mode 100644 index 0000000..fbe129f --- /dev/null +++ b/inherit_graph_5.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_5.md5 b/inherit_graph_5.md5 new file mode 100644 index 0000000..04937b0 --- /dev/null +++ b/inherit_graph_5.md5 @@ -0,0 +1 @@ +973c730813e080d88b4fa6a7b7715967 \ No newline at end of file diff --git a/inherit_graph_5.svg b/inherit_graph_5.svg new file mode 100644 index 0000000..ad416c1 --- /dev/null +++ b/inherit_graph_5.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node0 + + +Game + + + + + diff --git a/inherit_graph_6.map b/inherit_graph_6.map new file mode 100644 index 0000000..28a7f24 --- /dev/null +++ b/inherit_graph_6.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_6.md5 b/inherit_graph_6.md5 new file mode 100644 index 0000000..0be1321 --- /dev/null +++ b/inherit_graph_6.md5 @@ -0,0 +1 @@ +6d1087cc1af524cc0be1f9eb67c0ca74 \ No newline at end of file diff --git a/inherit_graph_6.svg b/inherit_graph_6.svg new file mode 100644 index 0000000..13cb247 --- /dev/null +++ b/inherit_graph_6.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node0 + + +GameObject + + + + + diff --git a/inherit_graph_7.map b/inherit_graph_7.map new file mode 100644 index 0000000..b42c9bd --- /dev/null +++ b/inherit_graph_7.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_7.md5 b/inherit_graph_7.md5 new file mode 100644 index 0000000..526a2d4 --- /dev/null +++ b/inherit_graph_7.md5 @@ -0,0 +1 @@ +14c7fc548e684a94c4c2a7527533290e \ No newline at end of file diff --git a/inherit_graph_7.svg b/inherit_graph_7.svg new file mode 100644 index 0000000..4a5a87a --- /dev/null +++ b/inherit_graph_7.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node0 + + +Manager + + + + + diff --git a/inherit_graph_8.map b/inherit_graph_8.map new file mode 100644 index 0000000..c3de714 --- /dev/null +++ b/inherit_graph_8.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_8.md5 b/inherit_graph_8.md5 new file mode 100644 index 0000000..c25bf9c --- /dev/null +++ b/inherit_graph_8.md5 @@ -0,0 +1 @@ +7160ca9605058cbfb8a0d41405282d36 \ No newline at end of file diff --git a/inherit_graph_8.svg b/inherit_graph_8.svg new file mode 100644 index 0000000..e60d199 --- /dev/null +++ b/inherit_graph_8.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node0 + + +Map + + + + + diff --git a/inherit_graph_9.map b/inherit_graph_9.map new file mode 100644 index 0000000..3a1fc18 --- /dev/null +++ b/inherit_graph_9.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_9.md5 b/inherit_graph_9.md5 new file mode 100644 index 0000000..bba7c60 --- /dev/null +++ b/inherit_graph_9.md5 @@ -0,0 +1 @@ +2dccff8ecbc6a89699142b77d7309962 \ No newline at end of file diff --git a/inherit_graph_9.svg b/inherit_graph_9.svg new file mode 100644 index 0000000..ea83b94 --- /dev/null +++ b/inherit_graph_9.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node0 + + +PopupWindow + + + + + diff --git a/inherits.html b/inherits.html new file mode 100644 index 0000000..31f772c --- /dev/null +++ b/inherits.html @@ -0,0 +1,147 @@ + + + + + + + + + SDL Minigame: Class Hierarchy + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+
SDL Minigame +  1.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class Hierarchy
+
+
+ + + + + + + + + + + + + + + +
+
+
+ + + + diff --git a/jquery.js b/jquery.js new file mode 100644 index 0000000..1dffb65 --- /dev/null +++ b/jquery.js @@ -0,0 +1,34 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=y.widget.extend({},this.options[t]),n=0;n
"),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/menu.js b/menu.js new file mode 100644 index 0000000..717761d --- /dev/null +++ b/menu.js @@ -0,0 +1,134 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + let result=''; + if ('children' in data) { + result+='
    '; + for (let i in data.children) { + let url; + const link = data.children[i].url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + } else { + url = relPath+link; + } + result+='
  • '+ + data.children[i].text+''+ + makeTree(data.children[i],relPath)+'
  • '; + } + result+='
'; + } + return result; + } + let searchBoxHtml; + if (searchEnabled) { + if (serverSide) { + searchBoxHtml='
'+ + '
'+ + '
 '+ + ''+ + '
'+ + '
'+ + '
'+ + '
'; + } else { + searchBoxHtml='
'+ + ''+ + ' '+ + ''+ + ''+ + ''+ + ''+ + ''+ + '
'; + } + } + + $('#main-nav').before('
'+ + ''+ + ''+ + '
'); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBoxHtml) { + $('#main-menu').append('
  • '); + } + const $mainMenuState = $('#main-menu-state'); + let prevWidth = 0; + if ($mainMenuState.length) { + const initResizableIfExists = function() { + if (typeof initResizable==='function') initResizable(); + } + // animate mobile menu + $mainMenuState.change(function() { + const $menu = $('#main-menu'); + let options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = () => $menu.css('display', 'block'); + $menu.hide().slideDown(options); + } else { + options['complete'] = () => $menu.css('display', 'none'); + $menu.show().slideUp(options); + } + }); + // set default menu visibility + const resetState = function() { + const $menu = $('#main-menu'); + const newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBoxHtml); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBoxHtml); + $('#searchBoxPos2').show(); + } + if (typeof searchBox!=='undefined') { + searchBox.CloseResultsWindow(); + } + prevWidth = newWidth; + } + } + $(window).ready(function() { resetState(); initResizableIfExists(); }); + $(window).resize(resetState); + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/menudata.js b/menudata.js new file mode 100644 index 0000000..119fd00 --- /dev/null +++ b/menudata.js @@ -0,0 +1,48 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Related Pages",url:"pages.html"}, +{text:"Classes",url:"annotated.html",children:[ +{text:"Class List",url:"annotated.html"}, +{text:"Class Index",url:"classes.html"}, +{text:"Class Hierarchy",url:"inherits.html"}, +{text:"Class Members",url:"functions.html",children:[ +{text:"All",url:"functions.html",children:[ +{text:"a",url:"functions.html#index_a"}, +{text:"d",url:"functions.html#index_d"}, +{text:"e",url:"functions.html#index_e"}, +{text:"g",url:"functions.html#index_g"}, +{text:"h",url:"functions.html#index_h"}, +{text:"i",url:"functions.html#index_i"}, +{text:"l",url:"functions.html#index_l"}, +{text:"r",url:"functions.html#index_r"}, +{text:"s",url:"functions.html#index_s"}, +{text:"t",url:"functions.html#index_t"}, +{text:"u",url:"functions.html#index_u"}]}, +{text:"Functions",url:"functions_func.html"}, +{text:"Enumerations",url:"functions_enum.html"}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}]}]} diff --git a/minus.svg b/minus.svg new file mode 100644 index 0000000..f70d0c1 --- /dev/null +++ b/minus.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/minusd.svg b/minusd.svg new file mode 100644 index 0000000..5f8e879 --- /dev/null +++ b/minusd.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/nav_f.png b/nav_f.png new file mode 100644 index 0000000..72a58a5 Binary files /dev/null and b/nav_f.png differ diff --git a/nav_fd.png b/nav_fd.png new file mode 100644 index 0000000..032fbdd Binary files /dev/null and b/nav_fd.png differ diff --git a/nav_g.png b/nav_g.png new file mode 100644 index 0000000..2093a23 Binary files /dev/null and b/nav_g.png differ diff --git a/nav_h.png b/nav_h.png new file mode 100644 index 0000000..33389b1 Binary files /dev/null and b/nav_h.png differ diff --git a/nav_hd.png b/nav_hd.png new file mode 100644 index 0000000..de80f18 Binary files /dev/null and b/nav_hd.png differ diff --git a/navtree.css b/navtree.css new file mode 100644 index 0000000..6b1e5e4 --- /dev/null +++ b/navtree.css @@ -0,0 +1,149 @@ +#nav-tree .children_ul { + margin:0; + padding:4px; +} + +#nav-tree ul { + list-style:none outside none; + margin:0px; + padding:0px; +} + +#nav-tree li { + white-space:nowrap; + margin:0px; + padding:0px; +} + +#nav-tree .plus { + margin:0px; +} + +#nav-tree .selected { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: white; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +#nav-tree .selected .arrow { + color: #9CAFD4; + text-shadow: none; +} + +#nav-tree img { + margin:0px; + padding:0px; + border:0px; + vertical-align: middle; +} + +#nav-tree a { + text-decoration:none; + padding:0px; + margin:0px; +} + +#nav-tree .label { + margin:0px; + padding:0px; + font: 12px 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +} + +#nav-tree .label a { + padding:2px; +} + +#nav-tree .selected a { + text-decoration:none; + color:white; +} + +#nav-tree .children_ul { + margin:0px; + padding:0px; +} + +#nav-tree .item { + margin:0px; + padding:0px; +} + +#nav-tree { + padding: 0px 0px; + font-size:14px; + overflow:auto; +} + +#doc-content { + overflow:auto; + display:block; + padding:0px; + margin:0px; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#side-nav { + padding:0 6px 0 0; + margin: 0px; + display:block; + position: absolute; + left: 0px; + width: $width; + overflow : hidden; +} + +.ui-resizable .ui-resizable-handle { + display:block; +} + +.ui-resizable-e { + background-image:url('splitbar.png'); + background-size:100%; + background-repeat:repeat-y; + background-attachment: scroll; + cursor:ew-resize; + height:100%; + right:0; + top:0; + width:6px; +} + +.ui-resizable-handle { + display:none; + font-size:0.1px; + position:absolute; + z-index:1; +} + +#nav-tree-contents { + margin: 6px 0px 0px 0px; +} + +#nav-tree { + background-repeat:repeat-x; + background-color: #F9FAFC; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#nav-sync { + position:absolute; + top:5px; + right:24px; + z-index:0; +} + +#nav-sync img { + opacity:0.3; +} + +#nav-sync img:hover { + opacity:0.9; +} + +@media print +{ + #nav-tree { display: none; } + div.ui-resizable-handle { display: none; position: relative; } +} + diff --git a/navtree.js b/navtree.js new file mode 100644 index 0000000..884b79b --- /dev/null +++ b/navtree.js @@ -0,0 +1,482 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ + +function initNavTree(toroot,relpath) { + let navTreeSubIndices = []; + const ARROW_DOWN = '▼'; + const ARROW_RIGHT = '►'; + const NAVPATH_COOKIE_NAME = ''+'navpath'; + + const getData = function(varName) { + const i = varName.lastIndexOf('/'); + const n = i>=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/-/g,'_')); + } + + const stripPath = function(uri) { + return uri.substring(uri.lastIndexOf('/')+1); + } + + const stripPath2 = function(uri) { + const i = uri.lastIndexOf('/'); + const s = uri.substring(i+1); + const m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; + } + + const hashValue = function() { + return $(location).attr('hash').substring(1).replace(/[^\w-]/g,''); + } + + const hashUrl = function() { + return '#'+hashValue(); + } + + const pathName = function() { + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;()]/g, ''); + } + + const storeLink = function(link) { + if (!$("#nav-sync").hasClass('sync')) { + Cookie.writeSetting(NAVPATH_COOKIE_NAME,link,0); + } + } + + const deleteLink = function() { + Cookie.eraseSetting(NAVPATH_COOKIE_NAME); + } + + const cachedLink = function() { + return Cookie.readSetting(NAVPATH_COOKIE_NAME,''); + } + + const getScript = function(scriptName,func) { + const head = document.getElementsByTagName("head")[0]; + const script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + head.appendChild(script); + } + + const createIndent = function(o,domNode,node) { + let level=-1; + let n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + const imgNode = document.createElement("span"); + imgNode.className = 'arrow'; + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.innerHTML=ARROW_RIGHT; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.innerHTML=ARROW_RIGHT; + node.expanded = false; + } else { + expandNode(o, node, false, true); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + let span = document.createElement("span"); + span.className = 'arrow'; + span.style.width = 16*(level+1)+'px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } + } + + let animationInProgress = false; + + const gotoAnchor = function(anchor,aname) { + let pos, docContent = $('#doc-content'); + let ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || ancParent.hasClass('memtitle') || + ancParent.hasClass('fieldname') || ancParent.hasClass('fieldtype') || + ancParent.is(':header')) { + pos = ancParent.position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + const dcOffset = docContent.offset().top; + const dcHeight = docContent.height(); + const dcScrHeight = docContent[0].scrollHeight + const dcScrTop = docContent.scrollTop(); + let dist = Math.abs(Math.min(pos-dcOffset,dcScrHeight-dcHeight-dcScrTop)); + animationInProgress = true; + docContent.animate({ + scrollTop: pos + dcScrTop - dcOffset + },Math.max(50,Math.min(500,dist)),function() { + window.location.href=aname; + animationInProgress=false; + }); + } + } + + const newNode = function(o, po, text, link, childrenData, lastNode) { + const node = { + children : [], + childrenData : childrenData, + depth : po.depth + 1, + relpath : po.relpath, + isLast : lastNode, + li : document.createElement("li"), + parentNode : po, + itemDiv : document.createElement("div"), + labelSpan : document.createElement("span"), + label : document.createTextNode(text), + expanded : false, + childrenUL : null, + getChildrenUL : function() { + if (!this.childrenUL) { + this.childrenUL = document.createElement("ul"); + this.childrenUL.className = "children_ul"; + this.childrenUL.style.display = "none"; + this.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }, + }; + + node.itemDiv.className = "item"; + node.labelSpan.className = "label"; + createIndent(o,node.itemDiv,node); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + const a = document.createElement("a"); + node.labelSpan.appendChild(a); + po.getChildrenUL().appendChild(node.li); + a.appendChild(node.label); + if (link) { + let url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + const aname = '#'+link.split('#')[1]; + const srcPage = stripPath(pathName()); + const targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : aname; + a.onclick = function() { + storeLink(link); + aPPar = $(a).parent().parent(); + if (!aPPar.hasClass('selected')) { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + aPPar.addClass('selected'); + aPPar.attr('id','selected'); + } + const anchor = $(aname); + gotoAnchor(anchor,aname); + }; + } else { + a.href = url; + a.onclick = () => storeLink(link); + } + } else if (childrenData != null) { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + return node; + } + + const showRoot = function() { + const headerHeight = $("#top").height(); + const footerHeight = $("#nav-path").height(); + const windowHeight = $(window).height() - headerHeight - footerHeight; + (function() { // retry until we can scroll to the selected item + try { + const navtree=$('#nav-tree'); + navtree.scrollTo('#selected',100,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); + } + + const expandNode = function(o, node, imm, setFocus) { + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + const varName = node.childrenData; + getScript(node.relpath+varName,function() { + node.childrenData = getData(varName); + expandNode(o, node, imm, setFocus); + }); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).slideDown("fast"); + node.plus_img.innerHTML = ARROW_DOWN; + node.expanded = true; + if (setFocus) { + $(node.expandToggle).focus(); + } + } + } + } + + const glowEffect = function(n,duration) { + n.addClass('glow').delay(duration).queue(function(next) { + $(this).removeClass('glow');next(); + }); + } + + const highlightAnchor = function() { + const aname = hashUrl(); + const anchor = $(aname); + if (anchor.parent().attr('class')=='memItemLeft') { + let rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname') { + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype') { + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } + gotoAnchor(anchor,aname); + } + + const selectAndHighlight = function(hash,n) { + let a; + if (hash) { + const link=stripPath(pathName())+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + let topOffset=5; + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + topOffset+=25; + } + $('#nav-sync').css('top',topOffset+'px'); + showRoot(); + } + + const showNode = function(o, node, index, hash) { + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + const varName = node.childrenData; + getScript(node.relpath+varName,function() { + node.childrenData = getData(varName); + showNode(o,node,index,hash); + }); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.innerHTML = ARROW_DOWN; + node.expanded = true; + const n = node.children[o.breadcrumbs[index]]; + if (index+11 ? '#'+parts[1].replace(/[^\w-]/g,'') : ''; + } + if (hash.match(/^#l\d+$/)) { + const anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + const url=root+hash; + let i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function() { + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + }); + } + } + + const showSyncOff = function(n,relpath) { + n.html(''); + } + + const showSyncOn = function(n,relpath) { + n.html(''); + } + + const o = { + toroot : toroot, + node : { + childrenData : NAVTREE, + children : [], + childrenUL : document.createElement("ul"), + getChildrenUL : function() { return this.childrenUL }, + li : document.getElementById("nav-tree-contents"), + depth : 0, + relpath : relpath, + expanded : false, + isLast : true, + plus_img : document.createElement("span"), + }, + }; + o.node.li.appendChild(o.node.childrenUL); + o.node.plus_img.className = 'arrow'; + o.node.plus_img.innerHTML = ARROW_RIGHT; + + const navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + + navSync.click(() => { + const navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2(pathName())+hashUrl()); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } + }); + + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + + $(window).bind('hashchange', () => { + if (window.location.hash && window.location.hash.length>1) { + let a; + if ($(location).attr('hash')) { + const clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/ + + + + + + + + SDL Minigame: Related Pages + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    +
    SDL Minigame +  1.0 +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Related Pages
    +
    +
    +
    Here is a list of all related documentation pages:
    +
    +
    + + + + diff --git a/plus.svg b/plus.svg new file mode 100644 index 0000000..0752016 --- /dev/null +++ b/plus.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/plusd.svg b/plusd.svg new file mode 100644 index 0000000..0c65bfe --- /dev/null +++ b/plusd.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/resize.js b/resize.js new file mode 100644 index 0000000..6ad2ae8 --- /dev/null +++ b/resize.js @@ -0,0 +1,109 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ + +function initResizable() { + let sidenav,navtree,content,header,footer,barWidth=6; + const RESIZE_COOKIE_NAME = ''+'width'; + + function resizeWidth() { + const sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + if (typeof page_layout!=='undefined' && page_layout==1) { + footer.css({marginLeft:parseInt(sidenavWidth)+"px"}); + } + Cookie.writeSetting(RESIZE_COOKIE_NAME,sidenavWidth-barWidth); + } + + function restoreWidth(navWidth) { + content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + if (typeof page_layout!=='undefined' && page_layout==1) { + footer.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + } + sidenav.css({width:navWidth + "px"}); + } + + function resizeHeight() { + const headerHeight = header.outerHeight(); + const footerHeight = footer.outerHeight(); + const windowHeight = $(window).height(); + let contentHeight,navtreeHeight,sideNavHeight; + if (typeof page_layout==='undefined' || page_layout==0) { /* DISABLE_INDEX=NO */ + contentHeight = windowHeight - headerHeight - footerHeight; + navtreeHeight = contentHeight; + sideNavHeight = contentHeight; + } else if (page_layout==1) { /* DISABLE_INDEX=YES */ + contentHeight = windowHeight - footerHeight; + navtreeHeight = windowHeight - headerHeight; + sideNavHeight = windowHeight; + } + content.css({height:contentHeight + "px"}); + navtree.css({height:navtreeHeight + "px"}); + sidenav.css({height:sideNavHeight + "px"}); + if (location.hash.slice(1)) { + (document.getElementById(location.hash.slice(1))||document.body).scrollIntoView(); + } + } + + function collapseExpand() { + let newWidth; + if (sidenav.width()>0) { + newWidth=0; + } else { + const width = Cookie.readSetting(RESIZE_COOKIE_NAME,250); + newWidth = (width>250 && width<$(window).width()) ? width : 250; + } + restoreWidth(newWidth); + const sidenavWidth = $(sidenav).outerWidth(); + Cookie.writeSetting(RESIZE_COOKIE_NAME,sidenavWidth-barWidth); + } + + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: () => resizeWidth() }); + $(sidenav).resizable({ minWidth: 0 }); + $(window).resize(() => resizeHeight()); + const device = navigator.userAgent.toLowerCase(); + const touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + const width = Cookie.readSetting(RESIZE_COOKIE_NAME,250); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + const url = location.href; + const i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + const _preventDefault = (evt) => evt.preventDefault(); + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(".ui-resizable-handle").dblclick(collapseExpand); + $(window).on('load',resizeHeight); +} +/* @license-end */ diff --git a/search/all_0.js b/search/all_0.js new file mode 100644 index 0000000..673c163 --- /dev/null +++ b/search/all_0.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['addcomponent_0',['addComponent',['../classEntity.html#ae587a44fd803d7918a45dbfe531c962d',1,'Entity']]], + ['addentity_1',['addEntity',['../classManager.html#a6be095e14d18da37fdb2f8bdb4b48b5a',1,'Manager']]], + ['addgroup_2',['addGroup',['../classEntity.html#a712c05a013e928943c26c3a5b1467f01',1,'Entity']]], + ['addtogroup_3',['addToGroup',['../classManager.html#a90f24c619760c3e1c07b4cea758b28a5',1,'Manager']]], + ['addtoteam_4',['addToTeam',['../classManager.html#a7e9e6e12ec7125512be184559ee535c9',1,'Manager']]], + ['animation_5',['Animation',['../structAnimation.html',1,'']]], + ['assetmanager_6',['AssetManager',['../classAssetManager.html',1,'']]] +]; diff --git a/search/all_1.js b/search/all_1.js new file mode 100644 index 0000000..33871f2 --- /dev/null +++ b/search/all_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['blue_0',['BLUE',['../classEntity.html#ac6bf07a435aa8148464dd36e8ba11df7a1b3e1ee9bff86431dea6b181365ba65f',1,'Entity']]] +]; diff --git a/search/all_10.js b/search/all_10.js new file mode 100644 index 0000000..53c7f40 --- /dev/null +++ b/search/all_10.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['update_0',['update',['../classEntity.html#af4e16c727ddfe4d27fe0edeb4b9261aa',1,'Entity::update()'],['../classManager.html#af43da42550bd9746c5ea61a6aeee80de',1,'Manager::update()'],['../classTransformComponent.html#a2a5fefaf80674dbd9854e7d0386a64e7',1,'TransformComponent::update()']]] +]; diff --git a/search/all_11.js b/search/all_11.js new file mode 100644 index 0000000..cd06f6b --- /dev/null +++ b/search/all_11.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['vector2d_0',['Vector2D',['../classVector2D.html',1,'']]] +]; diff --git a/search/all_2.js b/search/all_2.js new file mode 100644 index 0000000..1f42383 --- /dev/null +++ b/search/all_2.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['collidercomponent_0',['ColliderComponent',['../classColliderComponent.html',1,'']]], + ['colliders_1',['COLLIDERS',['../classEntity.html#a9449a7a0ad2c9ae5ee85ef2401382f2badffa23e89f914b343e7811b01a8f756c',1,'Entity']]], + ['collisionhandler_2',['CollisionHandler',['../classCollisionHandler.html',1,'']]], + ['collisionhandler_2ecpp_3',['CollisionHandler.cpp',['../CollisionHandler_8cpp.html',1,'']]], + ['collisionhandler_2eh_4',['CollisionHandler.h',['../CollisionHandler_8h.html',1,'']]], + ['component_5',['Component',['../classComponent.html',1,'']]] +]; diff --git a/search/all_3.js b/search/all_3.js new file mode 100644 index 0000000..250639f --- /dev/null +++ b/search/all_3.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['delgroup_0',['delGroup',['../classEntity.html#ae3902aa921b519ed2c25cf4676c9cb5d',1,'Entity']]], + ['deprecated_20list_1',['Deprecated List',['../deprecated.html',1,'']]], + ['destroy_2',['destroy',['../classEntity.html#a691dbe5f9ec930c27af2af0b97907a9e',1,'Entity']]], + ['draw_3',['draw',['../classEntity.html#ae68fc12f1c715bf17a20f0e4a754ae50',1,'Entity::draw()'],['../classManager.html#ad688d8d92b4d0c1049913500ca9ba9f3',1,'Manager::draw()']]] +]; diff --git a/search/all_4.js b/search/all_4.js new file mode 100644 index 0000000..72c1bac --- /dev/null +++ b/search/all_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['enemies_0',['ENEMIES',['../classEntity.html#a9449a7a0ad2c9ae5ee85ef2401382f2baf0d62ea6bc0a041d009322e77e1253c0',1,'Entity']]], + ['entity_1',['Entity',['../classEntity.html',1,'Entity'],['../classEntity.html#aad34087e815ec2da644b86ae2357039b',1,'Entity::Entity()']]] +]; diff --git a/search/all_5.js b/search/all_5.js new file mode 100644 index 0000000..fdb9a5d --- /dev/null +++ b/search/all_5.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['game_0',['Game',['../classGame.html',1,'']]], + ['gameobject_1',['GameObject',['../classGameObject.html',1,'']]], + ['getall_2',['getAll',['../classManager.html#aae16a3d76e450281012c526541ebeb5b',1,'Manager']]], + ['getanyintersection_3',['getAnyIntersection',['../classCollisionHandler.html#a08369acd5338b7d1558f152ef54fb79f',1,'CollisionHandler::getAnyIntersection(Entity *entity, Vector2D posMod={}, std::initializer_list< Entity::GroupLabel > const &groupLabels={}, std::initializer_list< Entity::TeamLabel > const &teamLabels={}, bool negateTeam=false)'],['../classCollisionHandler.html#a376bafa9253282edbd5691cd5ca86a94',1,'CollisionHandler::getAnyIntersection(Entity *entity, Vector2D posMod, std::initializer_list< Entity::GroupLabel > const &groupLabels, std::initializer_list< Entity::TeamLabel > const &teamLabels, bool negateTeam)'],['../classCollisionHandler.html#af6961b60d5b0b52d7f9bcded1cc953db',1,'CollisionHandler::getAnyIntersection(Entity *entity, Vector2D posMod, std::initializer_list< Entity::GroupLabel > const &groupLabels, std::initializer_list< Entity::TeamLabel > const &teamLabels, bool negateTeam)'],['../classCollisionHandler.html#a2fb7c155b4937a6d28ab04de0186d2ae',1,'CollisionHandler::getAnyIntersection(Entity *entity, Vector2D posMod, std::initializer_list< Entity::GroupLabel > const &groupLabels, std::initializer_list< Entity::TeamLabel > const &teamLabels, bool negateTeam)']]], + ['getcomponent_4',['getComponent',['../classEntity.html#ad5ce9d4246498a5a2ffd163a2d38c98f',1,'Entity']]], + ['getgroup_5',['getGroup',['../classManager.html#a365f24fd26d214314ca5a65ca3a647b1',1,'Manager']]], + ['getgroupbitset_6',['getGroupBitSet',['../classEntity.html#adf88082fc18a9ee0294072a0e028453d',1,'Entity']]], + ['getmanager_7',['getManager',['../classEntity.html#acdf7c696ee39da0d8ebddb1976ea0abe',1,'Entity']]], + ['getteam_8',['getTeam',['../classEntity.html#af24dd98377b44895122ae39aab5f4147',1,'Entity::getTeam()'],['../classManager.html#a3a2c9ef72674315e8382902690043bc9',1,'Manager::getTeam()']]], + ['grouplabel_9',['GroupLabel',['../classEntity.html#a9449a7a0ad2c9ae5ee85ef2401382f2b',1,'Entity']]] +]; diff --git a/search/all_6.js b/search/all_6.js new file mode 100644 index 0000000..d7d4de4 --- /dev/null +++ b/search/all_6.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['hascomponent_0',['hasComponent',['../classEntity.html#aa622a8d79153a90d0e3b9b992ca2d38b',1,'Entity']]], + ['hasgroup_1',['hasGroup',['../classEntity.html#acfb6240560624c026ffc24af4d469b68',1,'Entity']]], + ['healthcomponent_2',['HealthComponent',['../classHealthComponent.html',1,'']]], + ['hearts_3',['HEARTS',['../classEntity.html#a9449a7a0ad2c9ae5ee85ef2401382f2bad52d2d4c0b7218c48897d2e69e156ba4',1,'Entity']]] +]; diff --git a/search/all_7.js b/search/all_7.js new file mode 100644 index 0000000..f4fa4ee --- /dev/null +++ b/search/all_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['isactive_0',['isActive',['../classEntity.html#aea1c1568b4123d989c5310697030ad77',1,'Entity']]] +]; diff --git a/search/all_8.js b/search/all_8.js new file mode 100644 index 0000000..824e6b9 --- /dev/null +++ b/search/all_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['keyboardcontroller_0',['KeyboardController',['../classKeyboardController.html',1,'']]] +]; diff --git a/search/all_9.js b/search/all_9.js new file mode 100644 index 0000000..f1efc5b --- /dev/null +++ b/search/all_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['list_0',['List',['../deprecated.html',1,'Deprecated List'],['../todo.html',1,'Todo List']]], + ['loadmap_1',['loadMap',['../classMap.html#a0ff6bf2deefec4235471cb388c890c9f',1,'Map']]] +]; diff --git a/search/all_a.js b/search/all_a.js new file mode 100644 index 0000000..32a6d39 --- /dev/null +++ b/search/all_a.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['manager_0',['Manager',['../classManager.html',1,'']]], + ['map_1',['Map',['../classMap.html',1,'']]], + ['maptiles_2',['MAPTILES',['../classEntity.html#a9449a7a0ad2c9ae5ee85ef2401382f2ba924bf7180d60940e428a9166b51ce0f4',1,'Entity']]] +]; diff --git a/search/all_b.js b/search/all_b.js new file mode 100644 index 0000000..8a04b5e --- /dev/null +++ b/search/all_b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['none_0',['NONE',['../classEntity.html#ac6bf07a435aa8148464dd36e8ba11df7ab50339a10e1de285ac99d4c3990b8693',1,'Entity']]] +]; diff --git a/search/all_c.js b/search/all_c.js new file mode 100644 index 0000000..b310740 --- /dev/null +++ b/search/all_c.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['playercomponent_0',['PlayerComponent',['../classPlayerComponent.html',1,'']]], + ['players_1',['PLAYERS',['../classEntity.html#a9449a7a0ad2c9ae5ee85ef2401382f2bae334ea4bb6fd38968f6809b091120ad8',1,'Entity']]], + ['popupwindow_2',['PopupWindow',['../classPopupWindow.html',1,'']]], + ['powerupcomponent_3',['PowerupComponent',['../classPowerupComponent.html',1,'']]], + ['powerups_4',['POWERUPS',['../classEntity.html#a9449a7a0ad2c9ae5ee85ef2401382f2ba5262638eb9e1d1af560f3d0f9ad133e4',1,'Entity']]], + ['projectile_5',['PROJECTILE',['../classEntity.html#a9449a7a0ad2c9ae5ee85ef2401382f2ba46dccab75ce652352e52086601fdc294',1,'Entity']]], + ['projectilecomponent_6',['ProjectileComponent',['../classProjectileComponent.html',1,'']]] +]; diff --git a/search/all_d.js b/search/all_d.js new file mode 100644 index 0000000..c305614 --- /dev/null +++ b/search/all_d.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['red_0',['RED',['../classEntity.html#ac6bf07a435aa8148464dd36e8ba11df7aa2d9547b5d3dd9f05984475f7c926da0',1,'Entity']]], + ['refresh_1',['refresh',['../classManager.html#adc5c66704fd1b0a9b9d38de8fdcb3748',1,'Manager']]] +]; diff --git a/search/all_e.js b/search/all_e.js new file mode 100644 index 0000000..3c8cac8 --- /dev/null +++ b/search/all_e.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['setteam_0',['setTeam',['../classEntity.html#adfef727ff63b3779c7f9d7e2467e4d18',1,'Entity']]], + ['soundmanager_1',['SoundManager',['../classSoundManager.html',1,'']]], + ['spritecomponent_2',['SpriteComponent',['../classSpriteComponent.html',1,'']]], + ['stateffectscomponent_3',['StatEffectsComponent',['../classStatEffectsComponent.html',1,'']]] +]; diff --git a/search/all_f.js b/search/all_f.js new file mode 100644 index 0000000..eeed269 --- /dev/null +++ b/search/all_f.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['teamlabel_0',['TeamLabel',['../classEntity.html#ac6bf07a435aa8148464dd36e8ba11df7',1,'Entity']]], + ['texturedict_1',['TextureDict',['../classTextureDict.html',1,'']]], + ['texturemanager_2',['TextureManager',['../classTextureManager.html',1,'']]], + ['tilecomponent_3',['TileComponent',['../classTileComponent.html',1,'']]], + ['todo_20list_4',['Todo List',['../todo.html',1,'']]], + ['transformcomponent_5',['TransformComponent',['../classTransformComponent.html',1,'']]], + ['transformcomponent_2ecpp_6',['TransformComponent.cpp',['../TransformComponent_8cpp.html',1,'']]] +]; diff --git a/search/classes_0.js b/search/classes_0.js new file mode 100644 index 0000000..f599959 --- /dev/null +++ b/search/classes_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['animation_0',['Animation',['../structAnimation.html',1,'']]], + ['assetmanager_1',['AssetManager',['../classAssetManager.html',1,'']]] +]; diff --git a/search/classes_1.js b/search/classes_1.js new file mode 100644 index 0000000..dca9a40 --- /dev/null +++ b/search/classes_1.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['collidercomponent_0',['ColliderComponent',['../classColliderComponent.html',1,'']]], + ['collisionhandler_1',['CollisionHandler',['../classCollisionHandler.html',1,'']]], + ['component_2',['Component',['../classComponent.html',1,'']]] +]; diff --git a/search/classes_2.js b/search/classes_2.js new file mode 100644 index 0000000..a4a04fa --- /dev/null +++ b/search/classes_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['entity_0',['Entity',['../classEntity.html',1,'']]] +]; diff --git a/search/classes_3.js b/search/classes_3.js new file mode 100644 index 0000000..b0fe528 --- /dev/null +++ b/search/classes_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['game_0',['Game',['../classGame.html',1,'']]], + ['gameobject_1',['GameObject',['../classGameObject.html',1,'']]] +]; diff --git a/search/classes_4.js b/search/classes_4.js new file mode 100644 index 0000000..6a2ee25 --- /dev/null +++ b/search/classes_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['healthcomponent_0',['HealthComponent',['../classHealthComponent.html',1,'']]] +]; diff --git a/search/classes_5.js b/search/classes_5.js new file mode 100644 index 0000000..824e6b9 --- /dev/null +++ b/search/classes_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['keyboardcontroller_0',['KeyboardController',['../classKeyboardController.html',1,'']]] +]; diff --git a/search/classes_6.js b/search/classes_6.js new file mode 100644 index 0000000..3c303e7 --- /dev/null +++ b/search/classes_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['manager_0',['Manager',['../classManager.html',1,'']]], + ['map_1',['Map',['../classMap.html',1,'']]] +]; diff --git a/search/classes_7.js b/search/classes_7.js new file mode 100644 index 0000000..9e7494e --- /dev/null +++ b/search/classes_7.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['playercomponent_0',['PlayerComponent',['../classPlayerComponent.html',1,'']]], + ['popupwindow_1',['PopupWindow',['../classPopupWindow.html',1,'']]], + ['powerupcomponent_2',['PowerupComponent',['../classPowerupComponent.html',1,'']]], + ['projectilecomponent_3',['ProjectileComponent',['../classProjectileComponent.html',1,'']]] +]; diff --git a/search/classes_8.js b/search/classes_8.js new file mode 100644 index 0000000..f19d618 --- /dev/null +++ b/search/classes_8.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['soundmanager_0',['SoundManager',['../classSoundManager.html',1,'']]], + ['spritecomponent_1',['SpriteComponent',['../classSpriteComponent.html',1,'']]], + ['stateffectscomponent_2',['StatEffectsComponent',['../classStatEffectsComponent.html',1,'']]] +]; diff --git a/search/classes_9.js b/search/classes_9.js new file mode 100644 index 0000000..44a920e --- /dev/null +++ b/search/classes_9.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['texturedict_0',['TextureDict',['../classTextureDict.html',1,'']]], + ['texturemanager_1',['TextureManager',['../classTextureManager.html',1,'']]], + ['tilecomponent_2',['TileComponent',['../classTileComponent.html',1,'']]], + ['transformcomponent_3',['TransformComponent',['../classTransformComponent.html',1,'']]] +]; diff --git a/search/classes_a.js b/search/classes_a.js new file mode 100644 index 0000000..cd06f6b --- /dev/null +++ b/search/classes_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['vector2d_0',['Vector2D',['../classVector2D.html',1,'']]] +]; diff --git a/search/close.svg b/search/close.svg new file mode 100644 index 0000000..337d6cc --- /dev/null +++ b/search/close.svg @@ -0,0 +1,18 @@ + + + + + + diff --git a/search/enums_0.js b/search/enums_0.js new file mode 100644 index 0000000..d60c908 --- /dev/null +++ b/search/enums_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['grouplabel_0',['GroupLabel',['../classEntity.html#a9449a7a0ad2c9ae5ee85ef2401382f2b',1,'Entity']]] +]; diff --git a/search/enums_1.js b/search/enums_1.js new file mode 100644 index 0000000..7781579 --- /dev/null +++ b/search/enums_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['teamlabel_0',['TeamLabel',['../classEntity.html#ac6bf07a435aa8148464dd36e8ba11df7',1,'Entity']]] +]; diff --git a/search/enumvalues_0.js b/search/enumvalues_0.js new file mode 100644 index 0000000..33871f2 --- /dev/null +++ b/search/enumvalues_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['blue_0',['BLUE',['../classEntity.html#ac6bf07a435aa8148464dd36e8ba11df7a1b3e1ee9bff86431dea6b181365ba65f',1,'Entity']]] +]; diff --git a/search/enumvalues_1.js b/search/enumvalues_1.js new file mode 100644 index 0000000..84cace6 --- /dev/null +++ b/search/enumvalues_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['colliders_0',['COLLIDERS',['../classEntity.html#a9449a7a0ad2c9ae5ee85ef2401382f2badffa23e89f914b343e7811b01a8f756c',1,'Entity']]] +]; diff --git a/search/enumvalues_2.js b/search/enumvalues_2.js new file mode 100644 index 0000000..0ee60ed --- /dev/null +++ b/search/enumvalues_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['enemies_0',['ENEMIES',['../classEntity.html#a9449a7a0ad2c9ae5ee85ef2401382f2baf0d62ea6bc0a041d009322e77e1253c0',1,'Entity']]] +]; diff --git a/search/enumvalues_3.js b/search/enumvalues_3.js new file mode 100644 index 0000000..f5e4948 --- /dev/null +++ b/search/enumvalues_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['hearts_0',['HEARTS',['../classEntity.html#a9449a7a0ad2c9ae5ee85ef2401382f2bad52d2d4c0b7218c48897d2e69e156ba4',1,'Entity']]] +]; diff --git a/search/enumvalues_4.js b/search/enumvalues_4.js new file mode 100644 index 0000000..82be236 --- /dev/null +++ b/search/enumvalues_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['maptiles_0',['MAPTILES',['../classEntity.html#a9449a7a0ad2c9ae5ee85ef2401382f2ba924bf7180d60940e428a9166b51ce0f4',1,'Entity']]] +]; diff --git a/search/enumvalues_5.js b/search/enumvalues_5.js new file mode 100644 index 0000000..8a04b5e --- /dev/null +++ b/search/enumvalues_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['none_0',['NONE',['../classEntity.html#ac6bf07a435aa8148464dd36e8ba11df7ab50339a10e1de285ac99d4c3990b8693',1,'Entity']]] +]; diff --git a/search/enumvalues_6.js b/search/enumvalues_6.js new file mode 100644 index 0000000..4f4e634 --- /dev/null +++ b/search/enumvalues_6.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['players_0',['PLAYERS',['../classEntity.html#a9449a7a0ad2c9ae5ee85ef2401382f2bae334ea4bb6fd38968f6809b091120ad8',1,'Entity']]], + ['powerups_1',['POWERUPS',['../classEntity.html#a9449a7a0ad2c9ae5ee85ef2401382f2ba5262638eb9e1d1af560f3d0f9ad133e4',1,'Entity']]], + ['projectile_2',['PROJECTILE',['../classEntity.html#a9449a7a0ad2c9ae5ee85ef2401382f2ba46dccab75ce652352e52086601fdc294',1,'Entity']]] +]; diff --git a/search/enumvalues_7.js b/search/enumvalues_7.js new file mode 100644 index 0000000..a8e1eb4 --- /dev/null +++ b/search/enumvalues_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['red_0',['RED',['../classEntity.html#ac6bf07a435aa8148464dd36e8ba11df7aa2d9547b5d3dd9f05984475f7c926da0',1,'Entity']]] +]; diff --git a/search/files_0.js b/search/files_0.js new file mode 100644 index 0000000..80fbdff --- /dev/null +++ b/search/files_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['collisionhandler_2ecpp_0',['CollisionHandler.cpp',['../CollisionHandler_8cpp.html',1,'']]], + ['collisionhandler_2eh_1',['CollisionHandler.h',['../CollisionHandler_8h.html',1,'']]] +]; diff --git a/search/files_1.js b/search/files_1.js new file mode 100644 index 0000000..5820d5e --- /dev/null +++ b/search/files_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['transformcomponent_2ecpp_0',['TransformComponent.cpp',['../TransformComponent_8cpp.html',1,'']]] +]; diff --git a/search/functions_0.js b/search/functions_0.js new file mode 100644 index 0000000..a9ad32e --- /dev/null +++ b/search/functions_0.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['addcomponent_0',['addComponent',['../classEntity.html#ae587a44fd803d7918a45dbfe531c962d',1,'Entity']]], + ['addentity_1',['addEntity',['../classManager.html#a6be095e14d18da37fdb2f8bdb4b48b5a',1,'Manager']]], + ['addgroup_2',['addGroup',['../classEntity.html#a712c05a013e928943c26c3a5b1467f01',1,'Entity']]], + ['addtogroup_3',['addToGroup',['../classManager.html#a90f24c619760c3e1c07b4cea758b28a5',1,'Manager']]], + ['addtoteam_4',['addToTeam',['../classManager.html#a7e9e6e12ec7125512be184559ee535c9',1,'Manager']]] +]; diff --git a/search/functions_1.js b/search/functions_1.js new file mode 100644 index 0000000..2a0a8a3 --- /dev/null +++ b/search/functions_1.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['delgroup_0',['delGroup',['../classEntity.html#ae3902aa921b519ed2c25cf4676c9cb5d',1,'Entity']]], + ['destroy_1',['destroy',['../classEntity.html#a691dbe5f9ec930c27af2af0b97907a9e',1,'Entity']]], + ['draw_2',['draw',['../classEntity.html#ae68fc12f1c715bf17a20f0e4a754ae50',1,'Entity::draw()'],['../classManager.html#ad688d8d92b4d0c1049913500ca9ba9f3',1,'Manager::draw()']]] +]; diff --git a/search/functions_2.js b/search/functions_2.js new file mode 100644 index 0000000..43eeb92 --- /dev/null +++ b/search/functions_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['entity_0',['Entity',['../classEntity.html#aad34087e815ec2da644b86ae2357039b',1,'Entity']]] +]; diff --git a/search/functions_3.js b/search/functions_3.js new file mode 100644 index 0000000..ba75485 --- /dev/null +++ b/search/functions_3.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['getall_0',['getAll',['../classManager.html#aae16a3d76e450281012c526541ebeb5b',1,'Manager']]], + ['getanyintersection_1',['getAnyIntersection',['../classCollisionHandler.html#a08369acd5338b7d1558f152ef54fb79f',1,'CollisionHandler::getAnyIntersection(Entity *entity, Vector2D posMod={}, std::initializer_list< Entity::GroupLabel > const &groupLabels={}, std::initializer_list< Entity::TeamLabel > const &teamLabels={}, bool negateTeam=false)'],['../classCollisionHandler.html#a376bafa9253282edbd5691cd5ca86a94',1,'CollisionHandler::getAnyIntersection(Entity *entity, Vector2D posMod, std::initializer_list< Entity::GroupLabel > const &groupLabels, std::initializer_list< Entity::TeamLabel > const &teamLabels, bool negateTeam)'],['../classCollisionHandler.html#af6961b60d5b0b52d7f9bcded1cc953db',1,'CollisionHandler::getAnyIntersection(Entity *entity, Vector2D posMod, std::initializer_list< Entity::GroupLabel > const &groupLabels, std::initializer_list< Entity::TeamLabel > const &teamLabels, bool negateTeam)'],['../classCollisionHandler.html#a2fb7c155b4937a6d28ab04de0186d2ae',1,'CollisionHandler::getAnyIntersection(Entity *entity, Vector2D posMod, std::initializer_list< Entity::GroupLabel > const &groupLabels, std::initializer_list< Entity::TeamLabel > const &teamLabels, bool negateTeam)']]], + ['getcomponent_2',['getComponent',['../classEntity.html#ad5ce9d4246498a5a2ffd163a2d38c98f',1,'Entity']]], + ['getgroup_3',['getGroup',['../classManager.html#a365f24fd26d214314ca5a65ca3a647b1',1,'Manager']]], + ['getgroupbitset_4',['getGroupBitSet',['../classEntity.html#adf88082fc18a9ee0294072a0e028453d',1,'Entity']]], + ['getmanager_5',['getManager',['../classEntity.html#acdf7c696ee39da0d8ebddb1976ea0abe',1,'Entity']]], + ['getteam_6',['getTeam',['../classEntity.html#af24dd98377b44895122ae39aab5f4147',1,'Entity::getTeam()'],['../classManager.html#a3a2c9ef72674315e8382902690043bc9',1,'Manager::getTeam()']]] +]; diff --git a/search/functions_4.js b/search/functions_4.js new file mode 100644 index 0000000..7b23943 --- /dev/null +++ b/search/functions_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['hascomponent_0',['hasComponent',['../classEntity.html#aa622a8d79153a90d0e3b9b992ca2d38b',1,'Entity']]], + ['hasgroup_1',['hasGroup',['../classEntity.html#acfb6240560624c026ffc24af4d469b68',1,'Entity']]] +]; diff --git a/search/functions_5.js b/search/functions_5.js new file mode 100644 index 0000000..f4fa4ee --- /dev/null +++ b/search/functions_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['isactive_0',['isActive',['../classEntity.html#aea1c1568b4123d989c5310697030ad77',1,'Entity']]] +]; diff --git a/search/functions_6.js b/search/functions_6.js new file mode 100644 index 0000000..8f0ed98 --- /dev/null +++ b/search/functions_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['loadmap_0',['loadMap',['../classMap.html#a0ff6bf2deefec4235471cb388c890c9f',1,'Map']]] +]; diff --git a/search/functions_7.js b/search/functions_7.js new file mode 100644 index 0000000..d4876a1 --- /dev/null +++ b/search/functions_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['refresh_0',['refresh',['../classManager.html#adc5c66704fd1b0a9b9d38de8fdcb3748',1,'Manager']]] +]; diff --git a/search/functions_8.js b/search/functions_8.js new file mode 100644 index 0000000..20da20b --- /dev/null +++ b/search/functions_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['setteam_0',['setTeam',['../classEntity.html#adfef727ff63b3779c7f9d7e2467e4d18',1,'Entity']]] +]; diff --git a/search/functions_9.js b/search/functions_9.js new file mode 100644 index 0000000..53c7f40 --- /dev/null +++ b/search/functions_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['update_0',['update',['../classEntity.html#af4e16c727ddfe4d27fe0edeb4b9261aa',1,'Entity::update()'],['../classManager.html#af43da42550bd9746c5ea61a6aeee80de',1,'Manager::update()'],['../classTransformComponent.html#a2a5fefaf80674dbd9854e7d0386a64e7',1,'TransformComponent::update()']]] +]; diff --git a/search/mag.svg b/search/mag.svg new file mode 100644 index 0000000..ffb6cf0 --- /dev/null +++ b/search/mag.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/search/mag_d.svg b/search/mag_d.svg new file mode 100644 index 0000000..4122773 --- /dev/null +++ b/search/mag_d.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/search/mag_sel.svg b/search/mag_sel.svg new file mode 100644 index 0000000..553dba8 --- /dev/null +++ b/search/mag_sel.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/search/mag_seld.svg b/search/mag_seld.svg new file mode 100644 index 0000000..c906f84 --- /dev/null +++ b/search/mag_seld.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/search/pages_0.js b/search/pages_0.js new file mode 100644 index 0000000..4d85845 --- /dev/null +++ b/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['deprecated_20list_0',['Deprecated List',['../deprecated.html',1,'']]] +]; diff --git a/search/pages_1.js b/search/pages_1.js new file mode 100644 index 0000000..421f98a --- /dev/null +++ b/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['list_0',['List',['../deprecated.html',1,'Deprecated List'],['../todo.html',1,'Todo List']]] +]; diff --git a/search/pages_2.js b/search/pages_2.js new file mode 100644 index 0000000..83220ef --- /dev/null +++ b/search/pages_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['todo_20list_0',['Todo List',['../todo.html',1,'']]] +]; diff --git a/search/search.css b/search/search.css new file mode 100644 index 0000000..d7b0f90 --- /dev/null +++ b/search/search.css @@ -0,0 +1,291 @@ +/*---------------- Search Box positioning */ + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search box styling */ + +.SRPage * { + font-weight: normal; + line-height: normal; +} + +dark-mode-toggle { + margin-left: 5px; + display: flex; + float: right; +} + +#MSearchBox { + display: inline-block; + white-space : nowrap; + background: white; + border-radius: 0.65em; + box-shadow: inset 0.5px 0.5px 3px 0px #555; + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + width: 20px; + height: 19px; + background-image: url('mag_sel.svg'); + margin: 0 0 0 0.3em; + padding: 0; +} + +#MSearchSelectExt { + display: inline-block; + vertical-align: middle; + width: 10px; + height: 19px; + background-image: url('mag.svg'); + margin: 0 0 0 0.5em; + padding: 0; +} + + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 19px; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: #909090; + outline: none; + font-family: Arial,Verdana,sans-serif; + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: black; +} + + + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial,Verdana,sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: black; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: black; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: white; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + /*width: 60ex;*/ + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid black; + background-color: #EEF1F7; + z-index:10000; + width: 300px; + height: 400px; + overflow: auto; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +div.SRPage { + margin: 5px 2px; + background-color: #EEF1F7; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial,Verdana,sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial,Verdana,sans-serif; + font-size: 8pt; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: Arial,Verdana,sans-serif; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: Arial,Verdana,sans-serif; +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/search/search.js b/search/search.js new file mode 100644 index 0000000..666af01 --- /dev/null +++ b/search/search.js @@ -0,0 +1,694 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +const SEARCH_COOKIE_NAME = ''+'search_grp'; + +const searchResults = new SearchResults(); + +/* A class handling everything associated with the search panel. + + Parameters: + name - The name of the global variable that will be + storing this instance. Is needed to be able to set timeouts. + resultPath - path to use for external files +*/ +function SearchBox(name, resultsPath, extension) { + if (!name || !resultsPath) { alert("Missing parameters to SearchBox."); } + if (!extension || extension == "") { extension = ".html"; } + + function getXPos(item) { + let x = 0; + if (item.offsetWidth) { + while (item && item!=document.body) { + x += item.offsetLeft; + item = item.offsetParent; + } + } + return x; + } + + function getYPos(item) { + let y = 0; + if (item.offsetWidth) { + while (item && item!=document.body) { + y += item.offsetTop; + item = item.offsetParent; + } + } + return y; + } + + // ---------- Instance variables + this.name = name; + this.resultsPath = resultsPath; + this.keyTimeout = 0; + this.keyTimeoutLength = 500; + this.closeSelectionTimeout = 300; + this.lastSearchValue = ""; + this.lastResultsPage = ""; + this.hideTimeout = 0; + this.searchIndex = 0; + this.searchActive = false; + this.extension = extension; + + // ----------- DOM Elements + + this.DOMSearchField = () => document.getElementById("MSearchField"); + this.DOMSearchSelect = () => document.getElementById("MSearchSelect"); + this.DOMSearchSelectWindow = () => document.getElementById("MSearchSelectWindow"); + this.DOMPopupSearchResults = () => document.getElementById("MSearchResults"); + this.DOMPopupSearchResultsWindow = () => document.getElementById("MSearchResultsWindow"); + this.DOMSearchClose = () => document.getElementById("MSearchClose"); + this.DOMSearchBox = () => document.getElementById("MSearchBox"); + + // ------------ Event Handlers + + // Called when focus is added or removed from the search field. + this.OnSearchFieldFocus = function(isActive) { + this.Activate(isActive); + } + + this.OnSearchSelectShow = function() { + const searchSelectWindow = this.DOMSearchSelectWindow(); + const searchField = this.DOMSearchSelect(); + + const left = getXPos(searchField); + const top = getYPos(searchField) + searchField.offsetHeight; + + // show search selection popup + searchSelectWindow.style.display='block'; + searchSelectWindow.style.left = left + 'px'; + searchSelectWindow.style.top = top + 'px'; + + // stop selection hide timer + if (this.hideTimeout) { + clearTimeout(this.hideTimeout); + this.hideTimeout=0; + } + return false; // to avoid "image drag" default event + } + + this.OnSearchSelectHide = function() { + this.hideTimeout = setTimeout(this.CloseSelectionWindow.bind(this), + this.closeSelectionTimeout); + } + + // Called when the content of the search field is changed. + this.OnSearchFieldChange = function(evt) { + if (this.keyTimeout) { // kill running timer + clearTimeout(this.keyTimeout); + this.keyTimeout = 0; + } + + const e = evt ? evt : window.event; // for IE + if (e.keyCode==40 || e.keyCode==13) { + if (e.shiftKey==1) { + this.OnSearchSelectShow(); + const win=this.DOMSearchSelectWindow(); + for (let i=0;i do a search + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) { + const e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) { // Up + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } else if (e.keyCode==13 || e.keyCode==27) { + e.stopPropagation(); + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() { + this.keyTimeout = 0; + + // strip leading whitespace + const searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + const code = searchValue.toLowerCase().charCodeAt(0); + let idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) { // surrogate pair + idxChar = searchValue.substr(0, 2); + } + + let jsFile; + let idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) { + const hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + } + + const loadJS = function(url, impl, loc) { + const scriptTag = document.createElement('script'); + scriptTag.src = url; + scriptTag.onload = impl; + scriptTag.onreadystatechange = impl; + loc.appendChild(scriptTag); + } + + const domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + const domSearchBox = this.DOMSearchBox(); + const domPopupSearchResults = this.DOMPopupSearchResults(); + const domSearchClose = this.DOMSearchClose(); + const resultsPath = this.resultsPath; + + const handleResults = function() { + document.getElementById("Loading").style.display="none"; + if (typeof searchData !== 'undefined') { + createResults(resultsPath); + document.getElementById("NoMatches").style.display="none"; + } + + if (idx!=-1) { + searchResults.Search(searchValue); + } else { // no file with search results => force empty search results + searchResults.Search('===='); + } + + if (domPopupSearchResultsWindow.style.display!='block') { + domSearchClose.style.display = 'inline-block'; + let left = getXPos(domSearchBox) + 150; + let top = getYPos(domSearchBox) + 20; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + const maxWidth = document.body.clientWidth; + const maxHeight = document.body.clientHeight; + let width = 300; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + let height = 400; + if (height+top+8>maxHeight) height=maxHeight-top-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResultsWindow.style.height = height + 'px'; + } + } + + if (jsFile) { + loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); + } else { + handleResults(); + } + + this.lastSearchValue = searchValue; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) { + this.DOMSearchBox().className = 'MSearchBoxActive'; + this.searchActive = true; + } else if (!isActive) { // directly remove the panel + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + this.DOMSearchField().value = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults() { + + function convertToId(search) { + let result = ''; + for (let i=0;i. + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) { + const parentElement = document.getElementById(id); + let element = parentElement.firstChild; + + while (element && element!=parentElement) { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) { + element = element.firstChild; + } else if (element.nextSibling) { + element = element.nextSibling; + } else { + do { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) { + const element = this.FindChildElement(id); + if (element) { + if (element.style.display == 'block') { + element.style.display = 'none'; + } else { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) { + if (!search) { // get search word from URL + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + const resultRows = document.getElementsByTagName("div"); + let matches = 0; + + let i = 0; + while (i < resultRows.length) { + const row = resultRows.item(i); + if (row.className == "SRResult") { + let rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) { + row.style.display = 'block'; + matches++; + } else { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) { // no results + document.getElementById("NoMatches").style.display='block'; + } else { // at least one result + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) { + let focusItem; + for (;;) { + const focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') { + break; + } else if (!focusItem) { // last element + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) { + let focusItem; + for (;;) { + const focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') { + break; + } else if (!focusItem) { // last element + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) { + if (e.type == "keydown") { + this.repeatOn = false; + this.lastKey = e.keyCode; + } else if (e.type == "keypress") { + if (!this.repeatOn) { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } else if (e.type == "keyup") { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) { + const e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) { // Up + const newIndex = itemIndex-1; + let focusItem = this.NavPrev(newIndex); + if (focusItem) { + let child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') { // children visible + let n=0; + let tmpElem; + for (;;) { // search for last child + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) { + focusItem = tmpElem; + } else { // found it! + break; + } + n++; + } + } + } + if (focusItem) { + focusItem.focus(); + } else { // return focus to search field + document.getElementById("MSearchField").focus(); + } + } else if (this.lastKey==40) { // Down + const newIndex = itemIndex+1; + let focusItem; + const item = document.getElementById('Item'+itemIndex); + const elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') { // children visible + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } else if (this.lastKey==39) { // Right + const item = document.getElementById('Item'+itemIndex); + const elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } else if (this.lastKey==37) { // Left + const item = document.getElementById('Item'+itemIndex); + const elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } else if (this.lastKey==27) { // Escape + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } else if (this.lastKey==13) { // Enter + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) { + const e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) { // Up + if (childIndex>0) { + const newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } else { // already at first child, jump to parent + document.getElementById('Item'+itemIndex).focus(); + } + } else if (this.lastKey==40) { // Down + const newIndex = childIndex+1; + let elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) { // last child, jump to parent next parent + elem = this.NavNext(itemIndex+1); + } + if (elem) { + elem.focus(); + } + } else if (this.lastKey==27) { // Escape + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } else if (this.lastKey==13) { // Enter + return true; + } + return false; + } +} + +function createResults(resultsPath) { + + function setKeyActions(elem,action) { + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); + } + + function setClassAttr(elem,attr) { + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); + } + + const results = document.getElementById("SRResults"); + results.innerHTML = ''; + searchData.forEach((elem,index) => { + const id = elem[0]; + const srResult = document.createElement('div'); + srResult.setAttribute('id','SR_'+id); + setClassAttr(srResult,'SRResult'); + const srEntry = document.createElement('div'); + setClassAttr(srEntry,'SREntry'); + const srLink = document.createElement('a'); + srLink.setAttribute('id','Item'+index); + setKeyActions(srLink,'return searchResults.Nav(event,'+index+')'); + setClassAttr(srLink,'SRSymbol'); + srLink.innerHTML = elem[1][0]; + srEntry.appendChild(srLink); + if (elem[1].length==2) { // single result + srLink.setAttribute('href',resultsPath+elem[1][1][0]); + srLink.setAttribute('onclick','searchBox.CloseResultsWindow()'); + if (elem[1][1][1]) { + srLink.setAttribute('target','_parent'); + } else { + srLink.setAttribute('target','_blank'); + } + const srScope = document.createElement('span'); + setClassAttr(srScope,'SRScope'); + srScope.innerHTML = elem[1][1][2]; + srEntry.appendChild(srScope); + } else { // multiple results + srLink.setAttribute('href','javascript:searchResults.Toggle("SR_'+id+'")'); + const srChildren = document.createElement('div'); + setClassAttr(srChildren,'SRChildren'); + for (let c=0; c + + + + + + + + SDL Minigame: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    +
    SDL Minigame +  1.0 +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Animation Member List
    +
    +
    + +

    This is the complete list of members for Animation, including all inherited members.

    + + + + + + +
    Animation() (defined in Animation)Animationinline
    Animation(uint8_t index, uint8_t frames, uint8_t speed) (defined in Animation)Animationinline
    frames (defined in Animation)Animation
    index (defined in Animation)Animation
    speed (defined in Animation)Animation
    +
    + + + + diff --git a/structAnimation.html b/structAnimation.html new file mode 100644 index 0000000..92a703e --- /dev/null +++ b/structAnimation.html @@ -0,0 +1,156 @@ + + + + + + + + + SDL Minigame: Animation Struct Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    +
    SDL Minigame +  1.0 +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    Animation Struct Reference
    +
    +
    + + + + +

    +Public Member Functions

    Animation (uint8_t index, uint8_t frames, uint8_t speed)
     
    + + + + + + + +

    +Public Attributes

    +uint8_t index
     
    +uint8_t frames
     
    +uint8_t speed
     
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/svg.min.js b/svg.min.js new file mode 100644 index 0000000..916732f --- /dev/null +++ b/svg.min.js @@ -0,0 +1,46 @@ +/*! +* @svgdotjs/svg.js - A lightweight library for manipulating and animating SVG. +* @version 3.1.2 +* https://svgjs.dev/ +* +* @copyright Wout Fierens +* @license MIT +* +* BUILT: Wed Jan 26 2022 23:19:07 GMT+0100 (Mitteleuropäische Normalzeit) +*/var SVG=function(){"use strict";const methods$1={};const names=[];function registerMethods(name,m){if(Array.isArray(name)){for(const _name of name){registerMethods(_name,m)}return}if(typeof name==="object"){for(const _name in name){registerMethods(_name,name[_name])}return}addMethodNames(Object.getOwnPropertyNames(m));methods$1[name]=Object.assign(methods$1[name]||{},m)}function getMethodsFor(name){return methods$1[name]||{}}function getMethodNames(){return[...new Set(names)]}function addMethodNames(_names){names.push(..._names)}function map(array,block){let i;const il=array.length;const result=[];for(i=0;i=0;i--){assignNewId(node.children[i])}if(node.id){node.id=eid(node.nodeName);return node}return node}function extend(modules,methods){let key,i;modules=Array.isArray(modules)?modules:[modules];for(i=modules.length-1;i>=0;i--){for(key in methods){modules[i].prototype[key]=methods[key]}}}function wrapWithAttrCheck(fn){return function(...args){const o=args[args.length-1];if(o&&o.constructor===Object&&!(o instanceof Array)){return fn.apply(this,args.slice(0,-1)).attr(o)}else{return fn.apply(this,args)}}}function siblings(){return this.parent().children()}function position(){return this.parent().index(this)}function next(){return this.siblings()[this.position()+1]}function prev(){return this.siblings()[this.position()-1]}function forward(){const i=this.position();const p=this.parent();p.add(this.remove(),i+1);return this}function backward(){const i=this.position();const p=this.parent();p.add(this.remove(),i?i-1:0);return this}function front(){const p=this.parent();p.add(this.remove());return this}function back(){const p=this.parent();p.add(this.remove(),0);return this}function before(element){element=makeInstance(element);element.remove();const i=this.position();this.parent().add(element,i);return this}function after(element){element=makeInstance(element);element.remove();const i=this.position();this.parent().add(element,i+1);return this}function insertBefore(element){element=makeInstance(element);element.before(this);return this}function insertAfter(element){element=makeInstance(element);element.after(this);return this}registerMethods("Dom",{siblings:siblings,position:position,next:next,prev:prev,forward:forward,backward:backward,front:front,back:back,before:before,after:after,insertBefore:insertBefore,insertAfter:insertAfter});const numberAndUnit=/^([+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?)([a-z%]*)$/i;const hex=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i;const rgb=/rgb\((\d+),(\d+),(\d+)\)/;const reference=/(#[a-z_][a-z0-9\-_]*)/i;const transforms=/\)\s*,?\s*/;const whitespace=/\s/g;const isHex=/^#[a-f0-9]{3}$|^#[a-f0-9]{6}$/i;const isRgb=/^rgb\(/;const isBlank=/^(\s+)?$/;const isNumber=/^[+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i;const isImage=/\.(jpg|jpeg|png|gif|svg)(\?[^=]+.*)?/i;const delimiter=/[\s,]+/;const isPathLetter=/[MLHVCSQTAZ]/i;var regex={__proto__:null,numberAndUnit:numberAndUnit,hex:hex,rgb:rgb,reference:reference,transforms:transforms,whitespace:whitespace,isHex:isHex,isRgb:isRgb,isBlank:isBlank,isNumber:isNumber,isImage:isImage,delimiter:delimiter,isPathLetter:isPathLetter};function classes(){const attr=this.attr("class");return attr==null?[]:attr.trim().split(delimiter)}function hasClass(name){return this.classes().indexOf(name)!==-1}function addClass(name){if(!this.hasClass(name)){const array=this.classes();array.push(name);this.attr("class",array.join(" "))}return this}function removeClass(name){if(this.hasClass(name)){this.attr("class",this.classes().filter(function(c){return c!==name}).join(" "))}return this}function toggleClass(name){return this.hasClass(name)?this.removeClass(name):this.addClass(name)}registerMethods("Dom",{classes:classes,hasClass:hasClass,addClass:addClass,removeClass:removeClass,toggleClass:toggleClass});function css(style,val){const ret={};if(arguments.length===0){this.node.style.cssText.split(/\s*;\s*/).filter(function(el){return!!el.length}).forEach(function(el){const t=el.split(/\s*:\s*/);ret[t[0]]=t[1]});return ret}if(arguments.length<2){if(Array.isArray(style)){for(const name of style){const cased=camelCase(name);ret[name]=this.node.style[cased]}return ret}if(typeof style==="string"){return this.node.style[camelCase(style)]}if(typeof style==="object"){for(const name in style){this.node.style[camelCase(name)]=style[name]==null||isBlank.test(style[name])?"":style[name]}}}if(arguments.length===2){this.node.style[camelCase(style)]=val==null||isBlank.test(val)?"":val}return this}function show(){return this.css("display","")}function hide(){return this.css("display","none")}function visible(){return this.css("display")!=="none"}registerMethods("Dom",{css:css,show:show,hide:hide,visible:visible});function data(a,v,r){if(a==null){return this.data(map(filter(this.node.attributes,el=>el.nodeName.indexOf("data-")===0),el=>el.nodeName.slice(5)))}else if(a instanceof Array){const data={};for(const key of a){data[key]=this.data(key)}return data}else if(typeof a==="object"){for(v in a){this.data(v,a[v])}}else if(arguments.length<2){try{return JSON.parse(this.attr("data-"+a))}catch(e){return this.attr("data-"+a)}}else{this.attr("data-"+a,v===null?null:r===true||typeof v==="string"||typeof v==="number"?v:JSON.stringify(v))}return this}registerMethods("Dom",{data:data});function remember(k,v){if(typeof arguments[0]==="object"){for(const key in k){this.remember(key,k[key])}}else if(arguments.length===1){return this.memory()[k]}else{this.memory()[k]=v}return this}function forget(){if(arguments.length===0){this._memory={}}else{for(let i=arguments.length-1;i>=0;i--){delete this.memory()[arguments[i]]}}return this}function memory(){return this._memory=this._memory||{}}registerMethods("Dom",{remember:remember,forget:forget,memory:memory});function sixDigitHex(hex){return hex.length===4?["#",hex.substring(1,2),hex.substring(1,2),hex.substring(2,3),hex.substring(2,3),hex.substring(3,4),hex.substring(3,4)].join(""):hex}function componentHex(component){const integer=Math.round(component);const bounded=Math.max(0,Math.min(255,integer));const hex=bounded.toString(16);return hex.length===1?"0"+hex:hex}function is(object,space){for(let i=space.length;i--;){if(object[space[i]]==null){return false}}return true}function getParameters(a,b){const params=is(a,"rgb")?{_a:a.r,_b:a.g,_c:a.b,_d:0,space:"rgb"}:is(a,"xyz")?{_a:a.x,_b:a.y,_c:a.z,_d:0,space:"xyz"}:is(a,"hsl")?{_a:a.h,_b:a.s,_c:a.l,_d:0,space:"hsl"}:is(a,"lab")?{_a:a.l,_b:a.a,_c:a.b,_d:0,space:"lab"}:is(a,"lch")?{_a:a.l,_b:a.c,_c:a.h,_d:0,space:"lch"}:is(a,"cmyk")?{_a:a.c,_b:a.m,_c:a.y,_d:a.k,space:"cmyk"}:{_a:0,_b:0,_c:0,space:"rgb"};params.space=b||params.space;return params}function cieSpace(space){if(space==="lab"||space==="xyz"||space==="lch"){return true}else{return false}}function hueToRgb(p,q,t){if(t<0)t+=1;if(t>1)t-=1;if(t<1/6)return p+(q-p)*6*t;if(t<1/2)return q;if(t<2/3)return p+(q-p)*(2/3-t)*6;return p}class Color{constructor(...inputs){this.init(...inputs)}static isColor(color){return color&&(color instanceof Color||this.isRgb(color)||this.test(color))}static isRgb(color){return color&&typeof color.r==="number"&&typeof color.g==="number"&&typeof color.b==="number"}static random(mode="vibrant",t,u){const{random,round,sin,PI:pi}=Math;if(mode==="vibrant"){const l=(81-57)*random()+57;const c=(83-45)*random()+45;const h=360*random();const color=new Color(l,c,h,"lch");return color}else if(mode==="sine"){t=t==null?random():t;const r=round(80*sin(2*pi*t/.5+.01)+150);const g=round(50*sin(2*pi*t/.5+4.6)+200);const b=round(100*sin(2*pi*t/.5+2.3)+150);const color=new Color(r,g,b);return color}else if(mode==="pastel"){const l=(94-86)*random()+86;const c=(26-9)*random()+9;const h=360*random();const color=new Color(l,c,h,"lch");return color}else if(mode==="dark"){const l=10+10*random();const c=(125-75)*random()+86;const h=360*random();const color=new Color(l,c,h,"lch");return color}else if(mode==="rgb"){const r=255*random();const g=255*random();const b=255*random();const color=new Color(r,g,b);return color}else if(mode==="lab"){const l=100*random();const a=256*random()-128;const b=256*random()-128;const color=new Color(l,a,b,"lab");return color}else if(mode==="grey"){const grey=255*random();const color=new Color(grey,grey,grey);return color}else{throw new Error("Unsupported random color mode")}}static test(color){return typeof color==="string"&&(isHex.test(color)||isRgb.test(color))}cmyk(){const{_a,_b,_c}=this.rgb();const[r,g,b]=[_a,_b,_c].map(v=>v/255);const k=Math.min(1-r,1-g,1-b);if(k===1){return new Color(0,0,0,1,"cmyk")}const c=(1-r-k)/(1-k);const m=(1-g-k)/(1-k);const y=(1-b-k)/(1-k);const color=new Color(c,m,y,k,"cmyk");return color}hsl(){const{_a,_b,_c}=this.rgb();const[r,g,b]=[_a,_b,_c].map(v=>v/255);const max=Math.max(r,g,b);const min=Math.min(r,g,b);const l=(max+min)/2;const isGrey=max===min;const delta=max-min;const s=isGrey?0:l>.5?delta/(2-max-min):delta/(max+min);const h=isGrey?0:max===r?((g-b)/delta+(gparseInt(v));Object.assign(this,{_a:_a,_b:_b,_c:_c,_d:0,space:"rgb"})}else if(isHex.test(a)){const hexParse=v=>parseInt(v,16);const[,_a,_b,_c]=hex.exec(sixDigitHex(a)).map(hexParse);Object.assign(this,{_a:_a,_b:_b,_c:_c,_d:0,space:"rgb"})}else throw Error("Unsupported string format, can't construct Color")}const{_a,_b,_c,_d}=this;const components=this.space==="rgb"?{r:_a,g:_b,b:_c}:this.space==="xyz"?{x:_a,y:_b,z:_c}:this.space==="hsl"?{h:_a,s:_b,l:_c}:this.space==="lab"?{l:_a,a:_b,b:_c}:this.space==="lch"?{l:_a,c:_b,h:_c}:this.space==="cmyk"?{c:_a,m:_b,y:_c,k:_d}:{};Object.assign(this,components)}lab(){const{x,y,z}=this.xyz();const l=116*y-16;const a=500*(x-y);const b=200*(y-z);const color=new Color(l,a,b,"lab");return color}lch(){const{l,a,b}=this.lab();const c=Math.sqrt(a**2+b**2);let h=180*Math.atan2(b,a)/Math.PI;if(h<0){h*=-1;h=360-h}const color=new Color(l,c,h,"lch");return color}rgb(){if(this.space==="rgb"){return this}else if(cieSpace(this.space)){let{x,y,z}=this;if(this.space==="lab"||this.space==="lch"){let{l,a,b}=this;if(this.space==="lch"){const{c,h}=this;const dToR=Math.PI/180;a=c*Math.cos(dToR*h);b=c*Math.sin(dToR*h)}const yL=(l+16)/116;const xL=a/500+yL;const zL=yL-b/200;const ct=16/116;const mx=.008856;const nm=7.787;x=.95047*(xL**3>mx?xL**3:(xL-ct)/nm);y=1*(yL**3>mx?yL**3:(yL-ct)/nm);z=1.08883*(zL**3>mx?zL**3:(zL-ct)/nm)}const rU=x*3.2406+y*-1.5372+z*-.4986;const gU=x*-.9689+y*1.8758+z*.0415;const bU=x*.0557+y*-.204+z*1.057;const pow=Math.pow;const bd=.0031308;const r=rU>bd?1.055*pow(rU,1/2.4)-.055:12.92*rU;const g=gU>bd?1.055*pow(gU,1/2.4)-.055:12.92*gU;const b=bU>bd?1.055*pow(bU,1/2.4)-.055:12.92*bU;const color=new Color(255*r,255*g,255*b);return color}else if(this.space==="hsl"){let{h,s,l}=this;h/=360;s/=100;l/=100;if(s===0){l*=255;const color=new Color(l,l,l);return color}const q=l<.5?l*(1+s):l+s-l*s;const p=2*l-q;const r=255*hueToRgb(p,q,h+1/3);const g=255*hueToRgb(p,q,h);const b=255*hueToRgb(p,q,h-1/3);const color=new Color(r,g,b);return color}else if(this.space==="cmyk"){const{c,m,y,k}=this;const r=255*(1-Math.min(1,c*(1-k)+k));const g=255*(1-Math.min(1,m*(1-k)+k));const b=255*(1-Math.min(1,y*(1-k)+k));const color=new Color(r,g,b);return color}else{return this}}toArray(){const{_a,_b,_c,_d,space}=this;return[_a,_b,_c,_d,space]}toHex(){const[r,g,b]=this._clamped().map(componentHex);return`#${r}${g}${b}`}toRgb(){const[rV,gV,bV]=this._clamped();const string=`rgb(${rV},${gV},${bV})`;return string}toString(){return this.toHex()}xyz(){const{_a:r255,_b:g255,_c:b255}=this.rgb();const[r,g,b]=[r255,g255,b255].map(v=>v/255);const rL=r>.04045?Math.pow((r+.055)/1.055,2.4):r/12.92;const gL=g>.04045?Math.pow((g+.055)/1.055,2.4):g/12.92;const bL=b>.04045?Math.pow((b+.055)/1.055,2.4):b/12.92;const xU=(rL*.4124+gL*.3576+bL*.1805)/.95047;const yU=(rL*.2126+gL*.7152+bL*.0722)/1;const zU=(rL*.0193+gL*.1192+bL*.9505)/1.08883;const x=xU>.008856?Math.pow(xU,1/3):7.787*xU+16/116;const y=yU>.008856?Math.pow(yU,1/3):7.787*yU+16/116;const z=zU>.008856?Math.pow(zU,1/3):7.787*zU+16/116;const color=new Color(x,y,z,"xyz");return color}_clamped(){const{_a,_b,_c}=this.rgb();const{max,min,round}=Math;const format=v=>max(0,min(round(v),255));return[_a,_b,_c].map(format)}}class Point{constructor(...args){this.init(...args)}clone(){return new Point(this)}init(x,y){const base={x:0,y:0};const source=Array.isArray(x)?{x:x[0],y:x[1]}:typeof x==="object"?{x:x.x,y:x.y}:{x:x,y:y};this.x=source.x==null?base.x:source.x;this.y=source.y==null?base.y:source.y;return this}toArray(){return[this.x,this.y]}transform(m){return this.clone().transformO(m)}transformO(m){if(!Matrix.isMatrixLike(m)){m=new Matrix(m)}const{x,y}=this;this.x=m.a*x+m.c*y+m.e;this.y=m.b*x+m.d*y+m.f;return this}}function point(x,y){return new Point(x,y).transform(this.screenCTM().inverse())}function closeEnough(a,b,threshold){return Math.abs(b-a)<(threshold||1e-6)}class Matrix{constructor(...args){this.init(...args)}static formatTransforms(o){const flipBoth=o.flip==="both"||o.flip===true;const flipX=o.flip&&(flipBoth||o.flip==="x")?-1:1;const flipY=o.flip&&(flipBoth||o.flip==="y")?-1:1;const skewX=o.skew&&o.skew.length?o.skew[0]:isFinite(o.skew)?o.skew:isFinite(o.skewX)?o.skewX:0;const skewY=o.skew&&o.skew.length?o.skew[1]:isFinite(o.skew)?o.skew:isFinite(o.skewY)?o.skewY:0;const scaleX=o.scale&&o.scale.length?o.scale[0]*flipX:isFinite(o.scale)?o.scale*flipX:isFinite(o.scaleX)?o.scaleX*flipX:flipX;const scaleY=o.scale&&o.scale.length?o.scale[1]*flipY:isFinite(o.scale)?o.scale*flipY:isFinite(o.scaleY)?o.scaleY*flipY:flipY;const shear=o.shear||0;const theta=o.rotate||o.theta||0;const origin=new Point(o.origin||o.around||o.ox||o.originX,o.oy||o.originY);const ox=origin.x;const oy=origin.y;const position=new Point(o.position||o.px||o.positionX||NaN,o.py||o.positionY||NaN);const px=position.x;const py=position.y;const translate=new Point(o.translate||o.tx||o.translateX,o.ty||o.translateY);const tx=translate.x;const ty=translate.y;const relative=new Point(o.relative||o.rx||o.relativeX,o.ry||o.relativeY);const rx=relative.x;const ry=relative.y;return{scaleX:scaleX,scaleY:scaleY,skewX:skewX,skewY:skewY,shear:shear,theta:theta,rx:rx,ry:ry,tx:tx,ty:ty,ox:ox,oy:oy,px:px,py:py}}static fromArray(a){return{a:a[0],b:a[1],c:a[2],d:a[3],e:a[4],f:a[5]}}static isMatrixLike(o){return o.a!=null||o.b!=null||o.c!=null||o.d!=null||o.e!=null||o.f!=null}static matrixMultiply(l,r,o){const a=l.a*r.a+l.c*r.b;const b=l.b*r.a+l.d*r.b;const c=l.a*r.c+l.c*r.d;const d=l.b*r.c+l.d*r.d;const e=l.e+l.a*r.e+l.c*r.f;const f=l.f+l.b*r.e+l.d*r.f;o.a=a;o.b=b;o.c=c;o.d=d;o.e=e;o.f=f;return o}around(cx,cy,matrix){return this.clone().aroundO(cx,cy,matrix)}aroundO(cx,cy,matrix){const dx=cx||0;const dy=cy||0;return this.translateO(-dx,-dy).lmultiplyO(matrix).translateO(dx,dy)}clone(){return new Matrix(this)}decompose(cx=0,cy=0){const a=this.a;const b=this.b;const c=this.c;const d=this.d;const e=this.e;const f=this.f;const determinant=a*d-b*c;const ccw=determinant>0?1:-1;const sx=ccw*Math.sqrt(a*a+b*b);const thetaRad=Math.atan2(ccw*b,ccw*a);const theta=180/Math.PI*thetaRad;const ct=Math.cos(thetaRad);const st=Math.sin(thetaRad);const lam=(a*c+b*d)/determinant;const sy=c*sx/(lam*a-b)||d*sx/(lam*b+a);const tx=e-cx+cx*ct*sx+cy*(lam*ct*sx-st*sy);const ty=f-cy+cx*st*sx+cy*(lam*st*sx+ct*sy);return{scaleX:sx,scaleY:sy,shear:lam,rotate:theta,translateX:tx,translateY:ty,originX:cx,originY:cy,a:this.a,b:this.b,c:this.c,d:this.d,e:this.e,f:this.f}}equals(other){if(other===this)return true;const comp=new Matrix(other);return closeEnough(this.a,comp.a)&&closeEnough(this.b,comp.b)&&closeEnough(this.c,comp.c)&&closeEnough(this.d,comp.d)&&closeEnough(this.e,comp.e)&&closeEnough(this.f,comp.f)}flip(axis,around){return this.clone().flipO(axis,around)}flipO(axis,around){return axis==="x"?this.scaleO(-1,1,around,0):axis==="y"?this.scaleO(1,-1,0,around):this.scaleO(-1,-1,axis,around||axis)}init(source){const base=Matrix.fromArray([1,0,0,1,0,0]);source=source instanceof Element?source.matrixify():typeof source==="string"?Matrix.fromArray(source.split(delimiter).map(parseFloat)):Array.isArray(source)?Matrix.fromArray(source):typeof source==="object"&&Matrix.isMatrixLike(source)?source:typeof source==="object"?(new Matrix).transform(source):arguments.length===6?Matrix.fromArray([].slice.call(arguments)):base;this.a=source.a!=null?source.a:base.a;this.b=source.b!=null?source.b:base.b;this.c=source.c!=null?source.c:base.c;this.d=source.d!=null?source.d:base.d;this.e=source.e!=null?source.e:base.e;this.f=source.f!=null?source.f:base.f;return this}inverse(){return this.clone().inverseO()}inverseO(){const a=this.a;const b=this.b;const c=this.c;const d=this.d;const e=this.e;const f=this.f;const det=a*d-b*c;if(!det)throw new Error("Cannot invert "+this);const na=d/det;const nb=-b/det;const nc=-c/det;const nd=a/det;const ne=-(na*e+nc*f);const nf=-(nb*e+nd*f);this.a=na;this.b=nb;this.c=nc;this.d=nd;this.e=ne;this.f=nf;return this}lmultiply(matrix){return this.clone().lmultiplyO(matrix)}lmultiplyO(matrix){const r=this;const l=matrix instanceof Matrix?matrix:new Matrix(matrix);return Matrix.matrixMultiply(l,r,this)}multiply(matrix){return this.clone().multiplyO(matrix)}multiplyO(matrix){const l=this;const r=matrix instanceof Matrix?matrix:new Matrix(matrix);return Matrix.matrixMultiply(l,r,this)}rotate(r,cx,cy){return this.clone().rotateO(r,cx,cy)}rotateO(r,cx=0,cy=0){r=radians(r);const cos=Math.cos(r);const sin=Math.sin(r);const{a,b,c,d,e,f}=this;this.a=a*cos-b*sin;this.b=b*cos+a*sin;this.c=c*cos-d*sin;this.d=d*cos+c*sin;this.e=e*cos-f*sin+cy*sin-cx*cos+cx;this.f=f*cos+e*sin-cx*sin-cy*cos+cy;return this}scale(x,y,cx,cy){return this.clone().scaleO(...arguments)}scaleO(x,y=x,cx=0,cy=0){if(arguments.length===3){cy=cx;cx=y;y=x}const{a,b,c,d,e,f}=this;this.a=a*x;this.b=b*y;this.c=c*x;this.d=d*y;this.e=e*x-cx*x+cx;this.f=f*y-cy*y+cy;return this}shear(a,cx,cy){return this.clone().shearO(a,cx,cy)}shearO(lx,cx=0,cy=0){const{a,b,c,d,e,f}=this;this.a=a+b*lx;this.c=c+d*lx;this.e=e+f*lx-cy*lx;return this}skew(x,y,cx,cy){return this.clone().skewO(...arguments)}skewO(x,y=x,cx=0,cy=0){if(arguments.length===3){cy=cx;cx=y;y=x}x=radians(x);y=radians(y);const lx=Math.tan(x);const ly=Math.tan(y);const{a,b,c,d,e,f}=this;this.a=a+b*lx;this.b=b+a*ly;this.c=c+d*lx;this.d=d+c*ly;this.e=e+f*lx-cy*lx;this.f=f+e*ly-cx*ly;return this}skewX(x,cx,cy){return this.skew(x,0,cx,cy)}skewY(y,cx,cy){return this.skew(0,y,cx,cy)}toArray(){return[this.a,this.b,this.c,this.d,this.e,this.f]}toString(){return"matrix("+this.a+","+this.b+","+this.c+","+this.d+","+this.e+","+this.f+")"}transform(o){if(Matrix.isMatrixLike(o)){const matrix=new Matrix(o);return matrix.multiplyO(this)}const t=Matrix.formatTransforms(o);const current=this;const{x:ox,y:oy}=new Point(t.ox,t.oy).transform(current);const transformer=(new Matrix).translateO(t.rx,t.ry).lmultiplyO(current).translateO(-ox,-oy).scaleO(t.scaleX,t.scaleY).skewO(t.skewX,t.skewY).shearO(t.shear).rotateO(t.theta).translateO(ox,oy);if(isFinite(t.px)||isFinite(t.py)){const origin=new Point(ox,oy).transform(transformer);const dx=isFinite(t.px)?t.px-origin.x:0;const dy=isFinite(t.py)?t.py-origin.y:0;transformer.translateO(dx,dy)}transformer.translateO(t.tx,t.ty);return transformer}translate(x,y){return this.clone().translateO(x,y)}translateO(x,y){this.e+=x||0;this.f+=y||0;return this}valueOf(){return{a:this.a,b:this.b,c:this.c,d:this.d,e:this.e,f:this.f}}}function ctm(){return new Matrix(this.node.getCTM())}function screenCTM(){if(typeof this.isRoot==="function"&&!this.isRoot()){const rect=this.rect(1,1);const m=rect.node.getScreenCTM();rect.remove();return new Matrix(m)}return new Matrix(this.node.getScreenCTM())}register(Matrix,"Matrix");function parser(){if(!parser.nodes){const svg=makeInstance().size(2,0);svg.node.style.cssText=["opacity: 0","position: absolute","left: -100%","top: -100%","overflow: hidden"].join(";");svg.attr("focusable","false");svg.attr("aria-hidden","true");const path=svg.path().node;parser.nodes={svg:svg,path:path}}if(!parser.nodes.svg.node.parentNode){const b=globals.document.body||globals.document.documentElement;parser.nodes.svg.addTo(b)}return parser.nodes}function isNulledBox(box){return!box.width&&!box.height&&!box.x&&!box.y}function domContains(node){return node===globals.document||(globals.document.documentElement.contains||function(node){while(node.parentNode){node=node.parentNode}return node===globals.document}).call(globals.document.documentElement,node)}class Box{constructor(...args){this.init(...args)}addOffset(){this.x+=globals.window.pageXOffset;this.y+=globals.window.pageYOffset;return new Box(this)}init(source){const base=[0,0,0,0];source=typeof source==="string"?source.split(delimiter).map(parseFloat):Array.isArray(source)?source:typeof source==="object"?[source.left!=null?source.left:source.x,source.top!=null?source.top:source.y,source.width,source.height]:arguments.length===4?[].slice.call(arguments):base;this.x=source[0]||0;this.y=source[1]||0;this.width=this.w=source[2]||0;this.height=this.h=source[3]||0;this.x2=this.x+this.w;this.y2=this.y+this.h;this.cx=this.x+this.w/2;this.cy=this.y+this.h/2;return this}isNulled(){return isNulledBox(this)}merge(box){const x=Math.min(this.x,box.x);const y=Math.min(this.y,box.y);const width=Math.max(this.x+this.width,box.x+box.width)-x;const height=Math.max(this.y+this.height,box.y+box.height)-y;return new Box(x,y,width,height)}toArray(){return[this.x,this.y,this.width,this.height]}toString(){return this.x+" "+this.y+" "+this.width+" "+this.height}transform(m){if(!(m instanceof Matrix)){m=new Matrix(m)}let xMin=Infinity;let xMax=-Infinity;let yMin=Infinity;let yMax=-Infinity;const pts=[new Point(this.x,this.y),new Point(this.x2,this.y),new Point(this.x,this.y2),new Point(this.x2,this.y2)];pts.forEach(function(p){p=p.transform(m);xMin=Math.min(xMin,p.x);xMax=Math.max(xMax,p.x);yMin=Math.min(yMin,p.y);yMax=Math.max(yMax,p.y)});return new Box(xMin,yMin,xMax-xMin,yMax-yMin)}}function getBox(el,getBBoxFn,retry){let box;try{box=getBBoxFn(el.node);if(isNulledBox(box)&&!domContains(el.node)){throw new Error("Element not in the dom")}}catch(e){box=retry(el)}return box}function bbox(){const getBBox=node=>node.getBBox();const retry=el=>{try{const clone=el.clone().addTo(parser().svg).show();const box=clone.node.getBBox();clone.remove();return box}catch(e){throw new Error(`Getting bbox of element "${el.node.nodeName}" is not possible: ${e.toString()}`)}};const box=getBox(this,getBBox,retry);const bbox=new Box(box);return bbox}function rbox(el){const getRBox=node=>node.getBoundingClientRect();const retry=el=>{throw new Error(`Getting rbox of element "${el.node.nodeName}" is not possible`)};const box=getBox(this,getRBox,retry);const rbox=new Box(box);if(el){return rbox.transform(el.screenCTM().inverseO())}return rbox.addOffset()}function inside(x,y){const box=this.bbox();return x>box.x&&y>box.y&&x{return fnOrMethodName.call(el,el,i,arr)})}else{return this.map(el=>{return el[fnOrMethodName](...args)})}},toArray(){return Array.prototype.concat.apply([],this)}});const reserved=["toArray","constructor","each"];List.extend=function(methods){methods=methods.reduce((obj,name)=>{if(reserved.includes(name))return obj;if(name[0]==="_")return obj;obj[name]=function(...attrs){return this.each(name,...attrs)};return obj},{});extend([List],methods)};function baseFind(query,parent){return new List(map((parent||globals.document).querySelectorAll(query),function(node){return adopt(node)}))}function find(query){return baseFind(query,this.node)}function findOne(query){return adopt(this.node.querySelector(query))}let listenerId=0;const windowEvents={};function getEvents(instance){let n=instance.getEventHolder();if(n===globals.window)n=windowEvents;if(!n.events)n.events={};return n.events}function getEventTarget(instance){return instance.getEventTarget()}function clearEvents(instance){let n=instance.getEventHolder();if(n===globals.window)n=windowEvents;if(n.events)n.events={}}function on(node,events,listener,binding,options){const l=listener.bind(binding||node);const instance=makeInstance(node);const bag=getEvents(instance);const n=getEventTarget(instance);events=Array.isArray(events)?events:events.split(delimiter);if(!listener._svgjsListenerId){listener._svgjsListenerId=++listenerId}events.forEach(function(event){const ev=event.split(".")[0];const ns=event.split(".")[1]||"*";bag[ev]=bag[ev]||{};bag[ev][ns]=bag[ev][ns]||{};bag[ev][ns][listener._svgjsListenerId]=l;n.addEventListener(ev,l,options||false)})}function off(node,events,listener,options){const instance=makeInstance(node);const bag=getEvents(instance);const n=getEventTarget(instance);if(typeof listener==="function"){listener=listener._svgjsListenerId;if(!listener)return}events=Array.isArray(events)?events:(events||"").split(delimiter);events.forEach(function(event){const ev=event&&event.split(".")[0];const ns=event&&event.split(".")[1];let namespace,l;if(listener){if(bag[ev]&&bag[ev][ns||"*"]){n.removeEventListener(ev,bag[ev][ns||"*"][listener],options||false);delete bag[ev][ns||"*"][listener]}}else if(ev&&ns){if(bag[ev]&&bag[ev][ns]){for(l in bag[ev][ns]){off(n,[ev,ns].join("."),l)}delete bag[ev][ns]}}else if(ns){for(event in bag){for(namespace in bag[event]){if(ns===namespace){off(n,[event,ns].join("."))}}}}else if(ev){if(bag[ev]){for(namespace in bag[ev]){off(n,[ev,namespace].join("."))}delete bag[ev]}}else{for(event in bag){off(n,event)}clearEvents(instance)}})}function dispatch(node,event,data,options){const n=getEventTarget(node);if(event instanceof globals.window.Event){n.dispatchEvent(event)}else{event=new globals.window.CustomEvent(event,{detail:data,cancelable:true,...options});n.dispatchEvent(event)}return event}class EventTarget extends Base{addEventListener(){}dispatch(event,data,options){return dispatch(this,event,data,options)}dispatchEvent(event){const bag=this.getEventHolder().events;if(!bag)return true;const events=bag[event.type];for(const i in events){for(const j in events[i]){events[i][j](event)}}return!event.defaultPrevented}fire(event,data,options){this.dispatch(event,data,options);return this}getEventHolder(){return this}getEventTarget(){return this}off(event,listener,options){off(this,event,listener,options);return this}on(event,listener,binding,options){on(this,event,listener,binding,options);return this}removeEventListener(){}}register(EventTarget,"EventTarget");function noop(){}const timeline={duration:400,ease:">",delay:0};const attrs={"fill-opacity":1,"stroke-opacity":1,"stroke-width":0,"stroke-linejoin":"miter","stroke-linecap":"butt",fill:"#000000",stroke:"#000000",opacity:1,x:0,y:0,cx:0,cy:0,width:0,height:0,r:0,rx:0,ry:0,offset:0,"stop-opacity":1,"stop-color":"#000000","text-anchor":"start"};var defaults={__proto__:null,noop:noop,timeline:timeline,attrs:attrs};class SVGArray extends Array{constructor(...args){super(...args);this.init(...args)}clone(){return new this.constructor(this)}init(arr){if(typeof arr==="number")return this;this.length=0;this.push(...this.parse(arr));return this}parse(array=[]){if(array instanceof Array)return array;return array.trim().split(delimiter).map(parseFloat)}toArray(){return Array.prototype.concat.apply([],this)}toSet(){return new Set(this)}toString(){return this.join(" ")}valueOf(){const ret=[];ret.push(...this);return ret}}class SVGNumber{constructor(...args){this.init(...args)}convert(unit){return new SVGNumber(this.value,unit)}divide(number){number=new SVGNumber(number);return new SVGNumber(this/number,this.unit||number.unit)}init(value,unit){unit=Array.isArray(value)?value[1]:unit;value=Array.isArray(value)?value[0]:value;this.value=0;this.unit=unit||"";if(typeof value==="number"){this.value=isNaN(value)?0:!isFinite(value)?value<0?-34e37:+34e37:value}else if(typeof value==="string"){unit=value.match(numberAndUnit);if(unit){this.value=parseFloat(unit[1]);if(unit[5]==="%"){this.value/=100}else if(unit[5]==="s"){this.value*=1e3}this.unit=unit[5]}}else{if(value instanceof SVGNumber){this.value=value.valueOf();this.unit=value.unit}}return this}minus(number){number=new SVGNumber(number);return new SVGNumber(this-number,this.unit||number.unit)}plus(number){number=new SVGNumber(number);return new SVGNumber(this+number,this.unit||number.unit)}times(number){number=new SVGNumber(number);return new SVGNumber(this*number,this.unit||number.unit)}toArray(){return[this.value,this.unit]}toJSON(){return this.toString()}toString(){return(this.unit==="%"?~~(this.value*1e8)/1e6:this.unit==="s"?this.value/1e3:this.value)+this.unit}valueOf(){return this.value}}const hooks=[];function registerAttrHook(fn){hooks.push(fn)}function attr(attr,val,ns){if(attr==null){attr={};val=this.node.attributes;for(const node of val){attr[node.nodeName]=isNumber.test(node.nodeValue)?parseFloat(node.nodeValue):node.nodeValue}return attr}else if(attr instanceof Array){return attr.reduce((last,curr)=>{last[curr]=this.attr(curr);return last},{})}else if(typeof attr==="object"&&attr.constructor===Object){for(val in attr)this.attr(val,attr[val])}else if(val===null){this.node.removeAttribute(attr)}else if(val==null){val=this.node.getAttribute(attr);return val==null?attrs[attr]:isNumber.test(val)?parseFloat(val):val}else{val=hooks.reduce((_val,hook)=>{return hook(attr,_val,this)},val);if(typeof val==="number"){val=new SVGNumber(val)}else if(Color.isColor(val)){val=new Color(val)}else if(val.constructor===Array){val=new SVGArray(val)}if(attr==="leading"){if(this.leading){this.leading(val)}}else{typeof ns==="string"?this.node.setAttributeNS(ns,attr,val.toString()):this.node.setAttribute(attr,val.toString())}if(this.rebuild&&(attr==="font-size"||attr==="x")){this.rebuild()}}return this}class Dom extends EventTarget{constructor(node,attrs){super();this.node=node;this.type=node.nodeName;if(attrs&&node!==attrs){this.attr(attrs)}}add(element,i){element=makeInstance(element);if(element.removeNamespace&&this.node instanceof globals.window.SVGElement){element.removeNamespace()}if(i==null){this.node.appendChild(element.node)}else if(element.node!==this.node.childNodes[i]){this.node.insertBefore(element.node,this.node.childNodes[i])}return this}addTo(parent,i){return makeInstance(parent).put(this,i)}children(){return new List(map(this.node.children,function(node){return adopt(node)}))}clear(){while(this.node.hasChildNodes()){this.node.removeChild(this.node.lastChild)}return this}clone(deep=true){this.writeDataToDom();return new this.constructor(assignNewId(this.node.cloneNode(deep)))}each(block,deep){const children=this.children();let i,il;for(i=0,il=children.length;i=0}html(htmlOrFn,outerHTML){return this.xml(htmlOrFn,outerHTML,html)}id(id){if(typeof id==="undefined"&&!this.node.id){this.node.id=eid(this.type)}return this.attr("id",id)}index(element){return[].slice.call(this.node.childNodes).indexOf(element.node)}last(){return adopt(this.node.lastChild)}matches(selector){const el=this.node;const matcher=el.matches||el.matchesSelector||el.msMatchesSelector||el.mozMatchesSelector||el.webkitMatchesSelector||el.oMatchesSelector||null;return matcher&&matcher.call(el,selector)}parent(type){let parent=this;if(!parent.node.parentNode)return null;parent=adopt(parent.node.parentNode);if(!type)return parent;do{if(typeof type==="string"?parent.matches(type):parent instanceof type)return parent}while(parent=adopt(parent.node.parentNode));return parent}put(element,i){element=makeInstance(element);this.add(element,i);return element}putIn(parent,i){return makeInstance(parent).add(this,i)}remove(){if(this.parent()){this.parent().removeElement(this)}return this}removeElement(element){this.node.removeChild(element.node);return this}replace(element){element=makeInstance(element);if(this.node.parentNode){this.node.parentNode.replaceChild(element.node,this.node)}return element}round(precision=2,map=null){const factor=10**precision;const attrs=this.attr(map);for(const i in attrs){if(typeof attrs[i]==="number"){attrs[i]=Math.round(attrs[i]*factor)/factor}}this.attr(attrs);return this}svg(svgOrFn,outerSVG){return this.xml(svgOrFn,outerSVG,svg)}toString(){return this.id()}words(text){this.node.textContent=text;return this}wrap(node){const parent=this.parent();if(!parent){return this.addTo(node)}const position=parent.index(this);return parent.put(node,position).put(this)}writeDataToDom(){this.each(function(){this.writeDataToDom()});return this}xml(xmlOrFn,outerXML,ns){if(typeof xmlOrFn==="boolean"){ns=outerXML;outerXML=xmlOrFn;xmlOrFn=null}if(xmlOrFn==null||typeof xmlOrFn==="function"){outerXML=outerXML==null?true:outerXML;this.writeDataToDom();let current=this;if(xmlOrFn!=null){current=adopt(current.node.cloneNode(true));if(outerXML){const result=xmlOrFn(current);current=result||current;if(result===false)return""}current.each(function(){const result=xmlOrFn(this);const _this=result||this;if(result===false){this.remove()}else if(result&&this!==_this){this.replace(_this)}},true)}return outerXML?current.node.outerHTML:current.node.innerHTML}outerXML=outerXML==null?false:outerXML;const well=create("wrapper",ns);const fragment=globals.document.createDocumentFragment();well.innerHTML=xmlOrFn;for(let len=well.children.length;len--;){fragment.appendChild(well.firstElementChild)}const parent=this.parent();return outerXML?this.replace(fragment)&&parent:this.add(fragment)}}extend(Dom,{attr:attr,find:find,findOne:findOne});register(Dom,"Dom");class Element extends Dom{constructor(node,attrs){super(node,attrs);this.dom={};this.node.instance=this;if(node.hasAttribute("svgjs:data")){this.setData(JSON.parse(node.getAttribute("svgjs:data"))||{})}}center(x,y){return this.cx(x).cy(y)}cx(x){return x==null?this.x()+this.width()/2:this.x(x-this.width()/2)}cy(y){return y==null?this.y()+this.height()/2:this.y(y-this.height()/2)}defs(){const root=this.root();return root&&root.defs()}dmove(x,y){return this.dx(x).dy(y)}dx(x=0){return this.x(new SVGNumber(x).plus(this.x()))}dy(y=0){return this.y(new SVGNumber(y).plus(this.y()))}getEventHolder(){return this}height(height){return this.attr("height",height)}move(x,y){return this.x(x).y(y)}parents(until=this.root()){const isSelector=typeof until==="string";if(!isSelector){until=makeInstance(until)}const parents=new List;let parent=this;while((parent=parent.parent())&&parent.node!==globals.document&&parent.nodeName!=="#document-fragment"){parents.push(parent);if(!isSelector&&parent.node===until.node){break}if(isSelector&&parent.matches(until)){break}if(parent.node===this.root().node){return null}}return parents}reference(attr){attr=this.attr(attr);if(!attr)return null;const m=(attr+"").match(reference);return m?makeInstance(m[1]):null}root(){const p=this.parent(getClass(root));return p&&p.root()}setData(o){this.dom=o;return this}size(width,height){const p=proportionalSize(this,width,height);return this.width(new SVGNumber(p.width)).height(new SVGNumber(p.height))}width(width){return this.attr("width",width)}writeDataToDom(){this.node.removeAttribute("svgjs:data");if(Object.keys(this.dom).length){this.node.setAttribute("svgjs:data",JSON.stringify(this.dom))}return super.writeDataToDom()}x(x){return this.attr("x",x)}y(y){return this.attr("y",y)}}extend(Element,{bbox:bbox,rbox:rbox,inside:inside,point:point,ctm:ctm,screenCTM:screenCTM});register(Element,"Element");const sugar={stroke:["color","width","opacity","linecap","linejoin","miterlimit","dasharray","dashoffset"],fill:["color","opacity","rule"],prefix:function(t,a){return a==="color"?t:t+"-"+a}};["fill","stroke"].forEach(function(m){const extension={};let i;extension[m]=function(o){if(typeof o==="undefined"){return this.attr(m)}if(typeof o==="string"||o instanceof Color||Color.isRgb(o)||o instanceof Element){this.attr(m,o)}else{for(i=sugar[m].length-1;i>=0;i--){if(o[sugar[m][i]]!=null){this.attr(sugar.prefix(m,sugar[m][i]),o[sugar[m][i]])}}}return this};registerMethods(["Element","Runner"],extension)});registerMethods(["Element","Runner"],{matrix:function(mat,b,c,d,e,f){if(mat==null){return new Matrix(this)}return this.attr("transform",new Matrix(mat,b,c,d,e,f))},rotate:function(angle,cx,cy){return this.transform({rotate:angle,ox:cx,oy:cy},true)},skew:function(x,y,cx,cy){return arguments.length===1||arguments.length===3?this.transform({skew:x,ox:y,oy:cx},true):this.transform({skew:[x,y],ox:cx,oy:cy},true)},shear:function(lam,cx,cy){return this.transform({shear:lam,ox:cx,oy:cy},true)},scale:function(x,y,cx,cy){return arguments.length===1||arguments.length===3?this.transform({scale:x,ox:y,oy:cx},true):this.transform({scale:[x,y],ox:cx,oy:cy},true)},translate:function(x,y){return this.transform({translate:[x,y]},true)},relative:function(x,y){return this.transform({relative:[x,y]},true)},flip:function(direction="both",origin="center"){if("xybothtrue".indexOf(direction)===-1){origin=direction;direction="both"}return this.transform({flip:direction,origin:origin},true)},opacity:function(value){return this.attr("opacity",value)}});registerMethods("radius",{radius:function(x,y=x){const type=(this._element||this).type;return type==="radialGradient"?this.attr("r",new SVGNumber(x)):this.rx(x).ry(y)}});registerMethods("Path",{length:function(){return this.node.getTotalLength()},pointAt:function(length){return new Point(this.node.getPointAtLength(length))}});registerMethods(["Element","Runner"],{font:function(a,v){if(typeof a==="object"){for(v in a)this.font(v,a[v]);return this}return a==="leading"?this.leading(v):a==="anchor"?this.attr("text-anchor",v):a==="size"||a==="family"||a==="weight"||a==="stretch"||a==="variant"||a==="style"?this.attr("font-"+a,v):this.attr(a,v)}});const methods=["click","dblclick","mousedown","mouseup","mouseover","mouseout","mousemove","mouseenter","mouseleave","touchstart","touchmove","touchleave","touchend","touchcancel"].reduce(function(last,event){const fn=function(f){if(f===null){this.off(event)}else{this.on(event,f)}return this};last[event]=fn;return last},{});registerMethods("Element",methods);function untransform(){return this.attr("transform",null)}function matrixify(){const matrix=(this.attr("transform")||"").split(transforms).slice(0,-1).map(function(str){const kv=str.trim().split("(");return[kv[0],kv[1].split(delimiter).map(function(str){return parseFloat(str)})]}).reverse().reduce(function(matrix,transform){if(transform[0]==="matrix"){return matrix.lmultiply(Matrix.fromArray(transform[1]))}return matrix[transform[0]].apply(matrix,transform[1])},new Matrix);return matrix}function toParent(parent,i){if(this===parent)return this;const ctm=this.screenCTM();const pCtm=parent.screenCTM().inverse();this.addTo(parent,i).untransform().transform(pCtm.multiply(ctm));return this}function toRoot(i){return this.toParent(this.root(),i)}function transform(o,relative){if(o==null||typeof o==="string"){const decomposed=new Matrix(this).decompose();return o==null?decomposed:decomposed[o]}if(!Matrix.isMatrixLike(o)){o={...o,origin:getOrigin(o,this)}}const cleanRelative=relative===true?this:relative||false;const result=new Matrix(cleanRelative).transform(o);return this.attr("transform",result)}registerMethods("Element",{untransform:untransform,matrixify:matrixify,toParent:toParent,toRoot:toRoot,transform:transform});class Container extends Element{flatten(parent=this,index){this.each(function(){if(this instanceof Container){return this.flatten().ungroup()}});return this}ungroup(parent=this.parent(),index=parent.index(this)){index=index===-1?parent.children().length:index;this.each(function(i,children){return children[children.length-i-1].toParent(parent,index)});return this.remove()}}register(Container,"Container");class Defs extends Container{constructor(node,attrs=node){super(nodeOrNew("defs",node),attrs)}flatten(){return this}ungroup(){return this}}register(Defs,"Defs");class Shape extends Element{}register(Shape,"Shape");function rx(rx){return this.attr("rx",rx)}function ry(ry){return this.attr("ry",ry)}function x$3(x){return x==null?this.cx()-this.rx():this.cx(x+this.rx())}function y$3(y){return y==null?this.cy()-this.ry():this.cy(y+this.ry())}function cx$1(x){return this.attr("cx",x)}function cy$1(y){return this.attr("cy",y)}function width$2(width){return width==null?this.rx()*2:this.rx(new SVGNumber(width).divide(2))}function height$2(height){return height==null?this.ry()*2:this.ry(new SVGNumber(height).divide(2))}var circled={__proto__:null,rx:rx,ry:ry,x:x$3,y:y$3,cx:cx$1,cy:cy$1,width:width$2,height:height$2};class Ellipse extends Shape{constructor(node,attrs=node){super(nodeOrNew("ellipse",node),attrs)}size(width,height){const p=proportionalSize(this,width,height);return this.rx(new SVGNumber(p.width).divide(2)).ry(new SVGNumber(p.height).divide(2))}}extend(Ellipse,circled);registerMethods("Container",{ellipse:wrapWithAttrCheck(function(width=0,height=width){return this.put(new Ellipse).size(width,height).move(0,0)})});register(Ellipse,"Ellipse");class Fragment extends Dom{constructor(node=globals.document.createDocumentFragment()){super(node)}xml(xmlOrFn,outerXML,ns){if(typeof xmlOrFn==="boolean"){ns=outerXML;outerXML=xmlOrFn;xmlOrFn=null}if(xmlOrFn==null||typeof xmlOrFn==="function"){const wrapper=new Dom(create("wrapper",ns));wrapper.add(this.node.cloneNode(true));return wrapper.xml(false,ns)}return super.xml(xmlOrFn,false,ns)}}register(Fragment,"Fragment");function from(x,y){return(this._element||this).type==="radialGradient"?this.attr({fx:new SVGNumber(x),fy:new SVGNumber(y)}):this.attr({x1:new SVGNumber(x),y1:new SVGNumber(y)})}function to(x,y){return(this._element||this).type==="radialGradient"?this.attr({cx:new SVGNumber(x),cy:new SVGNumber(y)}):this.attr({x2:new SVGNumber(x),y2:new SVGNumber(y)})}var gradiented={__proto__:null,from:from,to:to};class Gradient extends Container{constructor(type,attrs){super(nodeOrNew(type+"Gradient",typeof type==="string"?null:type),attrs)}attr(a,b,c){if(a==="transform")a="gradientTransform";return super.attr(a,b,c)}bbox(){return new Box}targets(){return baseFind('svg [fill*="'+this.id()+'"]')}toString(){return this.url()}update(block){this.clear();if(typeof block==="function"){block.call(this,this)}return this}url(){return'url("#'+this.id()+'")'}}extend(Gradient,gradiented);registerMethods({Container:{gradient(...args){return this.defs().gradient(...args)}},Defs:{gradient:wrapWithAttrCheck(function(type,block){return this.put(new Gradient(type)).update(block)})}});register(Gradient,"Gradient");class Pattern extends Container{constructor(node,attrs=node){super(nodeOrNew("pattern",node),attrs)}attr(a,b,c){if(a==="transform")a="patternTransform";return super.attr(a,b,c)}bbox(){return new Box}targets(){return baseFind('svg [fill*="'+this.id()+'"]')}toString(){return this.url()}update(block){this.clear();if(typeof block==="function"){block.call(this,this)}return this}url(){return'url("#'+this.id()+'")'}}registerMethods({Container:{pattern(...args){return this.defs().pattern(...args)}},Defs:{pattern:wrapWithAttrCheck(function(width,height,block){return this.put(new Pattern).update(block).attr({x:0,y:0,width:width,height:height,patternUnits:"userSpaceOnUse"})})}});register(Pattern,"Pattern");class Image extends Shape{constructor(node,attrs=node){super(nodeOrNew("image",node),attrs)}load(url,callback){if(!url)return this;const img=new globals.window.Image;on(img,"load",function(e){const p=this.parent(Pattern);if(this.width()===0&&this.height()===0){this.size(img.width,img.height)}if(p instanceof Pattern){if(p.width()===0&&p.height()===0){p.size(this.width(),this.height())}}if(typeof callback==="function"){callback.call(this,e)}},this);on(img,"load error",function(){off(img)});return this.attr("href",img.src=url,xlink)}}registerAttrHook(function(attr,val,_this){if(attr==="fill"||attr==="stroke"){if(isImage.test(val)){val=_this.root().defs().image(val)}}if(val instanceof Image){val=_this.root().defs().pattern(0,0,pattern=>{pattern.add(val)})}return val});registerMethods({Container:{image:wrapWithAttrCheck(function(source,callback){return this.put(new Image).size(0,0).load(source,callback)})}});register(Image,"Image");class PointArray extends SVGArray{bbox(){let maxX=-Infinity;let maxY=-Infinity;let minX=Infinity;let minY=Infinity;this.forEach(function(el){maxX=Math.max(el[0],maxX);maxY=Math.max(el[1],maxY);minX=Math.min(el[0],minX);minY=Math.min(el[1],minY)});return new Box(minX,minY,maxX-minX,maxY-minY)}move(x,y){const box=this.bbox();x-=box.x;y-=box.y;if(!isNaN(x)&&!isNaN(y)){for(let i=this.length-1;i>=0;i--){this[i]=[this[i][0]+x,this[i][1]+y]}}return this}parse(array=[0,0]){const points=[];if(array instanceof Array){array=Array.prototype.concat.apply([],array)}else{array=array.trim().split(delimiter).map(parseFloat)}if(array.length%2!==0)array.pop();for(let i=0,len=array.length;i=0;i--){if(box.width)this[i][0]=(this[i][0]-box.x)*width/box.width+box.x;if(box.height)this[i][1]=(this[i][1]-box.y)*height/box.height+box.y}return this}toLine(){return{x1:this[0][0],y1:this[0][1],x2:this[1][0],y2:this[1][1]}}toString(){const array=[];for(let i=0,il=this.length;i":function(pos){return-Math.cos(pos*Math.PI)/2+.5},">":function(pos){return Math.sin(pos*Math.PI/2)},"<":function(pos){return-Math.cos(pos*Math.PI/2)+1},bezier:function(x1,y1,x2,y2){return function(t){if(t<0){if(x1>0){return y1/x1*t}else if(x2>0){return y2/x2*t}else{return 0}}else if(t>1){if(x2<1){return(1-y2)/(1-x2)*t+(y2-x2)/(1-x2)}else if(x1<1){return(1-y1)/(1-x1)*t+(y1-x1)/(1-x1)}else{return 1}}else{return 3*t*(1-t)**2*y1+3*t**2*(1-t)*y2+t**3}}},steps:function(steps,stepPosition="end"){stepPosition=stepPosition.split("-").reverse()[0];let jumps=steps;if(stepPosition==="none"){--jumps}else if(stepPosition==="both"){++jumps}return(t,beforeFlag=false)=>{let step=Math.floor(t*steps);const jumping=t*step%1===0;if(stepPosition==="start"||stepPosition==="both"){++step}if(beforeFlag&&jumping){--step}if(t>=0&&step<0){step=0}if(t<=1&&step>jumps){step=jumps}return step/jumps}}};class Stepper{done(){return false}}class Ease extends Stepper{constructor(fn=timeline.ease){super();this.ease=easing[fn]||fn}step(from,to,pos){if(typeof from!=="number"){return pos<1?from:to}return from+(to-from)*this.ease(pos)}}class Controller extends Stepper{constructor(fn){super();this.stepper=fn}done(c){return c.done}step(current,target,dt,c){return this.stepper(current,target,dt,c)}}function recalculate(){const duration=(this._duration||500)/1e3;const overshoot=this._overshoot||0;const eps=1e-10;const pi=Math.PI;const os=Math.log(overshoot/100+eps);const zeta=-os/Math.sqrt(pi*pi+os*os);const wn=3.9/(zeta*duration);this.d=2*zeta*wn;this.k=wn*wn}class Spring extends Controller{constructor(duration=500,overshoot=0){super();this.duration(duration).overshoot(overshoot)}step(current,target,dt,c){if(typeof current==="string")return current;c.done=dt===Infinity;if(dt===Infinity)return target;if(dt===0)return current;if(dt>100)dt=16;dt/=1e3;const velocity=c.velocity||0;const acceleration=-this.d*velocity-this.k*(current-target);const newPosition=current+velocity*dt+acceleration*dt*dt/2;c.velocity=velocity+acceleration*dt;c.done=Math.abs(target-newPosition)+Math.abs(velocity)<.002;return c.done?target:newPosition}}extend(Spring,{duration:makeSetterGetter("_duration",recalculate),overshoot:makeSetterGetter("_overshoot",recalculate)});class PID extends Controller{constructor(p=.1,i=.01,d=0,windup=1e3){super();this.p(p).i(i).d(d).windup(windup)}step(current,target,dt,c){if(typeof current==="string")return current;c.done=dt===Infinity;if(dt===Infinity)return target;if(dt===0)return current;const p=target-current;let i=(c.integral||0)+p*dt;const d=(p-(c.error||0))/dt;const windup=this._windup;if(windup!==false){i=Math.max(-windup,Math.min(i,windup))}c.error=p;c.integral=i;c.done=Math.abs(p)<.001;return c.done?target:current+(this.P*p+this.I*i+this.D*d)}}extend(PID,{windup:makeSetterGetter("_windup"),p:makeSetterGetter("P"),i:makeSetterGetter("I"),d:makeSetterGetter("D")});const segmentParameters={M:2,L:2,H:1,V:1,C:6,S:4,Q:4,T:2,A:7,Z:0};const pathHandlers={M:function(c,p,p0){p.x=p0.x=c[0];p.y=p0.y=c[1];return["M",p.x,p.y]},L:function(c,p){p.x=c[0];p.y=c[1];return["L",c[0],c[1]]},H:function(c,p){p.x=c[0];return["H",c[0]]},V:function(c,p){p.y=c[0];return["V",c[0]]},C:function(c,p){p.x=c[4];p.y=c[5];return["C",c[0],c[1],c[2],c[3],c[4],c[5]]},S:function(c,p){p.x=c[2];p.y=c[3];return["S",c[0],c[1],c[2],c[3]]},Q:function(c,p){p.x=c[2];p.y=c[3];return["Q",c[0],c[1],c[2],c[3]]},T:function(c,p){p.x=c[0];p.y=c[1];return["T",c[0],c[1]]},Z:function(c,p,p0){p.x=p0.x;p.y=p0.y;return["Z"]},A:function(c,p){p.x=c[5];p.y=c[6];return["A",c[0],c[1],c[2],c[3],c[4],c[5],c[6]]}};const mlhvqtcsaz="mlhvqtcsaz".split("");for(let i=0,il=mlhvqtcsaz.length;i=0;i--){l=this[i][0];if(l==="M"||l==="L"||l==="T"){this[i][1]+=x;this[i][2]+=y}else if(l==="H"){this[i][1]+=x}else if(l==="V"){this[i][1]+=y}else if(l==="C"||l==="S"||l==="Q"){this[i][1]+=x;this[i][2]+=y;this[i][3]+=x;this[i][4]+=y;if(l==="C"){this[i][5]+=x;this[i][6]+=y}}else if(l==="A"){this[i][6]+=x;this[i][7]+=y}}}return this}parse(d="M0 0"){if(Array.isArray(d)){d=Array.prototype.concat.apply([],d).toString()}return pathParser(d)}size(width,height){const box=this.bbox();let i,l;box.width=box.width===0?1:box.width;box.height=box.height===0?1:box.height;for(i=this.length-1;i>=0;i--){l=this[i][0];if(l==="M"||l==="L"||l==="T"){this[i][1]=(this[i][1]-box.x)*width/box.width+box.x;this[i][2]=(this[i][2]-box.y)*height/box.height+box.y}else if(l==="H"){this[i][1]=(this[i][1]-box.x)*width/box.width+box.x}else if(l==="V"){this[i][1]=(this[i][1]-box.y)*height/box.height+box.y}else if(l==="C"||l==="S"||l==="Q"){this[i][1]=(this[i][1]-box.x)*width/box.width+box.x;this[i][2]=(this[i][2]-box.y)*height/box.height+box.y;this[i][3]=(this[i][3]-box.x)*width/box.width+box.x;this[i][4]=(this[i][4]-box.y)*height/box.height+box.y;if(l==="C"){this[i][5]=(this[i][5]-box.x)*width/box.width+box.x;this[i][6]=(this[i][6]-box.y)*height/box.height+box.y}}else if(l==="A"){this[i][1]=this[i][1]*width/box.width;this[i][2]=this[i][2]*height/box.height;this[i][6]=(this[i][6]-box.x)*width/box.width+box.x;this[i][7]=(this[i][7]-box.y)*height/box.height+box.y}}return this}toString(){return arrayToString(this)}}const getClassForType=value=>{const type=typeof value;if(type==="number"){return SVGNumber}else if(type==="string"){if(Color.isColor(value)){return Color}else if(delimiter.test(value)){return isPathLetter.test(value)?PathArray:SVGArray}else if(numberAndUnit.test(value)){return SVGNumber}else{return NonMorphable}}else if(morphableTypes.indexOf(value.constructor)>-1){return value.constructor}else if(Array.isArray(value)){return SVGArray}else if(type==="object"){return ObjectBag}else{return NonMorphable}};class Morphable{constructor(stepper){this._stepper=stepper||new Ease("-");this._from=null;this._to=null;this._type=null;this._context=null;this._morphObj=null}at(pos){return this._morphObj.morph(this._from,this._to,pos,this._stepper,this._context)}done(){const complete=this._context.map(this._stepper.done).reduce(function(last,curr){return last&&curr},true);return complete}from(val){if(val==null){return this._from}this._from=this._set(val);return this}stepper(stepper){if(stepper==null)return this._stepper;this._stepper=stepper;return this}to(val){if(val==null){return this._to}this._to=this._set(val);return this}type(type){if(type==null){return this._type}this._type=type;return this}_set(value){if(!this._type){this.type(getClassForType(value))}let result=new this._type(value);if(this._type===Color){result=this._to?result[this._to[4]]():this._from?result[this._from[4]]():result}if(this._type===ObjectBag){result=this._to?result.align(this._to):this._from?result.align(this._from):result}result=result.toConsumable();this._morphObj=this._morphObj||new this._type;this._context=this._context||Array.apply(null,Array(result.length)).map(Object).map(function(o){o.done=true;return o});return result}}class NonMorphable{constructor(...args){this.init(...args)}init(val){val=Array.isArray(val)?val[0]:val;this.value=val;return this}toArray(){return[this.value]}valueOf(){return this.value}}class TransformBag{constructor(...args){this.init(...args)}init(obj){if(Array.isArray(obj)){obj={scaleX:obj[0],scaleY:obj[1],shear:obj[2],rotate:obj[3],translateX:obj[4],translateY:obj[5],originX:obj[6],originY:obj[7]}}Object.assign(this,TransformBag.defaults,obj);return this}toArray(){const v=this;return[v.scaleX,v.scaleY,v.shear,v.rotate,v.translateX,v.translateY,v.originX,v.originY]}}TransformBag.defaults={scaleX:1,scaleY:1,shear:0,rotate:0,translateX:0,translateY:0,originX:0,originY:0};const sortByKey=(a,b)=>{return a[0]b[0]?1:0};class ObjectBag{constructor(...args){this.init(...args)}align(other){const values=this.values;for(let i=0,il=values.length;ilast.concat(curr),[]);return this}toArray(){return this.values}valueOf(){const obj={};const arr=this.values;while(arr.length){const key=arr.shift();const Type=arr.shift();const num=arr.shift();const values=arr.splice(0,num);obj[key]=new Type(values)}return obj}}const morphableTypes=[NonMorphable,TransformBag,ObjectBag];function registerMorphableType(type=[]){morphableTypes.push(...[].concat(type))}function makeMorphable(){extend(morphableTypes,{to(val){return(new Morphable).type(this.constructor).from(this.toArray()).to(val)},fromArray(arr){this.init(arr);return this},toConsumable(){return this.toArray()},morph(from,to,pos,stepper,context){const mapper=function(i,index){return stepper.step(i,to[index],pos,context[index],context)};return this.fromArray(from.map(mapper))}})}class Path extends Shape{constructor(node,attrs=node){super(nodeOrNew("path",node),attrs)}array(){return this._array||(this._array=new PathArray(this.attr("d")))}clear(){delete this._array;return this}height(height){return height==null?this.bbox().height:this.size(this.bbox().width,height)}move(x,y){return this.attr("d",this.array().move(x,y))}plot(d){return d==null?this.array():this.clear().attr("d",typeof d==="string"?d:this._array=new PathArray(d))}size(width,height){const p=proportionalSize(this,width,height);return this.attr("d",this.array().size(p.width,p.height))}width(width){return width==null?this.bbox().width:this.size(width,this.bbox().height)}x(x){return x==null?this.bbox().x:this.move(x,this.bbox().y)}y(y){return y==null?this.bbox().y:this.move(this.bbox().x,y)}}Path.prototype.MorphArray=PathArray;registerMethods({Container:{path:wrapWithAttrCheck(function(d){return this.put(new Path).plot(d||new PathArray)})}});register(Path,"Path");function array(){return this._array||(this._array=new PointArray(this.attr("points")))}function clear(){delete this._array;return this}function move$2(x,y){return this.attr("points",this.array().move(x,y))}function plot(p){return p==null?this.array():this.clear().attr("points",typeof p==="string"?p:this._array=new PointArray(p))}function size$1(width,height){const p=proportionalSize(this,width,height);return this.attr("points",this.array().size(p.width,p.height))}var poly={__proto__:null,array:array,clear:clear,move:move$2,plot:plot,size:size$1};class Polygon extends Shape{constructor(node,attrs=node){super(nodeOrNew("polygon",node),attrs)}}registerMethods({Container:{polygon:wrapWithAttrCheck(function(p){return this.put(new Polygon).plot(p||new PointArray)})}});extend(Polygon,pointed);extend(Polygon,poly);register(Polygon,"Polygon");class Polyline extends Shape{constructor(node,attrs=node){super(nodeOrNew("polyline",node),attrs)}}registerMethods({Container:{polyline:wrapWithAttrCheck(function(p){return this.put(new Polyline).plot(p||new PointArray)})}});extend(Polyline,pointed);extend(Polyline,poly);register(Polyline,"Polyline");class Rect extends Shape{constructor(node,attrs=node){super(nodeOrNew("rect",node),attrs)}}extend(Rect,{rx:rx,ry:ry});registerMethods({Container:{rect:wrapWithAttrCheck(function(width,height){return this.put(new Rect).size(width,height)})}});register(Rect,"Rect");class Queue{constructor(){this._first=null;this._last=null}first(){return this._first&&this._first.value}last(){return this._last&&this._last.value}push(value){const item=typeof value.next!=="undefined"?value:{value:value,next:null,prev:null};if(this._last){item.prev=this._last;this._last.next=item;this._last=item}else{this._last=item;this._first=item}return item}remove(item){if(item.prev)item.prev.next=item.next;if(item.next)item.next.prev=item.prev;if(item===this._last)this._last=item.prev;if(item===this._first)this._first=item.next;item.prev=null;item.next=null}shift(){const remove=this._first;if(!remove)return null;this._first=remove.next;if(this._first)this._first.prev=null;this._last=this._first?this._last:null;return remove.value}}const Animator={nextDraw:null,frames:new Queue,timeouts:new Queue,immediates:new Queue,timer:()=>globals.window.performance||globals.window.Date,transforms:[],frame(fn){const node=Animator.frames.push({run:fn});if(Animator.nextDraw===null){Animator.nextDraw=globals.window.requestAnimationFrame(Animator._draw)}return node},timeout(fn,delay){delay=delay||0;const time=Animator.timer().now()+delay;const node=Animator.timeouts.push({run:fn,time:time});if(Animator.nextDraw===null){Animator.nextDraw=globals.window.requestAnimationFrame(Animator._draw)}return node},immediate(fn){const node=Animator.immediates.push(fn);if(Animator.nextDraw===null){Animator.nextDraw=globals.window.requestAnimationFrame(Animator._draw)}return node},cancelFrame(node){node!=null&&Animator.frames.remove(node)},clearTimeout(node){node!=null&&Animator.timeouts.remove(node)},cancelImmediate(node){node!=null&&Animator.immediates.remove(node)},_draw(now){let nextTimeout=null;const lastTimeout=Animator.timeouts.last();while(nextTimeout=Animator.timeouts.shift()){if(now>=nextTimeout.time){nextTimeout.run()}else{Animator.timeouts.push(nextTimeout)}if(nextTimeout===lastTimeout)break}let nextFrame=null;const lastFrame=Animator.frames.last();while(nextFrame!==lastFrame&&(nextFrame=Animator.frames.shift())){nextFrame.run(now)}let nextImmediate=null;while(nextImmediate=Animator.immediates.shift()){nextImmediate()}Animator.nextDraw=Animator.timeouts.first()||Animator.frames.first()?globals.window.requestAnimationFrame(Animator._draw):null}};const makeSchedule=function(runnerInfo){const start=runnerInfo.start;const duration=runnerInfo.runner.duration();const end=start+duration;return{start:start,duration:duration,end:end,runner:runnerInfo.runner}};const defaultSource=function(){const w=globals.window;return(w.performance||w.Date).now()};class Timeline extends EventTarget{constructor(timeSource=defaultSource){super();this._timeSource=timeSource;this._startTime=0;this._speed=1;this._persist=0;this._nextFrame=null;this._paused=true;this._runners=[];this._runnerIds=[];this._lastRunnerId=-1;this._time=0;this._lastSourceTime=0;this._lastStepTime=0;this._step=this._stepFn.bind(this,false);this._stepImmediate=this._stepFn.bind(this,true)}active(){return!!this._nextFrame}finish(){this.time(this.getEndTimeOfTimeline()+1);return this.pause()}getEndTime(){const lastRunnerInfo=this.getLastRunnerInfo();const lastDuration=lastRunnerInfo?lastRunnerInfo.runner.duration():0;const lastStartTime=lastRunnerInfo?lastRunnerInfo.start:this._time;return lastStartTime+lastDuration}getEndTimeOfTimeline(){const endTimes=this._runners.map(i=>i.start+i.runner.duration());return Math.max(0,...endTimes)}getLastRunnerInfo(){return this.getRunnerInfoById(this._lastRunnerId)}getRunnerInfoById(id){return this._runners[this._runnerIds.indexOf(id)]||null}pause(){this._paused=true;return this._continue()}persist(dtOrForever){if(dtOrForever==null)return this._persist;this._persist=dtOrForever;return this}play(){this._paused=false;return this.updateTime()._continue()}reverse(yes){const currentSpeed=this.speed();if(yes==null)return this.speed(-currentSpeed);const positive=Math.abs(currentSpeed);return this.speed(yes?-positive:positive)}schedule(runner,delay,when){if(runner==null){return this._runners.map(makeSchedule)}let absoluteStartTime=0;const endTime=this.getEndTime();delay=delay||0;if(when==null||when==="last"||when==="after"){absoluteStartTime=endTime}else if(when==="absolute"||when==="start"){absoluteStartTime=delay;delay=0}else if(when==="now"){absoluteStartTime=this._time}else if(when==="relative"){const runnerInfo=this.getRunnerInfoById(runner.id);if(runnerInfo){absoluteStartTime=runnerInfo.start+delay;delay=0}}else if(when==="with-last"){const lastRunnerInfo=this.getLastRunnerInfo();const lastStartTime=lastRunnerInfo?lastRunnerInfo.start:this._time;absoluteStartTime=lastStartTime}else{throw new Error('Invalid value for the "when" parameter')}runner.unschedule();runner.timeline(this);const persist=runner.persist();const runnerInfo={persist:persist===null?this._persist:persist,start:absoluteStartTime+delay,runner:runner};this._lastRunnerId=runner.id;this._runners.push(runnerInfo);this._runners.sort((a,b)=>a.start-b.start);this._runnerIds=this._runners.map(info=>info.runner.id);this.updateTime()._continue();return this}seek(dt){return this.time(this._time+dt)}source(fn){if(fn==null)return this._timeSource;this._timeSource=fn;return this}speed(speed){if(speed==null)return this._speed;this._speed=speed;return this}stop(){this.time(0);return this.pause()}time(time){if(time==null)return this._time;this._time=time;return this._continue(true)}unschedule(runner){const index=this._runnerIds.indexOf(runner.id);if(index<0)return this;this._runners.splice(index,1);this._runnerIds.splice(index,1);runner.timeline(null);return this}updateTime(){if(!this.active()){this._lastSourceTime=this._timeSource()}return this}_continue(immediateStep=false){Animator.cancelFrame(this._nextFrame);this._nextFrame=null;if(immediateStep)return this._stepImmediate();if(this._paused)return this;this._nextFrame=Animator.frame(this._step);return this}_stepFn(immediateStep=false){const time=this._timeSource();let dtSource=time-this._lastSourceTime;if(immediateStep)dtSource=0;const dtTime=this._speed*dtSource+(this._time-this._lastStepTime);this._lastSourceTime=time;if(!immediateStep){this._time+=dtTime;this._time=this._time<0?0:this._time}this._lastStepTime=this._time;this.fire("time",this._time);for(let k=this._runners.length;k--;){const runnerInfo=this._runners[k];const runner=runnerInfo.runner;const dtToStart=this._time-runnerInfo.start;if(dtToStart<=0){runner.reset()}}let runnersLeft=false;for(let i=0,len=this._runners.length;i0){this._continue()}else{this.pause();this.fire("finished")}return this}}registerMethods({Element:{timeline:function(timeline){if(timeline==null){this._timeline=this._timeline||new Timeline;return this._timeline}else{this._timeline=timeline;return this}}}});class Runner extends EventTarget{constructor(options){super();this.id=Runner.id++;options=options==null?timeline.duration:options;options=typeof options==="function"?new Controller(options):options;this._element=null;this._timeline=null;this.done=false;this._queue=[];this._duration=typeof options==="number"&&options;this._isDeclarative=options instanceof Controller;this._stepper=this._isDeclarative?options:new Ease;this._history={};this.enabled=true;this._time=0;this._lastTime=0;this._reseted=true;this.transforms=new Matrix;this.transformId=1;this._haveReversed=false;this._reverse=false;this._loopsDone=0;this._swing=false;this._wait=0;this._times=1;this._frameId=null;this._persist=this._isDeclarative?true:null}static sanitise(duration,delay,when){let times=1;let swing=false;let wait=0;duration=duration||timeline.duration;delay=delay||timeline.delay;when=when||"last";if(typeof duration==="object"&&!(duration instanceof Stepper)){delay=duration.delay||delay;when=duration.when||when;swing=duration.swing||swing;times=duration.times||times;wait=duration.wait||wait;duration=duration.duration||timeline.duration}return{duration:duration,delay:delay,swing:swing,times:times,wait:wait,when:when}}active(enabled){if(enabled==null)return this.enabled;this.enabled=enabled;return this}addTransform(transform,index){this.transforms.lmultiplyO(transform);return this}after(fn){return this.on("finished",fn)}animate(duration,delay,when){const o=Runner.sanitise(duration,delay,when);const runner=new Runner(o.duration);if(this._timeline)runner.timeline(this._timeline);if(this._element)runner.element(this._element);return runner.loop(o).schedule(o.delay,o.when)}clearTransform(){this.transforms=new Matrix;return this}clearTransformsFromQueue(){if(!this.done||!this._timeline||!this._timeline._runnerIds.includes(this.id)){this._queue=this._queue.filter(item=>{return!item.isTransform})}}delay(delay){return this.animate(0,delay)}duration(){return this._times*(this._wait+this._duration)-this._wait}during(fn){return this.queue(null,fn)}ease(fn){this._stepper=new Ease(fn);return this}element(element){if(element==null)return this._element;this._element=element;element._prepareRunner();return this}finish(){return this.step(Infinity)}loop(times,swing,wait){if(typeof times==="object"){swing=times.swing;wait=times.wait;times=times.times}this._times=times||Infinity;this._swing=swing||false;this._wait=wait||0;if(this._times===true){this._times=Infinity}return this}loops(p){const loopDuration=this._duration+this._wait;if(p==null){const loopsDone=Math.floor(this._time/loopDuration);const relativeTime=this._time-loopsDone*loopDuration;const position=relativeTime/this._duration;return Math.min(loopsDone+position,this._times)}const whole=Math.floor(p);const partial=p%1;const time=loopDuration*whole+this._duration*partial;return this.time(time)}persist(dtOrForever){if(dtOrForever==null)return this._persist;this._persist=dtOrForever;return this}position(p){const x=this._time;const d=this._duration;const w=this._wait;const t=this._times;const s=this._swing;const r=this._reverse;let position;if(p==null){const f=function(x){const swinging=s*Math.floor(x%(2*(w+d))/(w+d));const backwards=swinging&&!r||!swinging&&r;const uncliped=Math.pow(-1,backwards)*(x%(w+d))/d+backwards;const clipped=Math.max(Math.min(uncliped,1),0);return clipped};const endTime=t*(w+d)-w;position=x<=0?Math.round(f(1e-5)):x=0;this._lastPosition=position;const duration=this.duration();const justStarted=this._lastTime<=0&&this._time>0;const justFinished=this._lastTime=duration;this._lastTime=this._time;if(justStarted){this.fire("start",this)}const declarative=this._isDeclarative;this.done=!declarative&&!justFinished&&this._time>=duration;this._reseted=false;let converged=false;if(running||declarative){this._initialise(running);this.transforms=new Matrix;converged=this._run(declarative?dt:position);this.fire("step",this)}this.done=this.done||converged&&declarative;if(justFinished){this.fire("finished",this)}return this}time(time){if(time==null){return this._time}const dt=time-this._time;this.step(dt);return this}timeline(timeline){if(typeof timeline==="undefined")return this._timeline;this._timeline=timeline;return this}unschedule(){const timeline=this.timeline();timeline&&timeline.unschedule(this);return this}_initialise(running){if(!running&&!this._isDeclarative)return;for(let i=0,len=this._queue.length;ilast.lmultiplyO(curr);const getRunnerTransform=runner=>runner.transforms;function mergeTransforms(){const runners=this._transformationRunners.runners;const netTransform=runners.map(getRunnerTransform).reduce(lmultiply,new Matrix);this.transform(netTransform);this._transformationRunners.merge();if(this._transformationRunners.length()===1){this._frameId=null}}class RunnerArray{constructor(){this.runners=[];this.ids=[]}add(runner){if(this.runners.includes(runner))return;const id=runner.id+1;this.runners.push(runner);this.ids.push(id);return this}clearBefore(id){const deleteCnt=this.ids.indexOf(id+1)||1;this.ids.splice(0,deleteCnt,0);this.runners.splice(0,deleteCnt,new FakeRunner).forEach(r=>r.clearTransformsFromQueue());return this}edit(id,newRunner){const index=this.ids.indexOf(id+1);this.ids.splice(index,1,id+1);this.runners.splice(index,1,newRunner);return this}getByID(id){return this.runners[this.ids.indexOf(id+1)]}length(){return this.ids.length}merge(){let lastRunner=null;for(let i=0;irunner.id<=current.id).map(getRunnerTransform).reduce(lmultiply,new Matrix)},_addRunner(runner){this._transformationRunners.add(runner);Animator.cancelImmediate(this._frameId);this._frameId=Animator.immediate(mergeTransforms.bind(this))},_prepareRunner(){if(this._frameId==null){this._transformationRunners=(new RunnerArray).add(new FakeRunner(new Matrix(this)))}}}});const difference=(a,b)=>a.filter(x=>!b.includes(x));extend(Runner,{attr(a,v){return this.styleAttr("attr",a,v)},css(s,v){return this.styleAttr("css",s,v)},styleAttr(type,nameOrAttrs,val){if(typeof nameOrAttrs==="string"){return this.styleAttr(type,{[nameOrAttrs]:val})}let attrs=nameOrAttrs;if(this._tryRetarget(type,attrs))return this;let morpher=new Morphable(this._stepper).to(attrs);let keys=Object.keys(attrs);this.queue(function(){morpher=morpher.from(this.element()[type](keys))},function(pos){this.element()[type](morpher.at(pos).valueOf());return morpher.done()},function(newToAttrs){const newKeys=Object.keys(newToAttrs);const differences=difference(newKeys,keys);if(differences.length){const addedFromAttrs=this.element()[type](differences);const oldFromAttrs=new ObjectBag(morpher.from()).valueOf();Object.assign(oldFromAttrs,addedFromAttrs);morpher.from(oldFromAttrs)}const oldToAttrs=new ObjectBag(morpher.to()).valueOf();Object.assign(oldToAttrs,newToAttrs);morpher.to(oldToAttrs);keys=newKeys;attrs=newToAttrs});this._rememberMorpher(type,morpher);return this},zoom(level,point){if(this._tryRetarget("zoom",level,point))return this;let morpher=new Morphable(this._stepper).to(new SVGNumber(level));this.queue(function(){morpher=morpher.from(this.element().zoom())},function(pos){this.element().zoom(morpher.at(pos),point);return morpher.done()},function(newLevel,newPoint){point=newPoint;morpher.to(newLevel)});this._rememberMorpher("zoom",morpher);return this},transform(transforms,relative,affine){relative=transforms.relative||relative;if(this._isDeclarative&&!relative&&this._tryRetarget("transform",transforms)){return this}const isMatrix=Matrix.isMatrixLike(transforms);affine=transforms.affine!=null?transforms.affine:affine!=null?affine:!isMatrix;const morpher=new Morphable(this._stepper).type(affine?TransformBag:Matrix);let origin;let element;let current;let currentAngle;let startTransform;function setup(){element=element||this.element();origin=origin||getOrigin(transforms,element);startTransform=new Matrix(relative?undefined:element);element._addRunner(this);if(!relative){element._clearTransformRunnersBefore(this)}}function run(pos){if(!relative)this.clearTransform();const{x,y}=new Point(origin).transform(element._currentTransform(this));let target=new Matrix({...transforms,origin:[x,y]});let start=this._isDeclarative&¤t?current:startTransform;if(affine){target=target.decompose(x,y);start=start.decompose(x,y);const rTarget=target.rotate;const rCurrent=start.rotate;const possibilities=[rTarget-360,rTarget,rTarget+360];const distances=possibilities.map(a=>Math.abs(a-rCurrent));const shortest=Math.min(...distances);const index=distances.indexOf(shortest);target.rotate=possibilities[index]}if(relative){if(!isMatrix){target.rotate=transforms.rotate||0}if(this._isDeclarative&¤tAngle){start.rotate=currentAngle}}morpher.from(start);morpher.to(target);const affineParameters=morpher.at(pos);currentAngle=affineParameters.rotate;current=new Matrix(affineParameters);this.addTransform(current);element._addRunner(this);return morpher.done()}function retarget(newTransforms){if((newTransforms.origin||"center").toString()!==(transforms.origin||"center").toString()){origin=getOrigin(newTransforms,element)}transforms={...newTransforms,origin:origin}}this.queue(setup,run,retarget,true);this._isDeclarative&&this._rememberMorpher("transform",morpher);return this},x(x,relative){return this._queueNumber("x",x)},y(y){return this._queueNumber("y",y)},dx(x=0){return this._queueNumberDelta("x",x)},dy(y=0){return this._queueNumberDelta("y",y)},dmove(x,y){return this.dx(x).dy(y)},_queueNumberDelta(method,to){to=new SVGNumber(to);if(this._tryRetarget(method,to))return this;const morpher=new Morphable(this._stepper).to(to);let from=null;this.queue(function(){from=this.element()[method]();morpher.from(from);morpher.to(from+to)},function(pos){this.element()[method](morpher.at(pos));return morpher.done()},function(newTo){morpher.to(from+new SVGNumber(newTo))});this._rememberMorpher(method,morpher);return this},_queueObject(method,to){if(this._tryRetarget(method,to))return this;const morpher=new Morphable(this._stepper).to(to);this.queue(function(){morpher.from(this.element()[method]())},function(pos){this.element()[method](morpher.at(pos));return morpher.done()});this._rememberMorpher(method,morpher);return this},_queueNumber(method,value){return this._queueObject(method,new SVGNumber(value))},cx(x){return this._queueNumber("cx",x)},cy(y){return this._queueNumber("cy",y)},move(x,y){return this.x(x).y(y)},center(x,y){return this.cx(x).cy(y)},size(width,height){let box;if(!width||!height){box=this._element.bbox()}if(!width){width=box.width/box.height*height}if(!height){height=box.height/box.width*width}return this.width(width).height(height)},width(width){return this._queueNumber("width",width)},height(height){return this._queueNumber("height",height)},plot(a,b,c,d){if(arguments.length===4){return this.plot([a,b,c,d])}if(this._tryRetarget("plot",a))return this;const morpher=new Morphable(this._stepper).type(this._element.MorphArray).to(a);this.queue(function(){morpher.from(this._element.array())},function(pos){this._element.plot(morpher.at(pos));return morpher.done()});this._rememberMorpher("plot",morpher);return this},leading(value){return this._queueNumber("leading",value)},viewbox(x,y,width,height){return this._queueObject("viewbox",new Box(x,y,width,height))},update(o){if(typeof o!=="object"){return this.update({offset:arguments[0],color:arguments[1],opacity:arguments[2]})}if(o.opacity!=null)this.attr("stop-opacity",o.opacity);if(o.color!=null)this.attr("stop-color",o.color);if(o.offset!=null)this.attr("offset",o.offset);return this}});extend(Runner,{rx:rx,ry:ry,from:from,to:to});register(Runner,"Runner");class Svg extends Container{constructor(node,attrs=node){super(nodeOrNew("svg",node),attrs);this.namespace()}defs(){if(!this.isRoot())return this.root().defs();return adopt(this.node.querySelector("defs"))||this.put(new Defs)}isRoot(){return!this.node.parentNode||!(this.node.parentNode instanceof globals.window.SVGElement)&&this.node.parentNode.nodeName!=="#document-fragment"}namespace(){if(!this.isRoot())return this.root().namespace();return this.attr({xmlns:svg,version:"1.1"}).attr("xmlns:xlink",xlink,xmlns).attr("xmlns:svgjs",svgjs,xmlns)}removeNamespace(){return this.attr({xmlns:null,version:null}).attr("xmlns:xlink",null,xmlns).attr("xmlns:svgjs",null,xmlns)}root(){if(this.isRoot())return this;return super.root()}}registerMethods({Container:{nested:wrapWithAttrCheck(function(){return this.put(new Svg)})}});register(Svg,"Svg",true);class Symbol extends Container{constructor(node,attrs=node){super(nodeOrNew("symbol",node),attrs)}}registerMethods({Container:{symbol:wrapWithAttrCheck(function(){return this.put(new Symbol)})}});register(Symbol,"Symbol");function plain(text){if(this._build===false){this.clear()}this.node.appendChild(globals.document.createTextNode(text));return this}function length(){return this.node.getComputedTextLength()}function x$1(x,box=this.bbox()){if(x==null){return box.x}return this.attr("x",this.attr("x")+x-box.x)}function y$1(y,box=this.bbox()){if(y==null){return box.y}return this.attr("y",this.attr("y")+y-box.y)}function move$1(x,y,box=this.bbox()){return this.x(x,box).y(y,box)}function cx(x,box=this.bbox()){if(x==null){return box.cx}return this.attr("x",this.attr("x")+x-box.cx)}function cy(y,box=this.bbox()){if(y==null){return box.cy}return this.attr("y",this.attr("y")+y-box.cy)}function center(x,y,box=this.bbox()){return this.cx(x,box).cy(y,box)}function ax(x){return this.attr("x",x)}function ay(y){return this.attr("y",y)}function amove(x,y){return this.ax(x).ay(y)}function build(build){this._build=!!build;return this}var textable={__proto__:null,plain:plain,length:length,x:x$1,y:y$1,move:move$1,cx:cx,cy:cy,center:center,ax:ax,ay:ay,amove:amove,build:build};class Text extends Shape{constructor(node,attrs=node){super(nodeOrNew("text",node),attrs);this.dom.leading=new SVGNumber(1.3);this._rebuild=true;this._build=false}leading(value){if(value==null){return this.dom.leading}this.dom.leading=new SVGNumber(value);return this.rebuild()}rebuild(rebuild){if(typeof rebuild==="boolean"){this._rebuild=rebuild}if(this._rebuild){const self=this;let blankLineOffset=0;const leading=this.dom.leading;this.each(function(i){const fontSize=globals.window.getComputedStyle(this.node).getPropertyValue("font-size");const dy=leading*new SVGNumber(fontSize);if(this.dom.newLined){this.attr("x",self.attr("x"));if(this.text()==="\n"){blankLineOffset+=dy}else{this.attr("dy",i?dy+blankLineOffset:0);blankLineOffset=0}}});this.fire("rebuild")}return this}setData(o){this.dom=o;this.dom.leading=new SVGNumber(o.leading||1.3);return this}text(text){if(text===undefined){const children=this.node.childNodes;let firstLine=0;text="";for(let i=0,len=children.length;i{let bbox;try{bbox=child.bbox()}catch(e){return}const m=new Matrix(child);const matrix=m.translate(dx,dy).transform(m.inverse());const p=new Point(bbox.x,bbox.y).transform(matrix);child.move(p.x,p.y)});return this}function dx(dx){return this.dmove(dx,0)}function dy(dy){return this.dmove(0,dy)}function height(height,box=this.bbox()){if(height==null)return box.height;return this.size(box.width,height,box)}function move(x=0,y=0,box=this.bbox()){const dx=x-box.x;const dy=y-box.y;return this.dmove(dx,dy)}function size(width,height,box=this.bbox()){const p=proportionalSize(this,width,height,box);const scaleX=p.width/box.width;const scaleY=p.height/box.height;this.children().forEach((child,i)=>{const o=new Point(box).transform(new Matrix(child).inverse());child.scale(scaleX,scaleY,o.x,o.y)});return this}function width(width,box=this.bbox()){if(width==null)return box.width;return this.size(width,box.height,box)}function x(x,box=this.bbox()){if(x==null)return box.x;return this.move(x,box.y,box)}function y(y,box=this.bbox()){if(y==null)return box.y;return this.move(box.x,y,box)}var containerGeometry={__proto__:null,dmove:dmove,dx:dx,dy:dy,height:height,move:move,size:size,width:width,x:x,y:y};class G extends Container{constructor(node,attrs=node){super(nodeOrNew("g",node),attrs)}}extend(G,containerGeometry);registerMethods({Container:{group:wrapWithAttrCheck(function(){return this.put(new G)})}});register(G,"G");class A extends Container{constructor(node,attrs=node){super(nodeOrNew("a",node),attrs)}target(target){return this.attr("target",target)}to(url){return this.attr("href",url,xlink)}}extend(A,containerGeometry);registerMethods({Container:{link:wrapWithAttrCheck(function(url){return this.put(new A).to(url)})},Element:{unlink(){const link=this.linker();if(!link)return this;const parent=link.parent();if(!parent){return this.remove()}const index=parent.index(link);parent.add(this,index);link.remove();return this},linkTo(url){let link=this.linker();if(!link){link=new A;this.wrap(link)}if(typeof url==="function"){url.call(link,link)}else{link.to(url)}return this},linker(){const link=this.parent();if(link&&link.node.nodeName.toLowerCase()==="a"){return link}return null}}});register(A,"A");class Mask extends Container{constructor(node,attrs=node){super(nodeOrNew("mask",node),attrs)}remove(){this.targets().forEach(function(el){el.unmask()});return super.remove()}targets(){return baseFind('svg [mask*="'+this.id()+'"]')}}registerMethods({Container:{mask:wrapWithAttrCheck(function(){return this.defs().put(new Mask)})},Element:{masker(){return this.reference("mask")},maskWith(element){const masker=element instanceof Mask?element:this.parent().mask().add(element);return this.attr("mask",'url("#'+masker.id()+'")')},unmask(){return this.attr("mask",null)}}});register(Mask,"Mask");class Stop extends Element{constructor(node,attrs=node){super(nodeOrNew("stop",node),attrs)}update(o){if(typeof o==="number"||o instanceof SVGNumber){o={offset:arguments[0],color:arguments[1],opacity:arguments[2]}}if(o.opacity!=null)this.attr("stop-opacity",o.opacity);if(o.color!=null)this.attr("stop-color",o.color);if(o.offset!=null)this.attr("offset",new SVGNumber(o.offset));return this}}registerMethods({Gradient:{stop:function(offset,color,opacity){return this.put(new Stop).update(offset,color,opacity)}}});register(Stop,"Stop");function cssRule(selector,rule){if(!selector)return"";if(!rule)return selector;let ret=selector+"{";for(const i in rule){ret+=unCamelCase(i)+":"+rule[i]+";"}ret+="}";return ret}class Style extends Element{constructor(node,attrs=node){super(nodeOrNew("style",node),attrs)}addText(w=""){this.node.textContent+=w;return this}font(name,src,params={}){return this.rule("@font-face",{fontFamily:name,src:src,...params})}rule(selector,obj){return this.addText(cssRule(selector,obj))}}registerMethods("Dom",{style(selector,obj){return this.put(new Style).rule(selector,obj)},fontface(name,src,params){return this.put(new Style).font(name,src,params)}});register(Style,"Style");class TextPath extends Text{constructor(node,attrs=node){super(nodeOrNew("textPath",node),attrs)}array(){const track=this.track();return track?track.array():null}plot(d){const track=this.track();let pathArray=null;if(track){pathArray=track.plot(d)}return d==null?pathArray:this}track(){return this.reference("href")}}registerMethods({Container:{textPath:wrapWithAttrCheck(function(text,path){if(!(text instanceof Text)){text=this.text(text)}return text.path(path)})},Text:{path:wrapWithAttrCheck(function(track,importNodes=true){const textPath=new TextPath;if(!(track instanceof Path)){track=this.defs().path(track)}textPath.attr("href","#"+track,xlink);let node;if(importNodes){while(node=this.node.firstChild){textPath.node.appendChild(node)}}return this.put(textPath)}),textPath(){return this.findOne("textPath")}},Path:{text:wrapWithAttrCheck(function(text){if(!(text instanceof Text)){text=(new Text).addTo(this.parent()).text(text)}return text.path(this)}),targets(){return baseFind("svg textPath").filter(node=>{return(node.attr("href")||"").includes(this.id())})}}});TextPath.prototype.MorphArray=PathArray;register(TextPath,"TextPath");class Use extends Shape{constructor(node,attrs=node){super(nodeOrNew("use",node),attrs)}use(element,file){return this.attr("href",(file||"")+"#"+element,xlink)}}registerMethods({Container:{use:wrapWithAttrCheck(function(element,file){return this.put(new Use).use(element,file)})}});register(Use,"Use");const SVG$1=makeInstance;extend([Svg,Symbol,Image,Pattern,Marker],getMethodsFor("viewbox"));extend([Line,Polyline,Polygon,Path],getMethodsFor("marker"));extend(Text,getMethodsFor("Text"));extend(Path,getMethodsFor("Path"));extend(Defs,getMethodsFor("Defs"));extend([Text,Tspan],getMethodsFor("Tspan"));extend([Rect,Ellipse,Gradient,Runner],getMethodsFor("radius"));extend(EventTarget,getMethodsFor("EventTarget"));extend(Dom,getMethodsFor("Dom"));extend(Element,getMethodsFor("Element"));extend(Shape,getMethodsFor("Shape"));extend([Container,Fragment],getMethodsFor("Container"));extend(Gradient,getMethodsFor("Gradient"));extend(Runner,getMethodsFor("Runner"));List.extend(getMethodNames());registerMorphableType([SVGNumber,Color,Box,Matrix,SVGArray,PointArray,PathArray,Point]);makeMorphable();var svgMembers={__proto__:null,Morphable:Morphable,registerMorphableType:registerMorphableType,makeMorphable:makeMorphable,TransformBag:TransformBag,ObjectBag:ObjectBag,NonMorphable:NonMorphable,defaults:defaults,utils:utils,namespaces:namespaces,regex:regex,SVG:SVG$1,parser:parser,find:baseFind,getWindow:getWindow,registerWindow:registerWindow,restoreWindow:restoreWindow,saveWindow:saveWindow,withWindow:withWindow,Animator:Animator,Controller:Controller,Ease:Ease,PID:PID,Spring:Spring,easing:easing,Queue:Queue,Runner:Runner,Timeline:Timeline,Array:SVGArray,Box:Box,Color:Color,EventTarget:EventTarget,Matrix:Matrix,Number:SVGNumber,PathArray:PathArray,Point:Point,PointArray:PointArray,List:List,Circle:Circle,ClipPath:ClipPath,Container:Container,Defs:Defs,Dom:Dom,Element:Element,Ellipse:Ellipse,ForeignObject:ForeignObject,Fragment:Fragment,Gradient:Gradient,G:G,A:A,Image:Image,Line:Line,Marker:Marker,Mask:Mask,Path:Path,Pattern:Pattern,Polygon:Polygon,Polyline:Polyline,Rect:Rect,Shape:Shape,Stop:Stop,Style:Style,Svg:Svg,Symbol:Symbol,Text:Text,TextPath:TextPath,Tspan:Tspan,Use:Use,windowEvents:windowEvents,getEvents:getEvents,getEventTarget:getEventTarget,clearEvents:clearEvents,on:on,off:off,dispatch:dispatch,root:root,create:create,makeInstance:makeInstance,nodeOrNew:nodeOrNew,adopt:adopt,mockAdopt:mockAdopt,register:register,getClass:getClass,eid:eid,assignNewId:assignNewId,extend:extend,wrapWithAttrCheck:wrapWithAttrCheck};function SVG(element,isHTML){return makeInstance(element,isHTML)}Object.assign(SVG,svgMembers);return SVG}(); +/*! + @licstart The following is the entire license notice for the JavaScript code in this file. + The code below is based on SVGPan Library 1.2 and was modified for doxygen + to support both zooming and panning via the mouse and via embedded buttons. + + This code is licensed under the following BSD license: + + Copyright 2009-2010 Andrea Leofreddi . All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, are + permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this list of + conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, this list + of conditions and the following disclaimer in the documentation and/or other materials + provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY Andrea Leofreddi ``AS IS'' AND ANY EXPRESS OR IMPLIED + WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Andrea Leofreddi OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + The views and conclusions contained in the software and documentation are those of the + authors and should not be interpreted as representing official policies, either expressed + or implied, of Andrea Leofreddi. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +var root=document.documentElement;var state="none";var stateOrigin;var stateTf=root.createSVGMatrix();var cursorGrab=' url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAMAAAAolt3jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAlQTFRFAAAA////////c3ilYwAAAAN0Uk5T//8A18oNQQAAAD1JREFUeNp0zlEKACAIA9Bt9z90bZBZkQj29qFBEuBOzQHSnWTTyckEfqUuZgFvslH4ch3qLCO/Kr8cAgwATw4Ax6XRCcoAAAAASUVORK5CYII="), move';var zoomSteps=10;var zoomInFactor;var zoomOutFactor;var windowWidth;var windowHeight;var svgDoc;var minZoom;var maxZoom;if(!window)window=this;function show(){if(window.innerHeight){windowWidth=window.innerWidth;windowHeight=window.innerHeight}else if(document.documentElement.clientWidth){windowWidth=document.documentElement.clientWidth;windowHeight=document.documentElement.clientHeight}if(!windowWidth||!windowHeight){windowWidth=800;windowHeight=600}minZoom=Math.min(Math.min(viewHeight,windowHeight)/viewHeight,Math.min(viewWidth,windowWidth)/viewWidth);maxZoom=minZoom+1.5;zoomInFactor=Math.pow(maxZoom/minZoom,1/zoomSteps);zoomOutFactor=1/zoomInFactor;var g=svgDoc.getElementById("viewport");try{var bb=g.getBBox();var tx=(windowWidth-viewWidth*minZoom+8)/(2*minZoom);var ty=viewHeight+(windowHeight-viewHeight*minZoom)/(2*minZoom);var a="scale("+minZoom+") rotate(0) translate("+tx+" "+ty+")";g.setAttribute("transform",a)}catch(e){}}function init(evt){svgDoc=evt.target.ownerDocument;try{if(top.window&&top.window.registerShow){top.window.registerShow(sectionId,show)}}catch(e){}show();setAttributes(root,{onmousedown:"handleMouseDown(evt)",onmousemove:"handleMouseMove(evt)",onmouseup:"handleMouseUp(evt)"});if(window.addEventListener){if(navigator.userAgent.toLowerCase().indexOf("webkit")>=0||navigator.userAgent.toLowerCase().indexOf("opera")>=0||navigator.appVersion.indexOf("MSIE")!=-1){window.addEventListener("mousewheel",handleMouseWheel,false)}else{window.addEventListener("DOMMouseScroll",handleMouseWheel,false)}}}window.onresize=function(){if(svgDoc){show()}};function getEventPoint(evt){var p=root.createSVGPoint();p.x=evt.clientX;p.y=evt.clientY;return p}function setCTM(element,matrix){var s="matrix("+matrix.a+","+matrix.b+","+matrix.c+","+matrix.d+","+matrix.e+","+matrix.f+")";element.setAttribute("transform",s)}function setAttributes(element,attributes){for(i in attributes)element.setAttributeNS(null,i,attributes[i])}function doZoom(g,point,zoomFactor){var p=point.matrixTransform(g.getCTM().inverse());var k=root.createSVGMatrix().translate(p.x,p.y).scale(zoomFactor).translate(-p.x,-p.y);var n=g.getCTM().multiply(k);var s=Math.max(n.a,n.d);if(s>maxZoom)n=n.translate(p.x,p.y).scale(maxZoom/s).translate(-p.x,-p.y);else if(s');d.write("Print SVG");d.write('');d.write('
    '+xs+"
    ");d.write("");d.write("");d.close()}catch(e){alert("Failed to open popup window needed for printing!\n"+e.message)}}function highlightEdges(){var elems=document.getElementsByTagName("g");if(elems){for(var i=0;i g");function findEnclosingG(domEl){let curEl=domEl;while(curEl.nodeName!="g"||curEl.id.substr(0,4)!="Node"){curEl=curEl.parentElement}return curEl}function onMouseOverElem(domEl){let e=SVG(findEnclosingG(domEl.target));walk(s,e=>{if(SVG(e)!=s)SVG(e).attr("data-mouse-over-selected","false")});walk(e,e=>SVG(e).attr("data-mouse-over-selected","true"));let{nodes,edges}=getEdgesAndDistance1Nodes(SVG(e),s);for(let node of nodes){walk(node,e=>SVG(e).attr("data-mouse-over-selected","true"))}for(let edge of edges){walk(edge,e=>SVG(e).attr("data-mouse-over-selected","true"))}}function onMouseOutElem(domEl){let e=SVG(findEnclosingG(domEl.target));walk(s,e=>e.attr("data-mouse-over-selected",null))}let gs=s.find("g[id^=Node]");for(let g of gs){g.on("mouseover",onMouseOverElem);g.on("mouseout",onMouseOutElem)}} diff --git a/sync_off.png b/sync_off.png new file mode 100644 index 0000000..3b443fc Binary files /dev/null and b/sync_off.png differ diff --git a/sync_on.png b/sync_on.png new file mode 100644 index 0000000..e08320f Binary files /dev/null and b/sync_on.png differ diff --git a/tab_a.png b/tab_a.png new file mode 100644 index 0000000..3b725c4 Binary files /dev/null and b/tab_a.png differ diff --git a/tab_ad.png b/tab_ad.png new file mode 100644 index 0000000..e34850a Binary files /dev/null and b/tab_ad.png differ diff --git a/tab_b.png b/tab_b.png new file mode 100644 index 0000000..e2b4a86 Binary files /dev/null and b/tab_b.png differ diff --git a/tab_bd.png b/tab_bd.png new file mode 100644 index 0000000..91c2524 Binary files /dev/null and b/tab_bd.png differ diff --git a/tab_h.png b/tab_h.png new file mode 100644 index 0000000..fd5cb70 Binary files /dev/null and b/tab_h.png differ diff --git a/tab_hd.png b/tab_hd.png new file mode 100644 index 0000000..2489273 Binary files /dev/null and b/tab_hd.png differ diff --git a/tab_s.png b/tab_s.png new file mode 100644 index 0000000..ab478c9 Binary files /dev/null and b/tab_s.png differ diff --git a/tab_sd.png b/tab_sd.png new file mode 100644 index 0000000..757a565 Binary files /dev/null and b/tab_sd.png differ diff --git a/tabs.css b/tabs.css new file mode 100644 index 0000000..6c21d61 --- /dev/null +++ b/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:#364D7C;-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:url('tab_b.png')}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255, 255, 255, 0.9);color:#283A5D;outline:0}.sm-dox a:hover{background-image:url('tab_a.png');background-repeat:repeat-x;color:white;text-shadow:0px 1px 1px rgba(0, 0, 0, 1.0)}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255, 255, 255, 0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:white}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url('tab_a.png');background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url('tab_b.png');line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url('tab_s.png');background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:url('tab_a.png');background-repeat:repeat-x;color:white;text-shadow:0px 1px 1px rgba(0, 0, 0, 1.0)}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent white transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:white;-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555555;background-image:none;border:0 !important}.sm-dox ul a:hover{background-image:url('tab_a.png');background-repeat:repeat-x;color:white;text-shadow:0px 1px 1px rgba(0, 0, 0, 1.0)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:white;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url('tab_b.png')}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:white}} \ No newline at end of file diff --git a/todo.html b/todo.html new file mode 100644 index 0000000..9c69dc0 --- /dev/null +++ b/todo.html @@ -0,0 +1,158 @@ + + + + + + + + + SDL Minigame: Todo List + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    +
    SDL Minigame +  1.0 +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Todo List
    +
    +
    +
    +
    Class Entity
    +

    More detailed description

    +

    +

    Some functions in entity class are only supposed to be called in specific context, which might be valid uses for friend keyword. Example: Entity() should only be called from Manager::addEntity(). Verify each functions intended use/scope.

    +
    +
    Member Entity::Entity (Manager &mManager)
    +
    Document
    +
    Member Entity::GroupLabel
    +

    Label used in singular entity shouldn't use plural

    +

    +

    HEARTS are rendered above POWERUPS, missleading order

    +

    +

    PROJECTILE are rendered above POWERUPS, missleading order

    +

    +

    Generalize HEARTS as UI or similar

    +
    +
    Member Entity::HEARTS
    +
    Document
    +
    Member Entity::POWERUPS
    +
    Document
    +
    Member Entity::PROJECTILE
    +
    Document
    +
    Member Manager::addToGroup (Entity *mEntity, Group mGroup)
    +
    friend to Entity
    +
    Member Manager::addToTeam (Entity *mEntity, Team mTeam)
    +
    friend to Entity
    +
    +
    +
    +
    + + + +