ProGUI V3 Alpha 3 Ready for testing!

Developed or developing a new product in PureBasic? Tell the world about it.
PrincieD
Addict
Addict
Posts: 858
Joined: Wed Aug 10, 2005 2:08 pm
Location: Yorkshire, England
Contact:

ProGUI V3 Alpha 3 Ready for testing!

Post by PrincieD »

Hi Guys! Alpha 3 ready for testing! API is now 325 commands!

New CSS style borders (with CreateBorder command) as well as Image borders (CreateBorderImg) and borders are now integrated into Widgets with WidgetSetBorder.

Also new Widget caching system which should improve rendering performance quite a bit! (the cache memory management is placeholder at the moment and still needs a bit of work however)

Take a look at the 'test_updateLayout.pb' example to see the new borders.

https://www.progui.co.uk/downloads/ProGUI_V3_Alpha.zip

"preliminary" docs here https://www.progui.co.uk/downloads/testhelp/index.html (take the example code mentioned with a pinch of salt)

Alpha 3

New commands:

Code: Select all

DrawGetStroke.f(*Flags.Integer = #Null, *DashStartOffset.Float = #Null)
BrushSetDpiScaling(Brush, isEnabled.b)
BrushGetDpiScaling(Brush)
BorderSetDpiScaling(Border, isEnabled.b)
BorderGetDpiScaling(Border)
CreateBorder(StyleFlags = #Null, Width.d = 3, CornerRadius = #Null, Color = #PG_Ignore, Opacity.f = 1)
BorderSetFlags(Border, Flags)
BorderGetFlags(Border)
BorderSetWidth(Border, LeftWidth.d, TopWidth.d, RightWidth.d, BottomWidth.d)
BorderGetWidth.d(Border, *LeftWidth.Double = #Null, *TopWidth.Double = #Null, *RightWidth.Double = #Null, *BottomWidth.Double = #Null)
BorderSetColor(Border, LeftColor.l, LeftOpacity.f, TopColor.l, TopOpacity.f, RightColor.l, RightOpacity.f, BottomColor.l, BottomOpacity.f)
BorderGetColor.l(Border, *LeftColor.Long = #Null, *LeftOpacity.Float = #Null, *TopColor.Long = #Null, *TopOpacity.Float = #Null, *RightColor.Long = #Null, *RightOpacity.Float = #Null, *BottomColor.Long = #Null, *BottomOpacity.Float = #Null)
BorderSetRadius(Border, TopLeftRx.d, TopLeftRy.d, TopRightRx.d, TopRightRy.d, BottomLeftRx.d, BottomLeftRy.d, BottomRightRx.d, BottomRightRy.d)
BorderGetRadius.d(Border, *TopLeftRx.Double = #Null, *TopLeftRy.Double = #Null, *TopRightRx.Double = #Null, *TopRightRy.Double = #Null, *BottomLeftRx.Double = #Null, *BottomLeftRy.Double = #Null, *BottomRightRx.Double = #Null, *BottomRightRy.Double = #Null)
DrawSetAntialias(Mode.i)
DrawGetAntialias()
DrawSetBlendMode(Mode.i)
DrawGetBlendMode()
WidgetSetName(Widget, Name.s)
WidgetSetBorder(Widget, Border)
WidgetSetOpacity(Widget, Opacity.f)
WidgetGetOpacity.f(Widget)
CreateImg(Width, Height, BackgroundColor = #PG_Img_Transparent, PixelFormat = #PG_Img_Format_BGRA32)
Alpha 2.1

New vector drawing path commands:

Code: Select all

PathMoveTo(x.d, y.d, Flags = #Null)
PathAddLine(x.d, y.d, Flags = #Null)
PathAddCurve(x1.d, y1.d, x2.d, y2.d, x3.d, y3.d, Flags = #Null)
PathAddArc(x.d, y.d, rx.d, ry.d, rotationAngle.d = 0, isSweepClockwise.b = #True, isLargeArc.b = #False)
PathClose()
PathReset()
PathGetCursorX()
PathGetCursorY()
DrawPath(Color.l, Opacity.f = 1, Flags = #Null)
DrawPathFill(Brush, Flags = #Null)
DrawPathStroke(Color.l, Opacity.f = 1, Flags = #Null)
DrawPathStrokeFill(Brush, Flags = #Null)
DrawSave()
DrawRestore()
BeginClipPath(Flags = #Null)
EndClip()
test_path.pb:

https://www.youtube.com/shorts/6hz-ESyDErU

Image

Alpha 2

Quite a few bug fixes, the GFX API has been fleshed out massively and the API has been simplified greatly for dealing with Layouts and Widgets (now using Getters/Setters instead of LayoutSetProperty/LayoutItemSetProperty).

Also brand new BorderImgEditor tool with complete source (showcases how to create an app from scratch and how to incorporate a hybrid of PureBasic gadgets and ProGUI widgets). It's worth noting that this is a DirectX 11 window, all of the PureBasic gadget (Win32 Common control) rendering is diverted directly onto Direct2D bitmaps using some low level API hooks (this applies to all ProGUI windows and is automatic, some benefits are alpha composition with layers and alpha masking - this also applies to the WebView2 widget).

https://www.youtube.com/watch?v=kz6yhsJMPUk

Image

Please bare in mind this is still alpha - there will be bugs, parts of the API missing / needs fleshing out etc..
Currently no documentation but take a look at the 'ProGUI_pb.pbi' for constants and commands as well as the test examples (which are a bit rough and ready at the moment). But yep have a mess around with the examples (try uncommenting various bits) and have fun!

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.

Commands (325):

Code: Select all

DispatchEvent(Object, EventType, *EventData = #Null)
AddEventHandler(Object, EventType, *Callback, *UserData = #Null)
AlphaBlendColor(Color1 , Color2 , Alpha)
GetGFXDriver()
CreateImg(Width, Height, BackgroundColor = #PG_Img_Transparent, PixelFormat = #PG_Img_Format_BGRA32)
LoadImg(Path.s, Flags = #Null)
ImgGetWidth(Img)
ImgGetHeight(Img)
ImgAddSize(Img, SrcImg)
ImgSetProperty(Img, Property, Value)
ImgSetInterpolationMode(Img, InterpolationMode)
ImgGetInterpolationMode(Img)
OutputImg(Img, DPI_X = #Null, DPI_Y = #Null)
BeginDraw(Output)
EndDraw()
DrawSave()
DrawRestore()
DrawDPI(DPI_X, DPI_Y = #Null)
DrawGetDPI(*DPI_Y.Integer = #Null)
DrawGetDPIScaleX.d()
DrawGetDPIScaleY.d()
DrawSetAntialias(Mode.i)
DrawGetAntialias()
DrawSetBlendMode(Mode.i)
DrawGetBlendMode()
BeginLayer(x.d, y.d, Width.d, Height.d, Opacity.f = 1, OpacityBrush = #Null, Border = #Null)
EndLayer()
BeginClipBox(x.d, y.d, Width.d, Height.d)
BeginClipPath(Flags = #Null)
EndClip()
CreateBrushImg(Img)
CreateBrushGradientLinear(StartX.d, StartY.d, EndX.d, EndY.d, StartColor.l, StartOpacity.f, EndColor.l, EndOpacity.f)
CreateBrushGradientRadial(CenterX.d, CenterY.d, OriginOffsetX.d, OriginOffsetY.d, RadiusX.d, RadiusY.d, StartColor.l, StartOpacity.f, EndColor.l, EndOpacity.f)
BrushGradientAddColor(Brush, Position.f, Color.l, Opacity.f)
BrushGradientLinearSetPoints(Brush, StartX.d, StartY.d, EndX.d, EndY.d)
BrushGradientRadialSetPoints(Brush, CenterX.d, CenterY.d, OriginOffsetX.d, OriginOffsetY.d, RadiusX.d, RadiusY.d)
BrushSetPosition(Brush, x.d, y.d)
BrushSetScale(Brush, ScaleX.d, ScaleY.d, CenterPx.d = 0, CenterPy.d = 0)
BrushSetRotation(Brush, Rotation.d, CenterPx.d, CenterPy.d)
BrushSetOpacity(Brush, Opacity.f)
BrushSetExtendMode(Brush, ExtendModeX, ExtendModeY)
BrushSetInterpolationMode(Brush, InterpolationMode)
BrushGetInterpolationMode(Brush)
BrushSetDpiScaling(Brush, isEnabled.b)
BrushGetDpiScaling(Brush)
BrushReset(Brush)
BrushSetImg(Brush, Img)
FreeBrush(Brush)
CreateBorder(StyleFlags = #Null, Width.d = 3, CornerRadius = #Null, Color = #PG_Ignore, Opacity.f = 1) ; Creates a border
CreateBorderImg(Img, ImgMask, LeftEdgeOffset, TopEdgeOffset, RightEdgeOffset, BottomEdgeOffset, Flags = #Null) ; Creates an Img border
BorderImgSetSlices(Border, LeftEdgeOffset, TopEdgeOffset, RightEdgeOffset, BottomEdgeOffset)
BorderImgGetSlices(Border, *LeftEdgeOffset.Integer, *TopEdgeOffset.Integer = #Null, *RightEdgeOffset.Integer = #Null, *BottomEdgeOffset.Integer = #Null)
BorderImgSetWidth(Border, leftScaleFactor.d, topScaleFactor.d = #PG_Ignore, rightScaleFactor.d = #PG_Ignore, bottomScaleFactor.d = #PG_Ignore)
BorderImgGetWidth.d(Border, *leftScaleFactor.Double, *topScaleFactor.Double = #Null, *rightScaleFactor.Double = #Null, *bottomScaleFactor.Double = #Null)
BorderImgSetFlags(Border, Flags)
BorderImgGetFlags(Border)
BorderImgSetInterpolationMode(Border, InterpolationMode)
BorderImgGetInterpolationMode(Border)
BorderSetDpiScaling(Border, isEnabled.b)
BorderGetDpiScaling(Border)
BorderSetFlags(Border, Flags)
BorderGetFlags(Border)
BorderSetWidth(Border, LeftWidth.d, TopWidth.d, RightWidth.d, BottomWidth.d)
BorderGetWidth.d(Border, *LeftWidth.Double = #Null, *TopWidth.Double = #Null, *RightWidth.Double = #Null, *BottomWidth.Double = #Null)
BorderSetColor(Border, LeftColor.l, LeftOpacity.f, TopColor.l, TopOpacity.f, RightColor.l, RightOpacity.f, BottomColor.l, BottomOpacity.f)
BorderGetColor.l(Border, *LeftColor.Long = #Null, *LeftOpacity.Float = #Null, *TopColor.Long = #Null, *TopOpacity.Float = #Null, *RightColor.Long = #Null, *RightOpacity.Float = #Null, *BottomColor.Long = #Null, *BottomOpacity.Float = #Null)
BorderSetRadius(Border, TopLeftRx.d, TopLeftRy.d, TopRightRx.d, TopRightRy.d, BottomLeftRx.d, BottomLeftRy.d, BottomRightRx.d, BottomRightRy.d)
BorderGetRadius.d(Border, *TopLeftRx.Double = #Null, *TopLeftRy.Double = #Null, *TopRightRx.Double = #Null, *TopRightRy.Double = #Null, *BottomLeftRx.Double = #Null, *BottomLeftRy.Double = #Null, *BottomRightRx.Double = #Null, *BottomRightRy.Double = #Null)
FreeBorder(Border)
DrawClear(Color = 0, Opacity.f = 0)
PathMoveTo(x.d, y.d, Flags = #Null)
PathAddLine(x.d, y.d, Flags = #Null)
PathAddCurve(x1.d, y1.d, x2.d, y2.d, x3.d, y3.d, Flags = #Null)
PathAddArc(x.d, y.d, rx.d, ry.d, rotationAngle.d = 0, isSweepClockwise.b = #True, isLargeArc.b = #False)
PathClose()
PathReset()
PathGetCursorX.d()
PathGetCursorY.d()
DrawPath(Color.l, Opacity.f = 1, Flags = #Null)
DrawPathFill(Brush, Flags = #Null)
DrawPathStroke(Color.l, Opacity.f = 1, Flags = #Null)
DrawPathStrokeFill(Brush, Flags = #Null)
DrawSetStroke(Width.f, Flags = #Null, DashStartOffset.f = 0)
DrawGetStroke.f(*Flags.Integer = #Null, *DashStartOffset.Float = #Null)
DrawSetStrokeCustom(*CustomDashArray.FLOAT, CustomDashArrayCount)
DrawSetStrokeMiterLimit(MiterLimit.f)
DrawImg(Img, x.d, y.d, Width.d = #PG_Ignore, Height.d = #PG_Ignore, Opacity.f = 1, Frame.i = #Null)
DrawImgEx(Img, x.d, y.d, Width.d, Height.d, dx.d, dy.d, dWidth.d, dHeight.d, Opacity.f)
DrawBorder(Border, x.d, y.d, Width.d, Height.d, Opacity.f = 1, FillBrush = #Null, Flags = #Null)
DrawLine(x1.d, y1.d, x2.d, y2.d, Color.l, Opacity.f = 1)
DrawLineFill(x1.d, y1.d, x2.d, y2.d, Brush)
DrawBox(x.d, y.d, Width.d, Height.d, Color.l, Opacity.f = 1)
DrawBoxFill(x.d, y.d, Width.d, Height.d, Brush, OpacityBrush = #Null)
DrawBoxStroke(x.d, y.d, Width.d, Height.d, Color.l, Opacity.f = 1)
DrawBoxStrokeFill(x.d, y.d, Width.d, Height.d, Brush)
DrawRoundBox(x.d, y.d, Width.d, Height.d, RadiusX.d, RadiusY.d, Color.l, Opacity.f = 1, NoRadiusDPIScaling.b = #False)
DrawRoundBoxFill(x.d, y.d, Width.d, Height.d, RadiusX.d, RadiusY.d, Brush, NoRadiusDPIScaling.b = #False)
DrawRoundBoxStroke(x.d, y.d, Width.d, Height.d, RadiusX.d, RadiusY.d, Color.l, Opacity.f = 1, NoRadiusDPIScaling.b = #False)
DrawRoundBoxStrokeFill(x.d, y.d, Width.d, Height.d, RadiusX.d, RadiusY.d, Brush, NoRadiusDPIScaling.b = #False)
DrawEllipse(x.d, y.d, RadiusX.d, RadiusY.d, Color.l, Opacity.f = 1)
DrawEllipseFill(x.d, y.d, RadiusX.d, RadiusY.d, Brush)
DrawEllipseStroke(x.d, y.d, RadiusX.d, RadiusY.d, Color.l, Opacity.f = 1)
DrawEllipseStrokeFill(x.d, y.d, RadiusX.d, RadiusY.d, Brush)
DrawTxt(Text.i, x.d, y.d, Color.l, Opacity.f = 1)
DrawTxtFill(Text.i, x.d, y.d, Brush)
ImgGrab(Img, x, y, Width, Height)
FreeImg(Img)
CreateText(Content.s, FontName.s, PointSize.d, LayoutWidth.d = #Null, LayoutHeight.d = #Null)
TextSetContent(Text, Content.s)
TextSetJustify(Text, Justify)
TextSetAlign(Text, Align)
TextSetWeight(Text, Weight)
TextSetStyle(Text, Style)
TextSetUnderline(Text, IsUnderline.b)
TextSetStrikethrough(Text, IsStrikethrough.b)
TextSetWrap(Text, Wrap)
TextSetTrimming(Text, Trimming, Delimiter = #Null, DelimiterCount = #Null)
TextSetWidth(Text, LayoutWidth.d)
TextGetWidth.d(Text, ReturnLayoutWidth.b = #False)
TextSetHeight(Text, LayoutHeight.d)
TextGetHeight.d(Text, ReturnLayoutHeight.b = #False)
FreeText(Text)
CreateLayout(LayoutType = #PG_Layout_Type_Basic)
LayoutGetCurrent()
LayoutSetCurrent(Layout)
LayoutPush()
LayoutPop()
LayoutSetType(Layout, LayoutType, Flags = #Null)
LayoutGetType(Layout)
LayoutAddWidget(Layout, Widget, Flags = #Null)
LayoutGetItemFromWidget(Widget)
LayoutGetScrollOffsetX.d(Layout)
LayoutGetScrollOffsetY.d(Layout)
LayoutSetPadding(Layout, Padding)
LayoutGetPadding(Layout, *PaddingLeft.Integer = #Null, *PaddingTop.Integer = #Null, *PaddingRight.Integer = #Null, *PaddingBottom.Integer = #Null)
LayoutSetPaddingLeft(Layout, Padding)
LayoutGetPaddingLeft(Layout)
LayoutSetPaddingTop(Layout, Padding)
LayoutGetPaddingTop(Layout)
LayoutSetPaddingRight(Layout, Padding)
LayoutGetPaddingRight(Layout)
LayoutSetPaddingBottom(Layout, Padding)
LayoutGetPaddingBottom(Layout)
LayoutFlexSetDirection(Layout, Direction)
LayoutFlexGetDirection(Layout)
LayoutFlexSetWrap(Layout, Wrap)
LayoutFlexGetWrap(Layout)
LayoutFlexSetJustify(Layout, Justify)
LayoutFlexGetJustify(Layout)
LayoutFlexSetAlignItems(Layout, AlignItems)
LayoutFlexGetAlignItems(Layout)
LayoutFlexSetAlignContent(Layout, AlignContent)
LayoutFlexGetAlignContent(Layout)
LayoutGridSetFlow(Layout, Flow)
LayoutGridGetFlow(Layout)
LayoutGridSetColumn(Layout, Index = #Null, Size.d = #PG_Grid_Default, isPercent.b = #False)
LayoutGridGetColumn.d(Layout, Index, *isPercent.Integer = #Null)
LayoutGridGetColumnCount(Layout)
LayoutGridSetColumnMin(Layout, Index = #Null, Size.d = #PG_Grid_Default)
LayoutGridGetColumnMin.d(Layout, Index)
LayoutGridSetColumnMax(Layout, Index = #Null, Size.d = #PG_Grid_Default)
LayoutGridGetColumnMax.d(Layout, Index)
LayoutGridSetRow(Layout, Index = #Null, Size.d = #PG_Grid_Default, isPercent.b = #False)
LayoutGridGetRow.d(Layout, Index, *isPercent.Integer = #Null)
LayoutGridGetRowCount(Layout) ;- !!!! needs looking at
LayoutGridSetRowMin(Layout, Index = #Null, Size.d = #PG_Grid_Default)
LayoutGridGetRowMin.d(Layout, Index)
LayoutGridSetRowMax(Layout, Index = #Null, Size.d = #PG_Grid_Default)
LayoutGridGetRowMax.d(Layout, Index)
LayoutGridSetGapSize(Layout, Size.d)
LayoutGridGetGapSize(Layout, *Columns.Integer = #Null, *Rows.Integer = #Null)
LayoutGridSetGapSizeColumns(Layout, Size.d)
LayoutGridGetGapSizeColumns(Layout)
LayoutGridSetGapSizeRows(Layout, Size.d)
LayoutGridGetGapSizeRows(Layout)
LayoutGridSetSpanMode(Layout, SpanMode)
LayoutGridGetSpanMode(Layout, *Columns.Integer = #Null, *Rows.Integer = #Null)
LayoutGridSetSpanModeColumns(Layout, SpanMode)
LayoutGridGetSpanModeColumns(Layout)
LayoutGridSetSpanModeRows(Layout, SpanMode)
LayoutGridGetSpanModeRows(Layout)
LayoutGridSetJustifyContent(Layout, JustifyContent)
LayoutGridGetJustifyContent(Layout)
LayoutGridSetAlignContent(Layout, AlignContent)
LayoutGridGetAlignContent(Layout)
LayoutGridSetJustifyItems(Layout, JustifyItems)
LayoutGridGetJustifyItems(Layout)
LayoutGridSetAlignItems(Layout, AlignItems)
LayoutGridGetAlignItems(Layout)
LayoutGridSetColumnDefault(Layout, Size.d, isPercent.b = #False)
LayoutGridGetColumnDefault.d(Layout, *isPercent.Integer = #Null)
LayoutGridSetColumnMinDefault(Layout, Size.d)
LayoutGridGetColumnMinDefault.d(Layout)
LayoutGridSetColumnMaxDefault(Layout, Size.d)
LayoutGridGetColumnMaxDefault.d(Layout)
LayoutGridSetRowDefault(Layout, Size.d, isPercent.b = #False)
LayoutGridGetRowDefault.d(Layout, *isPercent.Integer = #Null)
LayoutGridSetRowMinDefault(Layout, Size.d)
LayoutGridGetRowMinDefault.d(Layout)
LayoutGridSetRowMaxDefault(Layout, Size.d)
LayoutGridGetRowMaxDefault.d(Layout)
Transition_CubicBezier.d(t.d, b.d, c.d, d.d, P1x.d, P1y.d, P2x.d, P2y.d)
Transition_Linear.d(t.d, b.d, c.d, d.d)
Transition_Ease.d(t.d, b.d, c.d, d.d)
Transition_EaseInQuad.d(t.d, b.d, c.d, d.d)
Transition_EaseOutQuad.d(t.d, b.d, c.d, d.d)
Transition_EaseInOutQuad.d(t.d, b.d, c.d, d.d)
Transition_EaseOutInQuad.d(t.d, b.d, c.d, d.d)
Transition_EaseInCubic.d(t.d, b.d, c.d, d.d)
Transition_EaseOutCubic.d(t.d, b.d, c.d, d.d)
Transition_EaseInOutCubic.d(t.d, b.d, c.d, d.d)
Transition_EaseOutInCubic.d(t.d, b.d, c.d, d.d)
Transition_EaseInQuart.d(t.d, b.d, c.d, d.d)
Transition_EaseOutQuart.d(t.d, b.d, c.d, d.d)
Transition_EaseInOutQuart.d(t.d, b.d, c.d, d.d)
Transition_EaseOutInQuart.d(t.d, b.d, c.d, d.d)
Transition_EaseInQuint.d(t.d, b.d, c.d, d.d)
Transition_EaseOutQuint.d(t.d, b.d, c.d, d.d)
Transition_EaseInOutQuint.d(t.d, b.d, c.d, d.d)
Transition_EaseOutInQuint.d(t.d, b.d, c.d, d.d)
Transition_EaseInSine.d(t.d, b.d, c.d, d.d)
Transition_EaseOutSine.d(t.d, b.d, c.d, d.d)
Transition_EaseInOutSine.d(t.d, b.d, c.d, d.d)
Transition_EaseOutInSine.d(t.d, b.d, c.d, d.d)
Transition_EaseInExpo.d(t.d, b.d, c.d, d.d)
Transition_EaseOutExpo.d(t.d, b.d, c.d, d.d)
Transition_EaseInOutExpo.d(t.d, b.d, c.d, d.d)
Transition_EaseOutInExpo.d(t.d, b.d, c.d, d.d)
Transition_EaseInCirc.d(t.d, b.d, c.d, d.d)
Transition_EaseOutCirc.d(t.d, b.d, c.d, d.d)
Transition_EaseInOutCirc.d(t.d, b.d, c.d, d.d)
Transition_EaseOutInCirc.d(t.d, b.d, c.d, d.d)
Transition_EaseInElastic.d(t.d, b.d, c.d, d.d, amplitude.d = 1, period.d = 0.3)
Transition_EaseOutElastic.d(t.d, b.d, c.d, d.d, amplitude.d = 1, period.d = 0.3)
Transition_EaseInOutElastic.d(t.d, b.d, c.d, d.d, amplitude.d = 1, period.d = 0.3)
Transition_EaseOutInElastic.d(t.d, b.d, c.d, d.d)
Transition_EaseInElastic2.d(t.d, b.d, c.d, d.d, easeInRatio.d = 0.2, amplitude.d = 10, wobbleAmount.d = 3)
Transition_EaseOutElastic2.d(t.d, b.d, c.d, d.d, easeInRatio.d = 0.2, amplitude.d = 10, wobbleAmount.d = 3)
Transition_EaseInBack.d(t.d, b.d, c.d, d.d, backAmount.d = 1.70158)
Transition_EaseOutBack.d(t.d, b.d, c.d, d.d, backAmount.d = 1.70158)
Transition_EaseInOutBack.d(t.d, b.d, c.d, d.d, backAmount.d = 1.70158)
Transition_EaseOutInBack.d(t.d, b.d, c.d, d.d, backAmount.d = 1.70158)
Transition_EaseOutBounce.d(t.d, b.d, c.d, d.d)
Transition_EaseInBounce.d(t.d, b.d, c.d, d.d)
Transition_EaseInOutBounce.d(t.d, b.d, c.d, d.d)
Transition_EaseOutInBounce.d(t.d, b.d, c.d, d.d)
StartAnimation(Object, ID = #PG_Any, Duration = 0, FPS = #Null, IsContinue.b = #False)
StopAnimation(Object, ID)
CreateWindow(x, y, Width, Height, Title.s = "", Flags = #Null, ParentWindowID = #Null)
OutputWindow(Window, *UpdateRect.RECT = #Null)
WindowGetLayout(Window)
WindowGetWidth.d(Window, Flags.i = #Null)
WindowGetHeight.d(Window, Flags.i = #Null)
WindowGetX(Window, Flags.i = #Null)
WindowGetY(Window, Flags.i = #Null)
WindowGetDpiX.d(Window)
WindowGetDpiY.d(Window)
WindowGetDpiScaleX.d(Window)
WindowGetDpiScaleY.d(Window)
WindowSetMouseCapture(Window)
WindowReleaseMouseCapture()
WindowRedraw(Window, *Rect.RECT = #Null)
WindowUpdate(Window)
WindowResize(Window, x, y, Width, Height)
WindowShow(Window, isVisible = #True, Flags = #Null)
WindowSetTitle(Window, Title.s)
WindowGetID(Window)
CreateWidget(x, y, Width, Height, *UserData = #Null, Flags = #Null)
CreateOsWidget(x, y, Width, Height, OS_ID)
WidgetSetName(Widget, Name.s)
WidgetShow(Widget, Visibility = #Null)
WidgetSetLayout(Widget, Layout)
WidgetGetLayout(Widget)
WidgetSetUserData(Widget, UserData)
WidgetGetUserData(Widget)
WidgetSetMouseCapture(Widget)
WidgetReleaseMouseCapture()
WidgetSetCursor(Widget, Cursor)
WidgetGetParentWindow(Widget)
WidgetSetWidth(Widget, Width.d)
WidgetGetWidth.d(Widget, ReturnLayoutDefined.b = #False)
WidgetSetHeight(Widget, Height.d)
WidgetGetHeight.d(Widget, ReturnLayoutDefined.b = #False)
WidgetGetX.d(Widget, ReturnLayoutDefined.b = #False)
WidgetGetY.d(Widget, ReturnLayoutDefined.b = #False)
WidgetSetMinWidth(Widget, Width.d)
WidgetGetMinWidth.d(Widget)
WidgetSetMinHeight(Widget, Height.d)
WidgetGetMinHeight.d(Widget)
WidgetSetMargin(Widget, Margin)
WidgetGetMargin(Widget, *MarginLeft.Integer = #Null, *MarginTop.Integer = #Null, *MarginRight.Integer = #Null, *MarginBottom.Integer = #Null)
WidgetSetMarginLeft(Widget, Margin)
WidgetGetMarginLeft(Widget)
WidgetSetMarginTop(Widget, Margin)
WidgetGetMarginTop(Widget)
WidgetSetMarginRight(Widget, Margin)
WidgetGetMarginRight(Widget)
WidgetSetMarginBottom(Widget, Margin)
WidgetGetMarginBottom(Widget)
WidgetSetJustify(Widget, Justify)
WidgetGetJustify(Widget)
WidgetSetAlign(Widget, Align)
WidgetGetAlign(Widget)
WidgetSetColumnStart(Widget, Column)
WidgetGetColumnStart(Widget)
WidgetSetColumnSpan(Widget, Span)
WidgetGetColumnSpan(Widget)
WidgetSetRowStart(Widget, Row)
WidgetGetRowStart(Widget)
WidgetSetRowSpan(Widget, Span)
WidgetGetRowSpan(Widget)
WidgetSetBorder(Widget, Border)
WidgetSetOpacity(Widget, Opacity.f)
WidgetGetOpacity.f(Widget)
WidgetRedraw(Widget, *Rect.RECT = #Null, RedrawFlags = #Null)
WidgetUpdate(Widget)
WidgetResize(Widget, x.d, y.d, Width.d, Height.d)
WidgetFree(Widget)
CreateScrollBar(x, y, Width, Height, Minimum, Maximum, PageSize, Flags = #Null)
ScrollBarSetValues(ScrollBar, Position = #PG_Ignore, Minimum = #PG_Ignore, Maximum = #PG_Ignore, PageSize = #PG_Ignore)
CreateWebView(x, y, Width, Height, URL.s = "", Flags = #Null)
WebViewNavigate(Webview, URL.s)
StartProGUI(GfxDriver = #Null)
StopProGUI()
RegisterDummyWindow(WindowID)
Constants:

Code: Select all

; Event constants
#PG_Event_Draw = 0
#PG_Event_DrawForeground = 1
#PG_Event_Action = 2
#PG_Event_Animate = 3
#PG_Event_MouseLeftButtonDown = 4
#PG_Event_MouseLeftButtonUp = 5
#PG_Event_MouseLeftDoubleClick = 6
#PG_Event_MouseEnter = 7
#PG_Event_MouseLeave = 8
#PG_Event_MouseMove = 9
#PG_Event_MouseRightButtonDown = 10
#PG_Event_MouseRightButtonUp = 11
#PG_Event_MouseRightDoubleClick = 12
#PG_Event_MouseWheel = 13
#PG_Event_Destroy = 14
#PG_Event_WindowClose = 15
#PG_Event_DPI = 16

; Animation event states
#PG_Event_Animate_Start = 0
#PG_Event_Animate_Update = 1
#PG_Event_Animate_End = 2

; Ignore parameter
#PG_Ignore = -65535

#PG_Any = -1

; Render sub-systems
#PG_InvalidDriver = 0
#PG_RenderDirect2D = 1
#PG_RenderCairo = 2

; Window creation flags
#PG_Window_MinimizeWidget = $1
#PG_Window_MaximizeWidget = $2
#PG_Window_Minimize = $4
#PG_Window_Maximize = $8
#PG_Window_Sizeable = $10
#PG_Window_Borderless = $20
#PG_Window_BackgroundDrag = $40
#PG_Window_LayoutFlex = $80
#PG_Window_LayoutGrid = $100

; Window visibility flags
#PG_Window_NoActivate = $4
#PG_Window_ScreenCentered = $8
#PG_Window_WindowCentered = $10
#PG_Window_NoUpdate = $20

; Widget flags
#PG_Widget_Hide = $1
#PG_Widget_NoDraw = $2
#PG_Widget_NoMouse = $4
#PG_Widget_LayoutBasic = $8
#PG_Widget_LayoutFlex = $10
#PG_Widget_LayoutGrid = $20
#PG_Widget_FirstUserFlag = $40

; Widget cursors
#PG_Cursor_Default = 0
#PG_Cursor_Cross = 1
#PG_Cursor_IBeam = 2
#PG_Cursor_Hand = 3
#PG_Cursor_Busy = 4
#PG_Cursor_Denied = 5
#PG_Cursor_Arrows = 6
#PG_Cursor_LeftRight = 7
#PG_Cursor_UpDown = 8
#PG_Cursor_LeftUpRightDown = 9
#PG_Cursor_LeftDownRightUp = 10
#PG_Cursor_Invisible = 11

; Widget / Window redraw / update flags
#PG_Redraw_AllChildren = $2

; ScrollBar flags
#PG_ScrollBar_Vertical = $40

#PG_Img_Transparent = -1

; Img property flags
#PG_Img_SnapToSize = $1

; Img pixel formats
#PG_Img_Format_BGRA32 = 0
#PG_Img_Format_A8 = 1

; Interpolation modes
#PG_InterpolationMode_Linear = 0
#PG_InterpolationMode_Nearest = 1
#PG_InterpolationMode_Cubic = 2
#PG_InterpolationMode_MultiSampleLinear = 3
#PG_InterpolationMode_Anisotropic = 4
#PG_InterpolationMode_HighQualityCubic = 5

; Brush extend modes
#PG_Brush_ExtendMode_None = 0
#PG_Brush_ExtendMode_Repeat = 1
#PG_Brush_ExtendMode_Mirror = 2
#PG_Brush_ExtendMode_Pad = 3

; Stroke flags
#PG_Stroke_Dash = $1
#PG_Stroke_Dot = $2
#PG_Stroke_CustomDash = $4
#PG_Stroke_NoDPIScaling = $8
#PG_Stroke_RoundEnd = $10
#PG_Stroke_SquareEnd = $20
#PG_Stroke_RoundCorner = $40
#PG_Stroke_BevelCorner = $80
#PG_Stroke_Center = $100
#PG_Stroke_Outside = $200

; CreateBorderImg flags
#PG_BorderImg_NoMask = $1
#PG_BorderImg_MaskOnly = $2
#PG_BorderImg_Stretch = $4
#PG_BorderImg_Repeat = $8
#PG_BorderImg_RepeatRound = $10
#PG_BorderImg_Round = $20
#PG_BorderImg_Space = $40
#PG_BorderImg_StretchLeft = $80
#PG_BorderImg_StretchTop = $100
#PG_BorderImg_StretchRight = $200
#PG_BorderImg_StretchBottom = $400
#PG_BorderImg_RepeatLeft = $800
#PG_BorderImg_RepeatTop = $1000
#PG_BorderImg_RepeatRight = $2000
#PG_BorderImg_RepeatBottom = $4000
#PG_BorderImg_RepeatRoundLeft = $8000
#PG_BorderImg_RepeatRoundTop = $10000
#PG_BorderImg_RepeatRoundRight = $20000
#PG_BorderImg_RepeatRoundBottom = $40000
#PG_BorderImg_RoundLeft = $80000
#PG_BorderImg_RoundTop = $100000
#PG_BorderImg_RoundRight = $200000
#PG_BorderImg_RoundBottom = $400000
#PG_BorderImg_SpaceLeft = $800000
#PG_BorderImg_SpaceTop = $1000000
#PG_BorderImg_SpaceRight = $2000000
#PG_BorderImg_SpaceBottom = $4000000
#PG_BorderImg_CenterStretch = $8000000
#PG_BorderImg_CenterTile = $10000000
#PG_BorderImg_MinSizeShrink = $20000000

; CreateBorder style flags
#PG_Border_NoMask = $1
#PG_Border_MaskOnly = $2
#PG_Border_Solid = $4
#PG_Border_Double = $8
#PG_Border_Inset = $10
#PG_Border_Outset = $20
#PG_Border_Groove = $40
#PG_Border_Ridge = $80
#PG_Border_Dot = $100
#PG_Border_Dash = $200
#PG_Border_LeftSolid = $400
#PG_Border_LeftDouble = $800
#PG_Border_LeftInset = $1000
#PG_Border_LeftOutset = $2000
#PG_Border_LeftGroove = $4000
#PG_Border_LeftRidge = $8000
#PG_Border_LeftDot = $10000
#PG_Border_LeftDash = $20000
#PG_Border_TopSolid = $40000
#PG_Border_TopDouble = $80000
#PG_Border_TopInset = $100000
#PG_Border_TopOutset = $200000
#PG_Border_TopGroove = $400000
#PG_Border_TopRidge = $800000
#PG_Border_TopDot = $1000000
#PG_Border_TopDash = $2000000
#PG_Border_RightSolid = $4000000
#PG_Border_RightDouble = $8000000
#PG_Border_RightInset = $10000000
#PG_Border_RightOutset = $20000000
#PG_Border_RightGroove = $40000000
#PG_Border_RightRidge = $80000000
#PG_Border_RightDot = $100000000
#PG_Border_RightDash = $200000000
#PG_Border_BottomSolid = $400000000
#PG_Border_BottomDouble = $800000000
#PG_Border_BottomInset = $1000000000
#PG_Border_BottomOutset = $2000000000
#PG_Border_BottomGroove = $4000000000
#PG_Border_BottomRidge = $8000000000
#PG_Border_BottomDot = $10000000000
#PG_Border_BottomDash = $20000000000
#PG_Border_MaskInside = $40000000000

; DrawBorder flags
#PG_DrawBorder_FillInside = $1
#PG_DrawBorder_NoMask = $2
#PG_DrawBorder_MaskOnly = $4
#PG_DrawBorder_DrawMask = $8

; Text justify modes
#PG_Text_Justify_Leading = 0
#PG_Text_Justify_Trailing = 1
#PG_Text_Justify_Center = 2
#PG_Text_Justify_Justified = 3

; Text align modes
#PG_Text_Align_Top = 0
#PG_Text_ALign_Bottom = 1
#PG_Text_Align_Center = 2

; Text weight modes
#PG_Text_Weight_Thin = 100
#PG_Text_Weight_ExtraLight = 200
#PG_Text_Weight_Light = 300
#PG_Text_Weight_SemiLight = 350
#PG_Text_Weight_Normal = 400
#PG_Text_Weight_Medium = 500
#PG_Text_Weight_SemiBold = 600
#PG_Text_Weight_Bold = 700
#PG_Text_Weight_ExtraBold = 800
#PG_Text_Weight_Black = 900
#PG_Text_Weight_ExtraBlack = 950

; Text style modes
#PG_Text_Style_Normal = 0
#PG_Text_Style_Oblique = 1
#PG_Text_Style_Italic = 2

; Text word wrap modes
#PG_Text_Wrap_None = 0
#PG_Text_Wrap_Wrap = 1
#PG_Text_Wrap_EmergencyBreak = 2
#PG_Text_Wrap_WholeWord = 3
#PG_Text_Wrap_Character = 4

; Text trimming modes
#PG_Text_Trimming_None = 0
#PG_Text_Trimming_Character = 1
#PG_Text_Trimming_Word = 2

; Path flags
#PG_Path_Preserve = $1
#PG_Path_Winding = $2
#PG_Path_Relative = $4

; Antialias modes
#PG_Antialias_PerPrimitive = 0
#PG_Antialias_Aliased = 1

; Blend mode
#PG_Blend_SourceOver = 0
#PG_Blend_Copy = 1
#PG_Blend_Min = 2
#PG_Blend_Add = 3
#PG_Blend_Max = 4

#PG_DrawDPI_Auto = -1

; Layout engine types
#PG_Layout_Type_Basic = 0
#PG_Layout_Type_Flex = 1
#PG_Layout_Type_Grid = 2

; Layout properties
#PG_Layout_Padding = 0
#PG_Layout_PaddingTop = 1
#PG_Layout_PaddingLeft = 2
#PG_Layout_PaddingBottom = 3
#PG_Layout_PaddingRight = 4
#PG_Flex_Direction = 5
#PG_Flex_Wrap = 6
#PG_Flex_Justify = 7
#PG_Flex_AlignItems = 8
#PG_Flex_AlignContent = 9
#PG_Grid_TemplateColumnSize = 10
#PG_Grid_TemplateColumnMinSize = 11
#PG_Grid_TemplateColumnMaxSize = 12
#PG_Grid_TemplateRowSize = 13
#PG_Grid_TemplateRowMinSize = 14
#PG_Grid_TemplateRowMaxSize = 15
#PG_Grid_GapSize = 16
#PG_Grid_GapSizeColumns = 17
#PG_Grid_GapSizeRows = 18
#PG_Grid_JustifyContent = 19
#PG_Grid_AlignContent = 20
#PG_Grid_JustifyItems = 21
#PG_Grid_AlignItems = 22
#PG_Grid_Flow = 23
#PG_Grid_DefaultColumnSize = 24
#PG_Grid_DefaultColumnMinSize = 25
#PG_Grid_DefaultColumnMaxSize = 26
#PG_Grid_DefaultRowSize = 27
#PG_Grid_DefaultRowMinSize = 28
#PG_Grid_DefaultRowMaxSize = 29
#PG_Grid_SpanMode = 30
#PG_Grid_SpanModeColumns = 31
#PG_Grid_SpanModeRows = 32

; Flex direction property values
#PG_Flex_Direction_Row = 0
#PG_Flex_Direction_RowReverse = 1
#PG_Flex_Direction_Column = 2
#PG_Flex_Direction_ColumnReverse = 3

; Flex wrapping property values
#PG_Flex_Wrap_None = 0
#PG_Flex_Wrap_Enabled = 1

; Flex justify property values
#PG_Flex_Justify_Start = 1
#PG_Flex_Justify_Center = 2
#PG_Flex_Justify_End = 3
#PG_Flex_Justify_SpaceAround = 4
#PG_Flex_Justify_SpaceBetween = 5

; Flex align items property values
#PG_Flex_AlignItems_Stretch = 0
#PG_Flex_AlignItems_Start = 1
#PG_Flex_AlignItems_Center = 2
#PG_Flex_AlignItems_End = 3
#PG_Flex_AlignItems_Baseline  = 4

; Flex align content property values
#PG_Flex_AlignContent_Start = 0
#PG_Flex_AlignContent_Center = 1
#PG_Flex_AlignContent_End = 2
#PG_Flex_AlignContent_SpaceAround = 3
#PG_Flex_AlignContent_SpaceBetween = 4
#PG_Flex_AlignContent_Stretch = 5

; Layout flags
#PG_Layout_NoUpdate = $1
#PG_Grid_Percent = $2

; Grid justify content property values
#PG_Grid_JustifyContent_Start = 0
#PG_Grid_JustifyContent_Center = 1
#PG_Grid_JustifyContent_End = 2
#PG_Grid_JustifyContent_SpaceAround = 3
#PG_Grid_JustifyContent_SpaceBetween = 4
#PG_Grid_JustifyContent_SpaceEvenly = 5

; Grid align content property values
#PG_Grid_AlignContent_Start = 0
#PG_Grid_AlignContent_Center = 1
#PG_Grid_AlignContent_End = 2
#PG_Grid_AlignContent_SpaceAround = 3
#PG_Grid_AlignContent_SpaceBetween = 4
#PG_Grid_AlignContent_SpaceEvenly = 5

; Grid justify items property values
#PG_Grid_JustifyItems_Start = 0
#PG_Grid_JustifyItems_Center = 1
#PG_Grid_JustifyItems_End = 2

; Grid Align items property values
#PG_Grid_AlignItems_Start = 0
#PG_Grid_AlignItems_Center = 1
#PG_Grid_AlignItems_End = 2

; Grid flow property values
#PG_Grid_Flow_Row = 0
#PG_Grid_Flow_RowDense = 1
#PG_Grid_Flow_Column = 2
#PG_Grid_Flow_ColumnDense = 3

; Grid span mode property values
#PG_Grid_SpanMode_Tight = 0
#PG_Grid_SpanMode_Even = 1

; Grid column/row template/auto property values
#PG_Grid_MaxContent = -3
#PG_Grid_Auto = -2
#PG_Grid_Default = -1

; Layout item properties
#PG_Layout_Item_Visiblity = 0
#PG_Layout_Item_MinWidth = 1
#PG_Layout_Item_MinHeight = 2
#PG_Layout_Item_IdealWidth = 3
#PG_Layout_Item_IdealHeight = 4
#PG_Layout_Item_Margin = 5
#PG_Layout_Item_MarginTop = 6
#PG_Layout_Item_MarginLeft = 7
#PG_Layout_Item_MarginBottom = 8
#PG_Layout_Item_MarginRight = 9
#PG_Layout_Item_Justify = 10
#PG_Layout_Item_Align = 11
#PG_Layout_Item_RowStart = 12
#PG_Layout_Item_RowSpan = 13
#PG_Layout_Item_ColumnStart = 14
#PG_Layout_Item_ColumnSpan = 15

#PG_Layout_FitContent = -1

; Layout item flags
#PG_Layout_Item_Justify_Start = $20000
#PG_Layout_Item_Justify_Center = $40000
#PG_Layout_Item_Justify_End = $80000
#PG_Layout_Item_Align_Start = $100000
#PG_Layout_Item_Align_Center = $200000
#PG_Layout_Item_Align_End = $400000

; Layout item visibility property values
#PG_Layout_Item_Show = 0
#PG_Layout_Item_Hide = 1
#PG_Layout_Item_NoDraw = 2

; Window coordinate/size constants
#PG_Window_InnerCoordinate = $1
#PG_Window_OuterCoordinate = $2
#PG_Window_ReturnPixels = $4

; Widget justify
#PG_Widget_Justify_Start = #PG_Layout_Item_Justify_Start
#PG_Widget_Justify_Center = #PG_Layout_Item_Justify_Center
#PG_Widget_Justify_End = #PG_Layout_Item_Justify_End

; Widget align
#PG_Widget_Align_Start = #PG_Layout_Item_Align_Start
#PG_Widget_Align_Center = #PG_Layout_Item_Align_Center
#PG_Widget_Align_End = #PG_Layout_Item_Align_End

#PG_Widget_FitContent = #PG_Layout_FitContent
Cheers!

Chris.
Last edited by PrincieD on Sun Apr 06, 2025 10:57 pm, edited 23 times in total.
ProGUI - Professional Graphical User Interface Library - http://www.progui.co.uk
wombats
Enthusiast
Enthusiast
Posts: 716
Joined: Thu Dec 29, 2011 5:03 pm

Re: ProGUI V3 Alpha 1.0 Ready for testing!

Post by wombats »

Looks great from what I've tried so far! Will V3 have any of the controls in V1 like menus, toolbars, rebars, and so on?
PrincieD
Addict
Addict
Posts: 858
Joined: Wed Aug 10, 2005 2:08 pm
Location: Yorkshire, England
Contact:

Re: ProGUI V3 Alpha 1.0 Ready for testing!

Post by PrincieD »

wombats wrote: Tue Jul 02, 2024 1:06 pm Looks great from what I've tried so far! Will V3 have any of the controls in V1 like menus, toolbars, rebars, and so on?
Thanks Wombats! :) yes the beta will have the first set of 'Pro' controls such as the menus etc.. It's very quick and easy to create them now with the layout engines for example a toolbar is pretty much just a widget with a Flex row-rap layout. I'll be fleshing out the GFX API, adding borders to widgets (integrated) and getting the skinning engine up and running over the coming weeks first
ProGUI - Professional Graphical User Interface Library - http://www.progui.co.uk
Zach
Addict
Addict
Posts: 1675
Joined: Sun Dec 12, 2010 12:36 am
Location: Somewhere in the midwest
Contact:

Re: ProGUI V3 Alpha 1.0 Ready for testing!

Post by Zach »

Cool, will check this out when I have some spare time. Though I haven't done much coding at all in recent years. Not sure I'll be the best at finding any bugs to report 8)
PrincieD
Addict
Addict
Posts: 858
Joined: Wed Aug 10, 2005 2:08 pm
Location: Yorkshire, England
Contact:

Re: ProGUI V3 Alpha 1.0 Ready for testing!

Post by PrincieD »

Zach wrote: Tue Jul 02, 2024 4:33 pm Cool, will check this out when I have some spare time. Though I haven't done much coding at all in recent years. Not sure I'll be the best at finding any bugs to report 8)
Nice one Zack :)
ProGUI - Professional Graphical User Interface Library - http://www.progui.co.uk
Fred
Administrator
Administrator
Posts: 18150
Joined: Fri May 17, 2002 4:39 pm
Location: France
Contact:

Re: ProGUI V3 Alpha 1.0 Ready for testing!

Post by Fred »

That looks very good !
PrincieD
Addict
Addict
Posts: 858
Joined: Wed Aug 10, 2005 2:08 pm
Location: Yorkshire, England
Contact:

Re: ProGUI V3 Alpha 1.0 Ready for testing!

Post by PrincieD »

Fred wrote: Wed Jul 03, 2024 8:05 am That looks very good !
Thanks Fred! :)
ProGUI - Professional Graphical User Interface Library - http://www.progui.co.uk
User avatar
moulder61
Enthusiast
Enthusiast
Posts: 188
Joined: Sun Sep 19, 2021 6:16 pm
Location: U.K.

Re: ProGUI V3 Alpha 1.0 Ready for testing!

Post by moulder61 »

Hi PrincieD,

Just tried it in Linux and it can't find ProGUI.so.
There's a ProGUI.lib and a ProGUI.dll in the folder.
Did you forget to include it or am I doing something wrong?

Moulder.
"If it ain't broke, fix it until it is!

This message is brought to you thanks to SenselessComments.com

My PB stuff for Linux: "https://u.pcloud.link/publink/show?code ... z3MR0T3jyV
PrincieD
Addict
Addict
Posts: 858
Joined: Wed Aug 10, 2005 2:08 pm
Location: Yorkshire, England
Contact:

Re: ProGUI V3 Alpha 1.0 Ready for testing!

Post by PrincieD »

moulder61 wrote: Wed Jul 03, 2024 4:52 pm Hi PrincieD,

Just tried it in Linux and it can't find ProGUI.so.
There's a ProGUI.lib and a ProGUI.dll in the folder.
Did you forget to include it or am I doing something wrong?

Moulder.
Hi moulder61, I'm just concentrating on the Windows version for the moment (as the Linux version is a bit behind development, needs about a month to get it up-to speed)
ProGUI - Professional Graphical User Interface Library - http://www.progui.co.uk
User avatar
moulder61
Enthusiast
Enthusiast
Posts: 188
Joined: Sun Sep 19, 2021 6:16 pm
Location: U.K.

Re: ProGUI V3 Alpha 1.0 Ready for testing!

Post by moulder61 »

@PrincieD

Fair enough. :)
I don't even know what your application does but I'm interested to have a look.

Moulder.
"If it ain't broke, fix it until it is!

This message is brought to you thanks to SenselessComments.com

My PB stuff for Linux: "https://u.pcloud.link/publink/show?code ... z3MR0T3jyV
PrincieD
Addict
Addict
Posts: 858
Joined: Wed Aug 10, 2005 2:08 pm
Location: Yorkshire, England
Contact:

Re: ProGUI V3 Alpha 1.0 Ready for testing!

Post by PrincieD »

moulder61 wrote: Wed Jul 03, 2024 9:51 pm I don't even know what your application does but I'm interested to have a look.
Oh haha, it's a UI Framework
ProGUI - Professional Graphical User Interface Library - http://www.progui.co.uk
User avatar
moulder61
Enthusiast
Enthusiast
Posts: 188
Joined: Sun Sep 19, 2021 6:16 pm
Location: U.K.

Re: ProGUI V3 Alpha 1.0 Ready for testing!

Post by moulder61 »

Oh haha, it's a UI Framework
Nope, still no clue. ;)
Whatever, it looks pretty impressive. :)

Moulder.
"If it ain't broke, fix it until it is!

This message is brought to you thanks to SenselessComments.com

My PB stuff for Linux: "https://u.pcloud.link/publink/show?code ... z3MR0T3jyV
PrincieD
Addict
Addict
Posts: 858
Joined: Wed Aug 10, 2005 2:08 pm
Location: Yorkshire, England
Contact:

Re: ProGUI V3 Alpha 1.0 Ready for testing!

Post by PrincieD »

moulder61 wrote: Thu Jul 04, 2024 4:02 pm
Oh haha, it's a UI Framework
Nope, still no clue. ;)
Whatever, it looks pretty impressive. :)

Moulder.
Thanks Moulder :) It allows you to create modern user interfaces for your PureBasic apps using layouts (Basic, Flex and Grid) with all rendering done on the GPU (DirectX 11, Direct2D and DirectWrite) and allows you to easily create your own Widgets with the GFX API (think Canvas gadget on steroids) whilst seamlessly being able to incorporate legacy Win32 controls / 3rd party controls (the legacy GDI rendering is redirected directly onto Direct2D bitmaps - on the GPU)
ProGUI - Professional Graphical User Interface Library - http://www.progui.co.uk
User avatar
moulder61
Enthusiast
Enthusiast
Posts: 188
Joined: Sun Sep 19, 2021 6:16 pm
Location: U.K.

Re: ProGUI V3 Alpha 1.0 Ready for testing!

Post by moulder61 »

It allows you to create modern user interfaces for your PureBasic apps using layouts (Basic, Flex and Grid) with all rendering done on the GPU (DirectX 11, Direct2D and DirectWrite) and allows you to easily create your own Widgets with the GFX API (think Canvas gadget on steroids) whilst seamlessly being able to incorporate legacy Win32 controls / 3rd party controls (the legacy GDI rendering is redirected directly onto Direct2D bitmaps - on the GPU)
Now my head is hurting and my eyes are bleeding! :)

Moulder.
"If it ain't broke, fix it until it is!

This message is brought to you thanks to SenselessComments.com

My PB stuff for Linux: "https://u.pcloud.link/publink/show?code ... z3MR0T3jyV
PrincieD
Addict
Addict
Posts: 858
Joined: Wed Aug 10, 2005 2:08 pm
Location: Yorkshire, England
Contact:

Re: ProGUI V3 Alpha 1.0 Ready for testing!

Post by PrincieD »

Hi guys, could you test out the 'borderless' window mode please and try rezising - "window = CreateWindow(0, 0, 800, 600, "Test", #PG_Window_BorderLess | #PG_Window_Sizeable | #PG_Window_BackgroundDrag, 0)" the 'test_animation2.pb' is a good one. There should be no glitches or rendering artifacts and should be be pixel perfect so try resizing from the top left of the window
across multiple monitors (bare in mind this is a DirectX 11 Window)
ProGUI - Professional Graphical User Interface Library - http://www.progui.co.uk
Post Reply