Einhugur Plugin Releases (2022)

(New thread for 2022 releases)

1 Like

PictureEffectsRaw 5.6 and WindowSplitter 11.2 are out

The PictureEffectsRaw plugin for Xojo enables you to do advanced image processing in Xojo using up to 8 CPU cores at once. And some of the effects can also do it in asynchronous mode.

The PictureEffectsRaw has the following effects: Brightness, Contrast, Color filtering, Levels, Tint, Temperature, Grayscale, Gamma, Hue - Saturation, Invert, Sepia, Exposure, Gain / Bias, Contrast Stretch, Desaturate, Equalize, Replace color, Blur, Gaussian Blur, Crystalize, Sharpen, Smooth, High quality Bilinear Scaling, Flip Horizontal, Flip Vertical, Stretch Horizontal, Stretch Vertical, High quality rotation, Trim, Shape distort, Polar Coordinates, Trim, Barrel distort, Interlace, Emboss, Edge Detect, Oil Paint, Rank Order, Gradient, Clouds, Wood, Marble, Textile, Labyrinth , Rainbow Effect, Vignette, Channel mixer, Blend, Map, Custom 3x3 matrix, Page Curl and ImageComparer.

The new Vignette effect:

Twirl effect*

Shape distort effect*

New in PictureEffectsRaw 5.6:

  • Added Combined Effect of Brightness and Contrast since result of such is not same as running one after the other and also offers better performance.

New in WindowSplitter 11.2:

  • Fixed offset of Windows ghost movement window which was off by one Pixel on Windows systems, both Legacy API and Xojo 2021r3 Desktop API.
  • Fixed problem with getting position relative to parent window when splitter was on deep nested Container control on Windows systems when using Xojo 2021r3 Desktop API.
  • Splitter logic will no longer run on Windows systems if the movement was zero.

More info at www.einhugur.com

4 Likes

PictureButton 6.2.2 is out

The PictureButton plugin control for Xojo is to create more platform consistent Picture-buttons but yet having it work well cross platform.

image
PictureButton Windows 10 Dark mode - State normal, State focus, State hoover.
PictureButton Windows 11 Dark mode - State normal, State focus, State hoover.

New in version 6.2.2:

  • Fixed problem with visual representation of On mode in Windows Dark mode when button is sticky.

More info at www.einhugur.com

3 Likes

Wren Plugin 1.0 for Xojo is out.

A plugin to make your Xojo applications scriptable by Wren scripts.

  • Xojo built application can run the Wren module functions
  • Wren scripts can call Xojo functions that you register to be visible to Wren scripts.
  • New classes can be registered from Xojo that Wren scripts will see.
  • Handles many kind of return types and parameters, return values and key-ed multiple return values.
  • Xojo built application can read variables from Wren modules.
  • Its easy to make functions to allow Wren script to manipulate your Xojo objects.
  • Wren console output can be re-directed to your own class which can write it out in any way you want.
  • Wren error output feed can be re-directed to your own class which can write it out in any way you want.

Wren is a small, fast, class-based concurrent scripting language. Think Smalltalk in a Lua-sized package with a dash of Erlang and wrapped up in a familiar, modern syntax.

Wren runs in Fibers instead of using JIT like many such engines, which enables it to even run on iOS.

Special thanks to Garry Pettet for inspiration, testing and other support.

More info at www.einhugur.com

7 Likes

I have to give a round of applause to @Björn_Eiríksson for his skills in bringing Wren to his plugin. I enquired about it only recently as I was looking for a fast class-based dynamic scripting language for an app I’m working on and Björn was super helpful in bringing this to fruition.

Here are some reasons you might choose to use Wren as a scripting language for your Xojo app rather than XojoScript:

  • It has a large number of libraries available to it (unlike XojoScript)
  • It has native support for dictionaries (map in Wren)
  • Large standard library (e.g: maths functions)
  • Easy string manipulation with interpolation, etc
  • High performance
  • Really easy to integrate into a Xojo app. I would even go as far to say as it‚Äôs easier to integrate than XojoScript
  • Runs on iOS (unlike XojoScript)

It’s worth pointing out that Wren’s performance is really good. The VM is written in C and Björn has done a great job at bridging it to Xojo. In some of my testing, Wren even outperforms XojoScript despite being a dynamic interpreted language.

For example, here is a heavy recursion Fibonacci test in both Wren and XojoScript:

// Wren.
class Fib {
  static get(n) {
    if (n < 2) return n
    return get(n - 1) + get(n - 2)
  }
}

var start = System.clock
for (i in 1..5) {
  System.print(Fib.get(28))
}
System.print("elapsed: %(System.clock - start)")
// XojoScript.
Class Fib
    Public Shared Function Compute(n As Integer) As integer
    If (n < 2) Then Return n
    Return Compute(n - 1) + Compute(n - 2)
    End Function
End Class

Var Start As Double = System.Microseconds
For i As Integer = 1 To 5
    Print(Fib.Compute(28).ToString + &u0A)
Next i

Var elapsed As Double = (System.Microseconds - start) / 1000000
Print("elapsed: " + Str(elapsed))

Running on my M1 MacBook Pro Wren completes in 189 milliseconds whereas XojoScript takes 1600!

5 Likes

I’m wondering if this is a way to to get functionality that xojo does not have without coding it all yourself, even if your app does not need scripting.

What types of libraries are available?

What kinds of things does the standard library support that xojo is weak in?

Thanks
-Karen

Wren has some traction in the game programming world so there are pathfinding algorithms, JSON parsing libraries, string manipulation libraries, etc. In fact there is a whole game engine written in Wren (called Dome). The built in Num class also has lots of maths functions like truncate, clamp, cube root, etc.

When you embed XojoScript in an app you end up having to rewrite a lot of the core Xojo framework classes with the Context and this is easier to do with Wren (because of how Björn has integrated it’s API). Wren was designed from the ground up to be easy to embed.

2 Likes

Einhugur JSON Plugin III 1.1 is out.

(Not to be confused with our other JSON plugins, this is not new version of the other ones but yet another engine under the hood)

JSON Plugin III is a Xojo plugin that adds parsing of JSON messages as well as ability to create them as well as other advanced features such as JSON schema validation, JSON Pointer queries and more.

Einhugur has 3 different JSON Plugins, all of which are maintained and supported.

New in version 1.1:

  • Did some fixes on the Date methods on the JSONDocument class.
  • Added StringValueByIndex getter setter pair to the JSONArray class.
  • Added ISO8601ToDateTime shared method to the JSONDocument class.

More info at www.einhugur.com

3 Likes

we should all give a round of applause for Bjorn consistent work during all those years ! :slight_smile:
thank you

9 Likes

@Björn_Eiríksson :clap: :index_pointing_at_the_viewer: :raised_hands: :clap: :clap: :clap:

4 Likes

CalendarControl 9.1 plugin for Xojo is out

New in version 9.1:

  • Added UseSelectionColor property.
  • Added SelectionColor property.
  • Added SelectionDMColor property.

image

image

More info at www.einhugur.com

3 Likes

TypeLib 11.2 plugin for Xojo is out

Please note:
This update is incredibly important as plugins that come after this using the new feature in the thread task unit will just crash if you have older TypeLib. And there is a plugin coming from us later this week that needs this enhancement in the Thread task unit.

The TypeLib also defines RawBitmap and RawBitmapMask classes that can be used to interact with 3rd party plugins and libraries as well as to avoid inaccuracy of pre-multiplied alpha channels in image processing. Basically what has been done is there is step between the first red box on the picture bellow and the green box which enables us to make better use of the Task unit and for more things than we could before.

The plugin also defines the EinhugurRuntime.Task framework for native threading and async processing of big tasks.

New in version 11.2:

  • Added Xojo thread space initialiser hook in the EinhugurRuntime.Task.
  • EinhugurRuntime.Task can now throw Xojo exceptions.

More info at www.einhugur.com

2 Likes

Hi Björn. Can you explain a little more about your new task class? How would I use this in a Xojo app?

Hello Garry

It is not new class, it just got improvement so we can use it on more things.

Its been used in our plugins like the Color Management Plugin and Graphics formats plugin to accomplish native threading and super easy usage. (PictureEffectsRaw our image processing effects has its own threading unit since it predates this all and is a bit different since that one uses multiple cores at once).

So to give you example of what it does then the following example code is from example project for plugin class that comes later in the week:

var fileExtension as new FileType
fileExtension.Name = "Any"
fileExtension.Extensions = "*"

var source as FolderItem = FolderItem.ShowOpenFileDialog(fileExtension)

if source <> nil then
  var dest as FolderItem = source.Parent.Child(source.Name + "." + EinhugurZstandard.FileExtension)
  
  if dest <> nil then
    try
      var cstd as new EinhugurZstandard(source, dest)
      cstd.SetProgressHandler(AddressOf OnProgress)
      
      var task as EinhugurRuntime.Task = cstd.CompressTask(EinhugurZstandard.CompressionLevelDefault)
      
      task.WaitFor()
      
      MessageBox "Done"
      
    catch e as IOException
      MessageBox("IOException: " + e.Message)
    catch e as InvalidArgumentException
      MessageBox("InvalidArgumentException: " + e.Message)
    end try
  end if
end if

Now this class can also be set up in Xojo thread, and it yields and all that. Compressing 1 TB file in Xojo thread that is yielding gives you semi sluggish user interface, and you need to do fairly large amount of code to do same thing as above. While the code above gives you user interface that is snappy and good.

So this is like said above not new. We just have not used it in very many plugins so far, its very hard to use it, but the improvement today makes it a bit easier and this class shown in the example above will be the first to use the improvement.

That’s very cool. Thanks for the explanation.

e-CryptIt Engine plugin for Xojo, version 14.5 is out

e-CryptIt Engine plugin for Xojo is to do Encryption, Encoding, Compression, Hashing, Key-ed hashing and other things.

Important for this version Make sure to have TypeLib 11.2.

New in version 14.5:

  • Added EinhugurZStandard class for ZStandard high compression rate compression.
  • Added Example project showing ZStandard compression using Xojo threads.
  • Added Example project showing ZStandard compression using Native threads.

Zstandard is a fast compression algorithm, providing high than normal compression ratios.

The plugin offers a very wide range of speed / compression trade-off, and is backed by an extremely fast decoder.

More info at www.einhugur.com

1 Like
Forum for Xojo Programming Language and IDE. Copyright © 2021 Xojo, Inc.