From c97ab508ace335878ce6352b860dd5db1c93827b Mon Sep 17 00:00:00 2001 From: "matthias@arch" Date: Mon, 14 Nov 2022 22:57:45 +0100 Subject: [PATCH] Added uml for parts of the project --- project_virtual_strategies.uxf | 1034 ++++++++++++++++++++++++++++++++ 1 file changed, 1034 insertions(+) create mode 100644 project_virtual_strategies.uxf diff --git a/project_virtual_strategies.uxf b/project_virtual_strategies.uxf new file mode 100644 index 0000000..953f28a --- /dev/null +++ b/project_virtual_strategies.uxf @@ -0,0 +1,1034 @@ + + + 9 + + UMLClass + + 1143 + 909 + 333 + 63 + + 2D Renderer +-- +draw(vertices, indices, textureAtlasIndex) +draw(vertices, indices) +bg=BLUE +style=autoresize + + + + UMLClass + + 855 + 1503 + 405 + 126 + + Rectangle +-- ++ draw() ++ setters(val, updateStrategy=true) ++ getters(): const& +-- +- vec2 size +- vec2 pos +- drawStrategy: unique_ptr<DrawStrategy<Rectangle> > +style=autoresize +bg=GRAY +group=group-7 + + + + UMLClass + + 288 + 1368 + 144 + 81 + + FontManager +-- +- fonts[]: Font +- lib: FT_Library + +style=autoresize + + + + UMLClass + + 855 + 1710 + 369 + 126 + + Text +-- ++ Text(string&, DrawStrategy&&) ++ draw() ++ setters(val, updateStrategy=true) ++ getters(): const& +-- +- string text +- drawStrategy: unique_ptr<DrawStrategy<Text> > +style=autoresize +bg=GRAY +group=group-7 + + + + Relation + + 540 + 1575 + 333 + 162 + + lt=<- + 10.0;10.0;350.0;160.0 + + + UMLClass + + 1260 + 693 + 126 + 36 + + VulkanInstance +bg=BLUE +style=autoresize + + + + Relation + + 1296 + 720 + 72 + 207 + + lt=<- + 60.0;10.0;10.0;210.0 + + + UMLClass + + 360 + 1539 + 189 + 63 + + Font +-- +- face: FT_Face +- charInfos[]: CharInfo +style=autoresize + + + + UMLClass + + 576 + 1377 + 180 + 99 + + TextDS +-- ++ draw() ++ update(const Text&) +-- +- buffer: VIBuffer +- Renderer2D& renderer +bg=BLUE +style=autoresize + + + + UMLNote + + 0 + 630 + 369 + 162 + + /Target code/ +using Drawable = std::variant<Text, Rectangle> +std::vector<Drawable> shapes; +shapes.emplace_back(Rectangle((5, 5), (42, 42), + TextDrawStrategy(renderer); +); + +for (shape : shapes) { + shape.draw(); +} +style=autoresize +bg=DARK_GRAY + + + + UMLNote + + 855 + 1899 + 396 + 90 + + *Drawables have strategies* ++ very extendable +- complicated object creation +- possible lifetime issues with renderer references +- heavy use of virtual functions +style=autoresize +bg=RED +group=group-7 + + + + Relation + + 1251 + 963 + 63 + 180 + + lt=-> + 10.0;180.0;50.0;10.0 + + + UMLClass + + 540 + 1206 + 225 + 99 + + RectangleColoredDS +-- ++ draw() ++ update(const Rect&) +-- +- buffer: VIBuffer +- const Renderer2D& renderer +bg=BLUE +style=autoresize + + + + Relation + + 1251 + 1548 + 162 + 36 + + lt=<<<<- +or child class + 10.0;20.0;160.0;20.0 + + + Relation + + 738 + 1440 + 162 + 288 + + lt=<<<<<- + 17.0;10.0;160.0;301.0 + + + UMLClass + + 1422 + 1755 + 225 + 99 + + template=T: StrategyFor +PrintDrawStrategy +-- ++ draw() ++ update(const T&) +-- +- tAsString: string +style=autoresize + + + + UMLClass + + 513 + 1098 + 252 + 81 + + RectangleTexturedVkDS +-- ++ draw(): void ++ update(Rectangle&): void +- setTextureCoordinates(): void +style=autoresize + + + + Relation + + 756 + 1269 + 81 + 27 + + lt=<<<<<- + 10.0;10.0;70.0;10.0 + + + UMLClass + + 117 + 1593 + 135 + 63 + + CharInfo +-- +- topLeft: vec2 +- botRight: vec2 +style=autoresize + + + + UMLClass + + 1395 + 1530 + 243 + 81 + + template=T: StrategyFor +/DrawStrategy/ +-- ++ draw() = 0 ++ update(const T&) = 0 +style=autoresize + + + + Relation + + 1494 + 1602 + 27 + 180 + + lt=<<- + 10.0;10.0;10.0;180.0 + + + UMLClass + + 1053 + 1125 + 396 + 243 + + VulkanDS +-- +# vertices: Vertex2D[] +# indices: uint32_t[] +# vertexBufferInfo: BufferInfo +# indexBufferInfo: BufferInfo +# renderer: Renderer2D& +# bufferManager: BufferManager<Vertex2D, uint32_t>& +-- ++ getVertices(): Vertex2D[] ++ getIndices(): uint32_t[] ++ getVertexBufferInfo(): BufferInfo& ++ getIndexBufferInfo(): BufferInfo& ++ setIndexOffset(uint32_t): void ++ normalizeVertices(float, float): void ++ buffersInitalized(): bool +# updateBufferInfos(): void +style=autoresize + + + + UMLClass + + 1737 + 369 + 216 + 99 + + MemoryInfo +-- ++ memory: vk::DeviceMemory ++ offset: vk::DeviceSize ++ memoryTypeIndex: uint32_t +style=autoresize + +group=group-1 +bg=GREEN + + + + UMLClass + + 1737 + 504 + 621 + 90 + + VulkanAllocator +-- +- memory: DeviceMemory[] +-- ++ allocate(vk::MemoryAllocateInfo&, vk::MemoryRequirements2&, MemoryInfo&): void ++ free(MemoryInfo&): void +style=autoresize +group=group-1 +bg=GREEN + + + + UMLClass + + 2043 + 297 + 306 + 126 + + DeviceMemory +-- ++ DeviceMemory: ++ DeviceMemory(vk::DeviceSize): ++ size: vk::DeviceSize ++ memory: vk::DeviceMemory ++ dynBlockAllocator: DynBlockAllocator +style=autoresize + +group=group-1 +bg=GREEN + + + + Relation + + 2169 + 414 + 108 + 108 + + lt=- +m1=* +m2=1 +< allocates +group=group-1 +bg=GREEN + 10.0;10.0;10.0;100.0 + + + Relation + + 1944 + 387 + 126 + 45 + + lt=-[dBA] +m1=1..n +m2=1 +manages +group=group-1 +bg=GREEN + 10.0;20.0;110.0;20.0 + + + Relation + + 1377 + 567 + 378 + 162 + + lt=<<<<<- + 10.0;160.0;400.0;10.0 + + + Relation + + 1773 + 585 + 27 + 315 + + lt=<- + 10.0;10.0;10.0;330.0 + + + UMLClass + + 621 + 1692 + 90 + 180 + + b +group=group-5 + + + + UMLClass + + 351 + 1692 + 90 + 180 + + a +group=group-5 + + + + Relation + + 432 + 1701 + 207 + 36 + + lt=<<- +b inherits from a +group=group-5 + 10.0;20.0;210.0;20.0 + + + Relation + + 432 + 1737 + 207 + 36 + + lt=<- +b is associated with a +group=group-5 + 10.0;20.0;210.0;20.0 + + + Relation + + 432 + 1773 + 207 + 36 + + lt=<. +b depends on a +group=group-5 + 10.0;20.0;210.0;20.0 + + + Relation + + 432 + 1845 + 207 + 54 + + lt=<<<<<- +composition +a creates b +and b needs a +group=group-5 + 10.0;20.0;210.0;20.0 + + + Relation + + 432 + 1800 + 207 + 54 + + lt=<<<<- +aggregation +a creates b +b can live without a +group=group-5 + 10.0;20.0;210.0;20.0 + + + Relation + + 1440 + 981 + 333 + 198 + + lt=<- +m1=1 +m2=1 +gets buffer from + 350.0;10.0;10.0;200.0 + + + UMLClass + + 720 + 900 + 306 + 126 + + VulkanTexturedDS +-- +# texture: Texture +# textureAtlasIndex: TextureAtlasIndex +# textureManager: TextureManager& +-- ++ getTexture(): Texture& ++ getTexureAtlasIndex(): uint32_t +style=autoresize + + + + + UMLClass + + 486 + 360 + 630 + 216 + + TextureManager +-- +- atlases: TextureAtlas[] +- textures: unordered_string_map<Texture> +- textureInfos: TextureInfo[] +-- ++ getTexture(std::string&): Texture ++ setTexCoords(Texture&, glm::vec2&): void ++ getDescriptorSet: vk::DescriptorSet& ++ getDescriptorSetLayout: vk::DescriptorSetLayout& ++ getTextureAtlas(Texture&): TextureAtlas& ++ getTextureAtlasIndex(Texture&): TextureAtlasIndex ++ getAtlasCount: uint32_t ++ addAtlas(uint16_t, uint16_t, uint16_t, uint16_t, vk::Format): TextureAtlasIndex +- loadTextureFromFile(std::string&): Texture +style=autoresize +group=group-4 +bg=YELLOW + + + + UMLClass + + 594 + 54 + 522 + 234 + + TextureAtlas +-- +- imageFormat: vk::Format +- textureImage: vk::Image +- textureImageMemory: MemoryInfo +- textureImageView: vk::ImageView +- textureSampler: vk::Sampler +- freeAreas: TextureImageAreas[] +- slotWidth: uint16_t +- slotHeight: uint16_t +- slotCountX: uint16_t +- slotCountY: uint16_t +-- ++ addTexture(uint8_t*, uint16_t, uint16_t, uint8_t): { vec2, vec2 } ++ getTextureImageView(): vk::ImageView& ++ getTextureSampler(): vk::Sampler& +style=autoresize +group=group-4 +bg=YELLOW + + + + UMLClass + + 702 + 648 + 252 + 108 + + TextureInfo +-- ++ atlas: TextureAtlasIndex ++ texCoordTopLeft: glm::vec2 ++ texCoordBottomRight: glm::vec2 + +style=autoresize + +group=group-4 +bg=YELLOW + + + + UMLPackage + + 1728 + 270 + 648 + 342 + + vulkan memory allocation +layer=-1 +group=group-1 +bg=GREEN + + + + UMLPackage + + 468 + 0 + 666 + 774 + + vulkan textures +group=group-4 +bg=YELLOW + + + + Relation + + 900 + 279 + 36 + 99 + + lt=<<<<- +m1=1 +m2=* +group=group-4 +bg=YELLOW + 10.0;90.0;10.0;10.0 + + + Relation + + 1107 + 531 + 225 + 180 + + lt=<- + 230.0;180.0;10.0;10.0 + + + Relation + + 1107 + 243 + 243 + 468 + + lt=<- + 250.0;500.0;10.0;10.0 + + + Relation + + 729 + 567 + 81 + 99 + + lt=- +m1=1..n +m2=1 +manages +group=group-4 +bg=YELLOW + 10.0;90.0;10.0;10.0 + + + Relation + + 1107 + 198 + 639 + 216 + + lt=<- + 690.0;220.0;10.0;10.0 + + + Relation + + 1899 + 810 + 90 + 90 + + lt=<- +m1=* +m2=1 +< manages +bg=ORANGE +group=group-3 + 10.0;10.0;10.0;80.0 + + + UMLClass + + 1755 + 873 + 729 + 144 + + template=VertexT: VertexType, IndexT: SupportedIndexType +BufferManager +-- +- vertexBuffers: Buffer[] +- indexBuffers: Buffer[] +-- ++ getVertexBuffer(BufferInfo&): vk::Buffer ++ getIndexBuffer(BufferInfo&): vk::Buffer ++ addVertices(VertexRange&, IndexRange&): { BufferInfo : BufferInfo } ++ removeVertices(BufferInfo&, BufferInfo&): void +style=autoresize +bg=ORANGE +group=group-3 + + + + UMLClass + + 1800 + 711 + 243 + 108 + + Buffer +-- ++ buffer: vk::Buffer ++ bufferMemory: MemoryInfo ++ bufferSize: vk::DeviceSize ++ allocator: DynBlockAllocator +style=autoresize + +bg=ORANGE +group=group-3 + + + + UMLClass + + 2115 + 711 + 153 + 99 + + BufferInfo +-- ++ index: uint32_t ++ offset: uint32_t ++ count: uint32_t +style=autoresize + +bg=ORANGE +group=group-3 + + + + Relation + + 2106 + 792 + 36 + 108 + + lt=<<<<- +m1=1 +m2=* +bg=ORANGE +group=group-3 + 10.0;100.0;10.0;10.0 + + + Relation + + 2034 + 738 + 99 + 36 + + lt=<- +m1=1 +m2=1 +bg=ORANGE +group=group-3 + 10.0;10.0;90.0;10.0 + + + UMLPackage + + 1737 + 675 + 756 + 351 + + vulkan vertex & index buffer management +bg=ORANGE +group=group-3 + + + + Relation + + 612 + 567 + 225 + 351 + + lt=<- + 10.0;10.0;230.0;370.0 + + + Relation + + 756 + 1125 + 315 + 117 + + lt=<<- + 330.0;110.0;10.0;10.0 + + + Relation + + 711 + 981 + 72 + 171 + + lt=<<- + 10.0;10.0;60.0;170.0 + + + Relation + + 1098 + 1359 + 369 + 198 + + lt=<<- + 390.0;200.0;10.0;10.0 + + + Relation + + 756 + 1152 + 81 + 27 + + lt=<<<<<- + 10.0;10.0;70.0;10.0 + + + Relation + + 756 + 1224 + 315 + 117 + + lt=<<- + 330.0;110.0;10.0;10.0 + + + Relation + + 810 + 1152 + 27 + 144 + + lt=- + + 10.0;140.0;10.0;10.0 + + + Relation + + 810 + 1269 + 81 + 252 + + lt=- + + 10.0;10.0;70.0;260.0 + + + Relation + + 1215 + 1593 + 216 + 207 + + lt=<<<<- +or child class + 10.0;210.0;200.0;10.0 + + + Relation + + 747 + 1350 + 324 + 90 + + lt=<<- + 340.0;10.0;10.0;80.0 + + + Relation + + 747 + 1017 + 180 + 423 + + lt=<<- + 180.0;10.0;10.0;450.0 + + + Relation + + 414 + 1440 + 27 + 117 + + lt=<<<<<- + 10.0;10.0;10.0;110.0 + + + UMLPackage + + 810 + 1467 + 513 + 540 + + Drawables +bg=GRAY +group=group-7 + + +