diff options
| author | Amlal El Mahrouss <amlal@el-mahrouss-logic.com> | 2024-03-10 15:41:08 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal@el-mahrouss-logic.com> | 2024-03-10 15:41:08 +0100 |
| commit | 5468ca71a59c9e24c1d392554e8f97f0c1705394 (patch) | |
| tree | 1e8af47da852d4ad02a2ea48a967694c7bfc19c3 /Public/Kits/System.Graphics | |
| parent | 94d7585ae766d777f41d07b1a98051d12a6a0256 (diff) | |
Kernel: Reworked StorageKit to add AHCI support.
Signed-off-by: Amlal El Mahrouss <amlal@el-mahrouss-logic.com>
Diffstat (limited to 'Public/Kits/System.Graphics')
| -rw-r--r-- | Public/Kits/System.Graphics/.gitkeep | 0 | ||||
| -rw-r--r-- | Public/Kits/System.Graphics/Core.cxx | 14 | ||||
| -rw-r--r-- | Public/Kits/System.Graphics/Core.hxx | 185 | ||||
| -rw-r--r-- | Public/Kits/System.Graphics/Dim2d.cxx | 20 | ||||
| -rw-r--r-- | Public/Kits/System.Graphics/Dim2d.hxx | 38 | ||||
| -rw-r--r-- | Public/Kits/System.Graphics/Frame.cxx | 18 | ||||
| -rw-r--r-- | Public/Kits/System.Graphics/Frame.hxx | 59 | ||||
| -rw-r--r-- | Public/Kits/System.Graphics/Makefile | 20 | ||||
| -rw-r--r-- | Public/Kits/System.Graphics/Stylesheet.hxx | 49 | ||||
| -rw-r--r-- | Public/Kits/System.Graphics/compile_flags.txt | 4 |
10 files changed, 407 insertions, 0 deletions
diff --git a/Public/Kits/System.Graphics/.gitkeep b/Public/Kits/System.Graphics/.gitkeep new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/Public/Kits/System.Graphics/.gitkeep diff --git a/Public/Kits/System.Graphics/Core.cxx b/Public/Kits/System.Graphics/Core.cxx new file mode 100644 index 00000000..9a218f88 --- /dev/null +++ b/Public/Kits/System.Graphics/Core.cxx @@ -0,0 +1,14 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + + File: Core.cpp + Purpose: + + Revision History: + + 31/01/24: Added file (amlel) + +------------------------------------------- */ + +#include <System.Graphics/Core.hxx> diff --git a/Public/Kits/System.Graphics/Core.hxx b/Public/Kits/System.Graphics/Core.hxx new file mode 100644 index 00000000..db9aa36f --- /dev/null +++ b/Public/Kits/System.Graphics/Core.hxx @@ -0,0 +1,185 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + + File: Core.hxx + Purpose: + + Revision History: + + 31/01/24: Added file (amlel) + 08/02/24: Update Form to GForm. (amlel) + +------------------------------------------- */ + +#pragma once + +#include <CompilerKit/CompilerKit.hpp> +#include <NewKit/Array.hpp> +#include <NewKit/Defines.hpp> +#include <NewKit/Ref.hpp> +#include <NewKit/String.hpp> + +#define $() HCore::GApplication::Shared()->Document() + +#ifdef __IMPORT_LIB +#define G_API __attribute__((pef_container(".IMPORT"))) +#else +#define G_API __attribute__((pef_container(".EXPORT"))) +#endif // ifdef __EXPORT_LIB + +namespace HCore { +template <typename... T> +class GAction; + +class GString; +class GNumber; +class GVector2; +class GBoolean; +class GDocument; +class GApplication; +class GFrame; + +class G_API GBoolean { + private: + explicit GBoolean() : m_Value(false) {} + + HCore::Boolean m_Value; + + friend class GForm; + + public: + static const GBoolean Construct(HCore::StringView& sw, HCore::Boolean value) { + GBoolean boolean; + boolean.m_Value = value; + + return boolean; + } +}; + +template <typename... T> +class G_API GAction { + explicit GAction(HCore::StringView& sw) { m_Name = sw; } + + HCore::StringView m_Name; + void (*m_Action)(T&&... args); + + friend class GForm; + + public: + static const GAction Construct(HCore::StringView& sw, + void (*action)(T&&... args)) { + GAction actcls{sw}; + actcls.m_Action = action; + + return actcls; + } +}; + +class G_API GVector2 { + explicit GVector2(HCore::StringView& sw) : m_Vec2() {} + + HCore::Array<HCore::Int, 3> m_Vec2; + + friend class GForm; + + public: + static const GVector2 Construct(HCore::StringView& sw, + HCore::Array<HCore::Int, 3>& vec2) { + GVector2 vec{sw}; + vec.m_Vec2 = vec2; + + return vec; + } +}; + +class G_API GNumber { + HCore::Int m_Number{0}; + friend class GForm; + + public: + static const GNumber Construct(HCore::Int& number) { + GNumber num; + num.m_Number = number; + + return num; + } +}; + +class G_API GString { + explicit GString(HCore::StringView& content) { + m_Content = new HCore::StringView(); + *m_Content = content; + } + + HCore::StringView* m_Content; + + friend class GForm; + + public: + static const GString Construct(HCore::StringView& value) { + GString str{value}; + return str; + } +}; + +class G_API GApplication final { + public: + explicit GApplication() = default; + ~GApplication() = default; + + HCORE_COPY_DEFAULT(GApplication); + + GDocument* Document() noexcept { return nullptr; } + + static GApplication* Shared() noexcept { + STATIC GApplication* kApp = nullptr; + + if (!kApp) kApp = new GApplication(); + + return kApp; + } +}; + +class G_API GDocument final { + public: + explicit GDocument(StringView& sv) : mString(GString::Construct(sv)) {} + ~GDocument() = default; + + HCORE_COPY_DEFAULT(GDocument); + + GFrame** GetAddressOf() noexcept { return &mFrame; } + GFrame* Get() noexcept { return mFrame; } + + GString& Name() { return mString; } + + private: + GFrame* mFrame{nullptr}; + GString mString; +}; + +class GException final { + public: + explicit GException() = default; + ~GException() = default; + + public: + HCORE_COPY_DEFAULT(GException); + + public: + const char* Name() { return "GUI Error"; } + const char* Reason() { return mReason; } + + private: + const char* mReason{"CoreAPI: GUI Exception!"}; +}; + +template <typename GFrameType, typename GFrameBase> +inline GFrameType* frame_cast(GFrameBase* Frame) { + if (!dynamic_cast<GFrameType*>(Frame)) { + throw GException(); + } + + return dynamic_cast<GFrameType*>(Frame); +} +} // namespace HCore diff --git a/Public/Kits/System.Graphics/Dim2d.cxx b/Public/Kits/System.Graphics/Dim2d.cxx new file mode 100644 index 00000000..8623a0e1 --- /dev/null +++ b/Public/Kits/System.Graphics/Dim2d.cxx @@ -0,0 +1,20 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + + File: Dim2d.cpp + Purpose: + + Revision History: + + 31/01/24: Added file (amlel) + +------------------------------------------- */ + +#include <System.Graphics/Dim2d.hxx> + +namespace HCore { +HCore::UInt& Dim2d::X() { return m_X; } + +HCore::UInt& Dim2d::Y() { return m_Y; } +} // namespace HCore diff --git a/Public/Kits/System.Graphics/Dim2d.hxx b/Public/Kits/System.Graphics/Dim2d.hxx new file mode 100644 index 00000000..a4f5fa8d --- /dev/null +++ b/Public/Kits/System.Graphics/Dim2d.hxx @@ -0,0 +1,38 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + + File: Dim2d.hpp + Purpose: + + Revision History: + + 31/01/24: Added file (amlel) + 3/10/24: Remname extension to .hxx + +------------------------------------------- */ + +#ifndef __DIM2D__ +#define __DIM2D__ + +#include <System.Graphics/Core.hxx> + +namespace HCore { +class G_API Dim2d final { + public: + explicit Dim2d() = delete; + explicit Dim2d(const HCore::UInt& x, const HCore::UInt& y) : m_X(x), m_Y(y) {} + + Dim2d& operator=(const Dim2d&) = default; + Dim2d(const Dim2d&) = default; + + HCore::UInt& X(); + HCore::UInt& Y(); + + private: + HCore::UInt m_X{0}; + HCore::UInt m_Y{0}; +}; +} // namespace HCore + +#endif /* ifndef __DIM2D__ */ diff --git a/Public/Kits/System.Graphics/Frame.cxx b/Public/Kits/System.Graphics/Frame.cxx new file mode 100644 index 00000000..10726b57 --- /dev/null +++ b/Public/Kits/System.Graphics/Frame.cxx @@ -0,0 +1,18 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + + File: Frame.cpp + Purpose: + + Revision History: + + 31/01/24: Added file (amlel) + +------------------------------------------- */ + +#include <System.Graphics/Frame.hxx> + +namespace HCore { + +} // namespace HCore diff --git a/Public/Kits/System.Graphics/Frame.hxx b/Public/Kits/System.Graphics/Frame.hxx new file mode 100644 index 00000000..e0d52a4c --- /dev/null +++ b/Public/Kits/System.Graphics/Frame.hxx @@ -0,0 +1,59 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + + File: Frame.hxx + Purpose: + + Revision History: + + 31/01/24: Added file (amlel) + +------------------------------------------- */ + +#pragma once + +#include <System.Graphics/Core.hxx> +#include <System.Graphics/Dim2d.hxx> +#include <NewKit/MutableArray.hpp> + +namespace HCore { +class G_API GFrame { + public: + explicit GFrame(GFrame* parent = nullptr) : m_ParentFrame(parent) {} + ~GFrame() {} + + GFrame& operator=(const GFrame&) = default; + GFrame(const GFrame&) = default; + + virtual void Update() { + if (m_Frames.Count() == 0) return; + + for (int x = 0; x < m_Frames.Count(); ++x) { + if (!m_Frames[x]->ShouldBeUpdated()) continue; + + m_Frames[x]->Update(); + } + + this->Paint(); + } + + virtual void UpdateInput() { + if (m_Frames.Count() == 0) return; + + for (int x = 0; x < m_Frames.Count(); ++x) { + if (!m_Frames[x]->ShouldBeUpdated()) continue; + + m_Frames[x]->UpdateInput(); + } + } + + virtual bool ShouldBeUpdated() { return false; } + + virtual void Paint() = 0; + + private: + HCore::MutableArray<GFrame*> m_Frames; + GFrame* m_ParentFrame{nullptr}; +}; +} // namespace HCore diff --git a/Public/Kits/System.Graphics/Makefile b/Public/Kits/System.Graphics/Makefile new file mode 100644 index 00000000..c049857f --- /dev/null +++ b/Public/Kits/System.Graphics/Makefile @@ -0,0 +1,20 @@ +################################################## +# ; (C) Mahrouss Logic, 2024, all rights reserved. +# This is the System.Graphics Makefile. +################################################## + +CC=x86_64-w64-mingw32-g++ +CCFLAGS=-shared -ffreestanding -fno-rtti -fno-exceptions -std=c++20 +OUTPUT=System.Graphics.dll + +.PHONY: build-gkit +build-gkit: + $(CC) -I../ -I$(HOME) -I../../../Private/ $(CCFLAGS) *.cxx -o $(OUTPUT) + +.PHONY: all +all: build-gkit + @echo "[System.Graphics.dll] Build done." + +.PHONY: clean +clean: + rm -f *.o diff --git a/Public/Kits/System.Graphics/Stylesheet.hxx b/Public/Kits/System.Graphics/Stylesheet.hxx new file mode 100644 index 00000000..79efbcf4 --- /dev/null +++ b/Public/Kits/System.Graphics/Stylesheet.hxx @@ -0,0 +1,49 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + + File: Stylesheet.hxx + Purpose: + + Revision History: + + 08/02/24: Added file (amlel) + +------------------------------------------- */ + +#pragma once + +/// TODO: Stylesheets for GUI. + +#include <System.Graphics/Core.hxx> +#include <System.Graphics/Dim2d.hxx> +#include <NewKit/MutableArray.hpp> + +namespace HCore { +class G_API GStylesheet final { + public: + explicit GStylesheet() = default; + ~GStylesheet() = default; + + HCORE_COPY_DEFAULT(GStylesheet); + + MutableArray<StringView>& Props() { return mProps; } + + private: + MutableArray<StringView> mProps; +}; + +class StylesheetParser final { + public: + static MutableArray<GStylesheet> FromBlob(WideChar* Blob, SizeT BlobSz) { + MutableArray<GStylesheet> stylesheet; + + if (!Blob || BlobSz < 1) return stylesheet; + + for (auto BlobIndex = 0UL; BlobIndex < BlobSz; ++BlobIndex) { + } + + return stylesheet; + } +}; +} // namespace HCore diff --git a/Public/Kits/System.Graphics/compile_flags.txt b/Public/Kits/System.Graphics/compile_flags.txt new file mode 100644 index 00000000..6e721e73 --- /dev/null +++ b/Public/Kits/System.Graphics/compile_flags.txt @@ -0,0 +1,4 @@ +-I./ +-I../ +-I../../../Private +-std=c++20 |
