summaryrefslogtreecommitdiffhomepage
path: root/dev/Usr/LibCF
diff options
context:
space:
mode:
authorAmlal <amlal.elmahrouss@icloud.com>2025-02-24 09:07:56 +0100
committerAmlal <amlal.elmahrouss@icloud.com>2025-02-24 09:07:56 +0100
commit40773d41fa7898e7f03b0de011a9740061ade0aa (patch)
tree66a425fdc830be4ea33b1d75454038036f17d3c7 /dev/Usr/LibCF
parentcb6d0477d6ea65b6364bfbcd872552bec6fbc22a (diff)
Add LibFont and LibLocale, port structs that I made for app-kit to LibCF too.
Signed-off-by: Amlal <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev/Usr/LibCF')
-rw-r--r--dev/Usr/LibCF/Core.cc48
-rw-r--r--dev/Usr/LibCF/Core.h57
2 files changed, 104 insertions, 1 deletions
diff --git a/dev/Usr/LibCF/Core.cc b/dev/Usr/LibCF/Core.cc
new file mode 100644
index 00000000..28306c56
--- /dev/null
+++ b/dev/Usr/LibCF/Core.cc
@@ -0,0 +1,48 @@
+/* -------------------------------------------
+
+ Copyright (C) 2024 Amlal El Mahrouss, all rights reserved
+
+------------------------------------------- */
+
+#include <LibCF/Core.h>
+
+LibCF::CFRect::operator bool()
+{
+ return width > 0 && height > 0;
+}
+
+/***********************************************************************************/
+/// @brief returns true if size matches.
+/***********************************************************************************/
+BOOL LibCF::CFRect::sizeMatches(LibCF::CFRect& rect) noexcept
+{
+ return rect.height == height && rect.width == width;
+}
+
+/***********************************************************************************/
+/// @brief returns true if position matches.
+/***********************************************************************************/
+BOOL LibCF::CFRect::positionMatches(LibCF::CFRect& rect) noexcept
+{
+ return rect.y == y && rect.x == x;
+}
+
+/***********************************************************************************/
+/// @brief Check if point is within the current MLPoint.
+/// @param point the current point to check.
+/// @retval true if point is within this point.
+/// @retval the validations have failed, false otherwise true.
+/***********************************************************************************/
+BOOL LibCF::CFPoint::isWithin(LibCF::CFPoint& withinOf)
+{
+ return x_1 >= withinOf.x_1 && x_2 <= (withinOf.x_2) &&
+ y_1 >= withinOf.y_1 && y_2 <= (withinOf.y_2);
+}
+
+/***********************************************************************************/
+/// @brief if Point object is correctly set up.
+/***********************************************************************************/
+LibCF::CFPoint::operator bool()
+{
+ return x_1 > x_2 && y_1 > y_2;
+} \ No newline at end of file
diff --git a/dev/Usr/LibCF/Core.h b/dev/Usr/LibCF/Core.h
index 7aaa001d..acebe996 100644
--- a/dev/Usr/LibCF/Core.h
+++ b/dev/Usr/LibCF/Core.h
@@ -15,5 +15,60 @@ namespace LibCF
class CFGUID;
class CFProperty;
class CFObject;
- class CFRef; /// TODO: Ref->CFRef
+ class CFRef;
+ class CFFont;
+ struct CFPoint;
+ struct CFRect;
+ struct CFColor;
+
+#ifndef __LP64__
+ typedef SInt32 CFInteger;
+ typedef float CFReal;
+#else
+ typedef SInt64 CFInteger;
+ typedef double CFReal;
+#endif
+
+ typedef SInt32 CFInteger32;
+ typedef SInt64 CFInteger64;
+
+ typedef char CFChar8;
+ typedef char16_t CFChar16;
+
+ struct CFPoint
+ {
+ CFInteger64 x_1{0UL};
+ CFInteger64 y_1{0UL};
+
+ CFInteger64 x_2{0UL};
+ CFInteger64 y_2{0UL};
+ CFReal ang{0UL};
+
+ operator bool();
+
+ /// @brief Check if point is within the current CFPoint.
+ /// @param point the current point to check.
+ /// @retval true if point is within this point.
+ /// @retval validations failed.
+ bool isWithin(CFPoint& point);
+ };
+
+ struct CFColor final
+ {
+ CFInteger64 r, g, b, a{0};
+ };
+
+ struct CFRect final
+ {
+ CFInteger64 x{0UL};
+ CFInteger64 y{0UL};
+
+ CFInteger64 width{0UL};
+ CFInteger64 height{0UL};
+
+ operator bool();
+
+ BOOL sizeMatches(CFRect& rect) noexcept;
+ BOOL positionMatches(CFRect& rect) noexcept;
+ };
} // namespace LibCF \ No newline at end of file