summaryrefslogtreecommitdiff
path: root/alf/alflayout.h
diff options
context:
space:
mode:
Diffstat (limited to 'alf/alflayout.h')
-rw-r--r--alf/alflayout.h70
1 files changed, 70 insertions, 0 deletions
diff --git a/alf/alflayout.h b/alf/alflayout.h
new file mode 100644
index 0000000..4787550
--- /dev/null
+++ b/alf/alflayout.h
@@ -0,0 +1,70 @@
+#pragma once
+
+#include "alf.h"
+#include "alflist.h"
+
+typedef struct {
+ ALFListHeader list;
+ HWND hwnd;
+ UINT x;
+ UINT y;
+ UINT cptWidth;
+ UINT cptHeight;
+ UINT cptMarginTop;
+ UINT cptMarginRight;
+ UINT cptMarginBottom;
+ UINT cptMarginLeft;
+ DWORD flags;
+} ALFWidgetPriv;
+
+typedef struct {
+ int minWidth;
+ int allocatedWidth;
+ int allocatedPosition;
+ int expand : 1;
+} ALFLayoutRowOrColumn;
+
+typedef struct {
+ ALFListHeader widgets;
+ ALFLayoutRowOrColumn *columns;
+ ALFLayoutRowOrColumn *rows;
+ int nColumns;
+ int nRows;
+ int totalMinWidth;
+ int totalMinHeight;
+ int expandoColumnCount;
+ int expandoRowCount;
+} ALFLayout;
+
+void
+ALF_Layout_Init(ALFLayout *layout);
+
+void
+ALF_Layout_Clear(ALFLayout *layout);
+
+void
+ALF_Layout_CalcSizes(ALFLayout *layout, HWND window);
+
+void
+ALF_Layout_Apply(ALFLayout *layout, HWND window);
+
+void
+ALF_Layout_AddWidget(ALFLayout *layout, HWND window, const ALFWidgetLayoutParams *params);
+
+BOOL
+ALF_Layout_RemoveWidget(ALFLayout *layout, HWND window, HWND widget, BOOL destroy);
+
+BOOL
+ALF_Layout_SetWidgetParams(ALFLayout *layout, const ALFWidgetLayoutParams *params, HWND widget);
+
+BOOL
+ALF_Layout_GetWidgetParams(ALFLayout *layout, ALFWidgetLayoutParams *params, HWND widget);
+
+BOOL
+ALF_Layout_HandleMessage(ALFLayout *layout, HWND window, WPARAM wparam, LPARAM lparam);
+
+HWND
+ALF_Layout_WidgetAtPos(ALFLayout *layout, UINT x, UINT y);
+
+void
+ALF_Layout_UpdateFonts(ALFLayout *layout, HWND window, const ALFWindowFonts *fonts);