ProGUI V3 Alpha Sneak Peek!
Posted: Mon Mar 18, 2024 6:46 pm
Hi guys! This is a sneak peek of the new ProGUI V3 alpha which I've spent the past 7 months or so developing and is a total re-write from the ground-up.
https://www.youtube.com/shorts/joYegMLUxyc
More dev diary videos: https://www.youtube.com/channel/UCBcx4x ... R0b_uQ4Cwg
Core features implemented:
* Cross platform, currently Windows and Linux (although the Linux code is a little behind at the moment).
* Unified GFX API - DirectX 11/ Direct2D / DirectWrite on Windows and Cairo / Pango on Linux.
* Automatic per monitor DPI scaling using Device Independant Pixels.
* Advanced layout engines including Basic, Flex and Grid which can handle updating tens of thousands of items without breaking a sweat.
* Overflow and dynamic bucket system for virtual scrolling in layouts.
* Event handler engine that can be easily subclassed with many handlers per event.
* Animation with all rendering synced to the animation and render threads.
* Easily create custom widgets using the GFX API.
Windows specific features:
* Super fast rendering and glitch-free window resizing with direct integration with the Desktop Window Manager.
* Diverted rendering of all Win32 common controls (also includes PB Canvas and Scintilla) directly onto the Direct2D bitmaps (including UXTheme animation), allowing alpha transparency and masking.
* Native WebView2 widget with rendering diverted directly onto the Direct2D bitmaps.
Layout features:
All layouts support padding and item margins along with overflow and scrolling.
Layouts support automatic 'fit-to-content' and can be nested.
Layout Items:
#PG_Layout_Item_Visiblity
#PG_Layout_Item_MinWidth
#PG_Layout_Item_MinHeight
#PG_Layout_Item_IdealWidth
#PG_Layout_Item_IdealHeight
#PG_Layout_Item_Margin
#PG_Layout_Item_MarginTop
#PG_Layout_Item_MarginLeft
#PG_Layout_Item_MarginBottom
#PG_Layout_Item_MarginRight
#PG_Layout_Item_Justify
#PG_Layout_Item_Align
#PG_Layout_Item_Justify_Start
#PG_Layout_Item_Justify_Center
#PG_Layout_Item_Justify_End
#PG_Layout_Item_Align_Start
#PG_Layout_Item_Align_Center
#PG_Layout_Item_Align_End
Flex:
#PG_Flex_Direction
#PG_Flex_Wrap
#PG_Flex_Justify
#PG_Flex_AlignItems
#PG_Flex_AlignContent
#PG_Flex_Direction_Row
#PG_Flex_Direction_RowReverse
#PG_Flex_Direction_Column
#PG_Flex_Direction_ColumnReverse
#PG_Flex_Justify_Start
#PG_Flex_Justify_Center
#PG_Flex_Justify_End
#PG_Flex_Justify_SpaceAround
#PG_Flex_Justify_SpaceBetween
#PG_Flex_AlignContent_Start
#PG_Flex_AlignContent_Center
#PG_Flex_AlignContent_End
#PG_Flex_AlignContent_SpaceAround
#PG_Flex_AlignContent_SpaceBetween
#PG_Flex_AlignContent_Stretch
Grid:
#PG_Layout_Item_RowStart
#PG_Layout_Item_RowSpan
#PG_Layout_Item_ColumnStart
#PG_Layout_Item_ColumnSpan
#PG_Grid_TemplateColumnSize
#PG_Grid_TemplateColumnMinSize
#PG_Grid_TemplateColumnMaxSize
#PG_Grid_TemplateRowSize
#PG_Grid_TemplateRowMinSize
#PG_Grid_TemplateRowMaxSize
#PG_Grid_GapSize
#PG_Grid_GapSizeColumns
#PG_Grid_GapSizeRows
#PG_Grid_JustifyContent
#PG_Grid_AlignContent
#PG_Grid_JustifyItems
#PG_Grid_AlignItems
#PG_Grid_Flow
#PG_Grid_DefaultColumnSize
#PG_Grid_DefaultColumnMinSize
#PG_Grid_DefaultColumnMaxSize
#PG_Grid_DefaultRowSize
#PG_Grid_DefaultRowMinSize
#PG_Grid_DefaultRowMaxSize
#PG_Grid_SpanMode
#PG_Grid_SpanModeColumns
#PG_Grid_SpanModeRows
#PG_Grid_JustifyContent_Start
#PG_Grid_JustifyContent_Center
#PG_Grid_JustifyContent_End
#PG_Grid_JustifyContent_SpaceAround
#PG_Grid_JustifyContent_SpaceBetween
#PG_Grid_JustifyContent_SpaceEvenly
#PG_Grid_AlignContent_Start
#PG_Grid_AlignContent_Center
#PG_Grid_AlignContent_End
#PG_Grid_AlignContent_SpaceAround
#PG_Grid_AlignContent_SpaceBetween
#PG_Grid_AlignContent_SpaceEvenly
#PG_Grid_JustifyItems_Start
#PG_Grid_JustifyItems_Center
#PG_Grid_JustifyItems_End
#PG_Grid_AlignItems_Start
#PG_Grid_AlignItems_Center
#PG_Grid_AlignItems_End
#PG_Grid_Flow_Row
#PG_Grid_Flow_RowDense
#PG_Grid_SpanMode_Tight
#PG_Grid_SpanMode_Even
#PG_Grid_MaxContent
#PG_Grid_Auto
#PG_Grid_Default
#PG_Grid_Percent
Hopefully I'll have the first alpha version ready for you guys to test soon, it's not quite ready yet.
Cheers! Chris.
https://www.youtube.com/shorts/joYegMLUxyc
More dev diary videos: https://www.youtube.com/channel/UCBcx4x ... R0b_uQ4Cwg
Core features implemented:
* Cross platform, currently Windows and Linux (although the Linux code is a little behind at the moment).
* Unified GFX API - DirectX 11/ Direct2D / DirectWrite on Windows and Cairo / Pango on Linux.
* Automatic per monitor DPI scaling using Device Independant Pixels.
* Advanced layout engines including Basic, Flex and Grid which can handle updating tens of thousands of items without breaking a sweat.
* Overflow and dynamic bucket system for virtual scrolling in layouts.
* Event handler engine that can be easily subclassed with many handlers per event.
* Animation with all rendering synced to the animation and render threads.
* Easily create custom widgets using the GFX API.
Windows specific features:
* Super fast rendering and glitch-free window resizing with direct integration with the Desktop Window Manager.
* Diverted rendering of all Win32 common controls (also includes PB Canvas and Scintilla) directly onto the Direct2D bitmaps (including UXTheme animation), allowing alpha transparency and masking.
* Native WebView2 widget with rendering diverted directly onto the Direct2D bitmaps.
Layout features:
All layouts support padding and item margins along with overflow and scrolling.
Layouts support automatic 'fit-to-content' and can be nested.
Layout Items:
#PG_Layout_Item_Visiblity
#PG_Layout_Item_MinWidth
#PG_Layout_Item_MinHeight
#PG_Layout_Item_IdealWidth
#PG_Layout_Item_IdealHeight
#PG_Layout_Item_Margin
#PG_Layout_Item_MarginTop
#PG_Layout_Item_MarginLeft
#PG_Layout_Item_MarginBottom
#PG_Layout_Item_MarginRight
#PG_Layout_Item_Justify
#PG_Layout_Item_Align
#PG_Layout_Item_Justify_Start
#PG_Layout_Item_Justify_Center
#PG_Layout_Item_Justify_End
#PG_Layout_Item_Align_Start
#PG_Layout_Item_Align_Center
#PG_Layout_Item_Align_End
Flex:
#PG_Flex_Direction
#PG_Flex_Wrap
#PG_Flex_Justify
#PG_Flex_AlignItems
#PG_Flex_AlignContent
#PG_Flex_Direction_Row
#PG_Flex_Direction_RowReverse
#PG_Flex_Direction_Column
#PG_Flex_Direction_ColumnReverse
#PG_Flex_Justify_Start
#PG_Flex_Justify_Center
#PG_Flex_Justify_End
#PG_Flex_Justify_SpaceAround
#PG_Flex_Justify_SpaceBetween
#PG_Flex_AlignContent_Start
#PG_Flex_AlignContent_Center
#PG_Flex_AlignContent_End
#PG_Flex_AlignContent_SpaceAround
#PG_Flex_AlignContent_SpaceBetween
#PG_Flex_AlignContent_Stretch
Grid:
#PG_Layout_Item_RowStart
#PG_Layout_Item_RowSpan
#PG_Layout_Item_ColumnStart
#PG_Layout_Item_ColumnSpan
#PG_Grid_TemplateColumnSize
#PG_Grid_TemplateColumnMinSize
#PG_Grid_TemplateColumnMaxSize
#PG_Grid_TemplateRowSize
#PG_Grid_TemplateRowMinSize
#PG_Grid_TemplateRowMaxSize
#PG_Grid_GapSize
#PG_Grid_GapSizeColumns
#PG_Grid_GapSizeRows
#PG_Grid_JustifyContent
#PG_Grid_AlignContent
#PG_Grid_JustifyItems
#PG_Grid_AlignItems
#PG_Grid_Flow
#PG_Grid_DefaultColumnSize
#PG_Grid_DefaultColumnMinSize
#PG_Grid_DefaultColumnMaxSize
#PG_Grid_DefaultRowSize
#PG_Grid_DefaultRowMinSize
#PG_Grid_DefaultRowMaxSize
#PG_Grid_SpanMode
#PG_Grid_SpanModeColumns
#PG_Grid_SpanModeRows
#PG_Grid_JustifyContent_Start
#PG_Grid_JustifyContent_Center
#PG_Grid_JustifyContent_End
#PG_Grid_JustifyContent_SpaceAround
#PG_Grid_JustifyContent_SpaceBetween
#PG_Grid_JustifyContent_SpaceEvenly
#PG_Grid_AlignContent_Start
#PG_Grid_AlignContent_Center
#PG_Grid_AlignContent_End
#PG_Grid_AlignContent_SpaceAround
#PG_Grid_AlignContent_SpaceBetween
#PG_Grid_AlignContent_SpaceEvenly
#PG_Grid_JustifyItems_Start
#PG_Grid_JustifyItems_Center
#PG_Grid_JustifyItems_End
#PG_Grid_AlignItems_Start
#PG_Grid_AlignItems_Center
#PG_Grid_AlignItems_End
#PG_Grid_Flow_Row
#PG_Grid_Flow_RowDense
#PG_Grid_SpanMode_Tight
#PG_Grid_SpanMode_Even
#PG_Grid_MaxContent
#PG_Grid_Auto
#PG_Grid_Default
#PG_Grid_Percent
Hopefully I'll have the first alpha version ready for you guys to test soon, it's not quite ready yet.
Cheers! Chris.