0
I Use This!
Very Low Activity

News

Analyzed about 7 hours ago. based on code collected about 7 hours ago.
Posted 9 months ago
If somebody happens to see this, it is only a test to verify content and layout of the automatic mailing list updater. (Image from pexels.com, CC0 Public Domain) Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor ... [More] incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. [Less]
Posted 10 months ago
To keep you better updated on the progress of WonderGUI, I have now created a mailing list. Please join to receive all blog posts directly in your inbox. At the same time I have decided to discontinue the Twitter feed, so if you have followed WonderGUI on Twitter, please subscribe to the mailing list instead.
Posted 10 months ago
Sometimes life takes sudden and unexpected turns when everything changes at the same time. The last six months have included some of the largest changes in my life, which have both caused me grief and excitement. The impact on WonderGUI has initially ... [More] been delays, but will soon be followed by a new era of productivity. (Picture by me, CC0 1.0) At the end of last year my wife and I decided to divorce. Following the decision I’ve invested a lot of time in finding, buying, renovating and moving to new apartments for both of us. This turned out to be way more time consuming and exhausting than I first had thought, leaving hardly any time to work on WonderGUI except for contract specific work. At the same time I realized that I now could cut a lot of costs and wouldn’t need the same level of income anymore. After some careful deliberation I decided to take the plunge and resign my current work position to focus on WonderGUI development. Thanks to a generous offer from Softube, I now have enough paid contract work to secure my income for the next 12 months, while still leaving plenty of time to work on the core functionality. So, after having spent a lot of time focusing on apartments, fixing all the loose ends relating to the divorce and earlier work assignments and generally just land into a new life situation, I’m now ready to set full sails and bring WonderGUI into a new productive era! That is, after a few weeks of vacation to load my batteries and just enjoy the wonderful Swedish summer of course… ;) [Less]
Posted over 1 year ago
The last few months have been very productive for the WonderGUI project. Thanks to a customer awarding me a two month development contract, there has been great progress in several areas. (Picture by Andrew Stawarz, CC-BY-ND 2.0) The only ... [More] downside to this is that I have worked on the improvements that were part of the contract instead of the improvements that I had planned. These are great additions to WonderGUI and solves the customers needs, but they are also incomplete and needs more work before they can be included in the main branch as generic, API complete solutions. So, as Q4 2017 is ending, I’ve decided to skip a release and instead focus on a great release at the end of Q1 2018. That should include all the improvements from the contract work and some of my originally planned ones. So, although the release schedule has suffered a hiccup, the pace of development has been higher than anticipated and the project is definitely on the right track. 2018 should become a great year for WonderGUI! [Less]
Posted over 1 year ago
The last few months have been very productive for the WonderGUI project. Thanks to a customer awarding me a two month development contract, there has been great progress in several areas. (Picture by Andrew Stawarz, CC-BY-ND 2.0) The only ... [More] downside to this is that I have worked on the improvements that were part of the contract instead of the improvements that I had planned. These are great additions to WonderGUI and solves the customers needs, but they are also incomplete and needs more work before they can be included in the main branch as generic, API complete solutions. So, as Q4 2017 is ending, I’ve decided to skip a release and instead focus on a great release at the end of Q1 2018. That should include all the improvements from the contract work and some of my originally planned ones. So, although the release schedule has suffered a hiccup, the pace of development has been higher than anticipated and the project is definitely on the right track. 2018 should become a great year for WonderGUI! [Less]
Posted over 1 year ago
WonderGUI 3.0-alpha4 has now been released. This release packs many important improvements and for once I have managed to keep my schedule =) (Photo by Bart Everson, CC-BY 2.0) So, let me tell you a bit about the most important changes: ... [More] Reimplemented smart pointers WonderGUI now has a new, improved implementation of smart pointers which is simpler, cleaner and easier to use. The new smart pointers are also implicitly cast to raw pointers when needed and all API:s have been changed to accept raw pointers instead of smart pointer references, which I believe makes the API cleaner and more flexible. You might question my continued use of custom smart pointers in WonderGUI, now that C++ has had standard smart pointers since 2011. The reason is simply that WonderGUI’s object model allows for smart pointer features and optimizations that are simply not possible using the standard implementation. Child iterators Child widgets can now be referenced using iterators as well as indices. Among other things, this allows for modern looping constructs such as: for( Widget& child : pParent->children ){ // Do something with the child...} Improved child interfaces The various intefaces for manipulating children to a container widget have been extended with many useful methods that makes it easier to add, remove and rearrange children. New widgets Two new widgets have been added: LambdaPanel and SplitPanel. LambdaPanel is similar to FlexPanel, but uses a lambda functions for child placement instead of a combination of coordinates, offsets and origos. This allows for responsive, flexible layouts where size and placement of children depends on the size of the parent. SplitPanel is a simple panel with two children and a (horizontal or vertical) split-bar that can be dragged by the user to change the relative size of the children. Reversed ordering of children After some careful deliberation I have decided to reverse the Z-ordering of children. This means that the first child of a parent is the one on top and the last child is placed at the bottom, covered by any overlapping children. There is no clear right or wrong here and I have my doubts about this change. No matter what you choose you will end up with situations that feels unintuitive and confusing. The question is just what is least confusing in the long run. For example: Moving a child to the top should logically bring it to the beginning of the array, not the end. But on the other hand, adding a child should put it on top of the earlier children, while being pushed to the end of the array. So what should it be? My decision is to keep the logical child order in sync with the Z-ordering on screen, although that means that in order to add a child ontop of previous children you will have to insert it before the other children. Time will tell if this was a good decision, if not, it might be reversed later. Lambdas everywhere Lambdas are now more extensively used throughout WonderGUI and can be used to react on messages and finalize objects among other things. Automatic word wrap Finally I have added support for automatic word wrapping to StdTextMapper. This means that text now will automatically break on word boundaries when lines don’t fit horizontally, as long as the WordWrap-flag is set in the TextMapper. This is an obvious feature in any decent GUI-system, but something I removed during a large refactoring and have not reimplemented until now. Freetype font support as separate library The support for freetype font rendering, used to draw normal vector fonts, has been broken out into a separate library. This to avoid the need to recompile WonderGUI with different settings depending on if vector fonts should be supported or not (they add dependencies and overhead and might not be suitable for very small devices or needed in games with hand-drawn bitmap fonts). What to expect next… From now on I will attempt to keep a more regular release schedule of a new version each 3-4 months, so expect next version sometime before Christmas. What that version will include has not been decided yet, but scaling, improved error handling and more widgets are currently at the top of my agenda. So, until then - Enjoy and keep on hacking! [Less]
Posted over 1 year ago
WonderGUI 3.0-alpha4 has now been released. This release packs many important improvements and for once I have managed to keep my schedule =) (Photo by Bart Everson, CC-BY 2.0) So, let me tell you a bit about the most important changes: ... [More] Reimplemented smart pointers WonderGUI now has a new, improved implementation of smart pointers which is simpler, cleaner and easier to use. The new smart pointers are also implicitly cast to raw pointers when needed and all API:s have been changed to accept raw pointers instead of smart pointer references, which I believe makes the API cleaner and more flexible. You might question my continued use of custom smart pointers in WonderGUI, now that C++ has had standard smart pointers since 2011. The reason is simply that WonderGUI’s object model allows for smart pointer features and optimizations that are simply not possible using the standard implementation. Child iterators Child widgets can now be referenced using iterators as well as indices. Among other things, this allows for modern looping constructs such as: for( Widget& child : pParent->children ) { // Do something with the child... } Improved child interfaces The various intefaces for manipulating children to a container widget have been extended with many useful methods that makes it easier to add, remove and rearrange children. New widgets Two new widgets have been added: LambdaPanel and SplitPanel. LambdaPanel is similar to FlexPanel, but uses a lambda functions for child placement instead of a combination of coordinates, offsets and origos. This allows for responsive, flexible layouts where size and placement of children depends on the size of the parent. SplitPanel is a simple panel with two children and a (horizontal or vertical) split-bar that can be dragged by the user to change the relative size of the children. Reversed ordering of children After some careful deliberation I have decided to reverse the Z-ordering of children. This means that the first child of a parent is the one on top and the last child is placed at the bottom, covered by any overlapping children. There is no clear right or wrong here and I have my doubts about this change. No matter what you choose you will end up with situations that feels unintuitive and confusing. The question is just what is least confusing in the long run. For example: Moving a child to the top should logically bring it to the beginning of the array, not the end. But on the other hand, adding a child should put it on top of the earlier children, while being pushed to the end of the array. So what should it be? My decision is to keep the logical child order in sync with the Z-ordering on screen, although that means that in order to add a child ontop of previous children you will have to insert it before the other children. Time will tell if this was a good decision, if not, it might be reversed later. Lambdas everywhere Lambdas are now more extensively used throughout WonderGUI and can be used to react on messages and finalize objects among other things. Automatic word wrap Finally I have added support for automatic word wrapping to StdTextMapper. This means that text now will automatically break on word boundaries when lines don’t fit horizontally, as long as the WordWrap-flag is set in the TextMapper. This is an obvious feature in any decent GUI-system, but something I removed during a large refactoring and have not reimplemented until now. Freetype font support as separate library The support for freetype font rendering, used to draw normal vector fonts, has been broken out into a separate library. This to avoid the need to recompile WonderGUI with different settings depending on if vector fonts should be supported or not (they add dependencies and overhead and might not be suitable for very small devices or needed in games with hand-drawn bitmap fonts). What to expect next… From now on I will attempt to keep a more regular release schedule of a new version each 3-4 months, so expect next version sometime before Christmas. What that version will include has not been decided yet, but scaling, improved error handling and more widgets are currently at the top of my agenda. So, until then - Enjoy and keep on hacking! [Less]
Posted about 2 years ago
3.0-alpha3 has been released with some major API changes and an overhaul of the documentation. Read on for the details. (Image from torange.biz, CC-BY 4.0) This is the fourth alpha release and things are starting to pick up speed. Between the ... [More] previous two releases no less than two years had passed, but now only 4 months and 1 week. This is in line with my expectations and a sign of the increasing maturity of WonderGUI’s code base. I’m simply able to release updates more quickly now since each subsequent release is “rocking the boat” less than the previous, with more gradual improvements and less disruptive change. That’s not to say that there won’t be so many more exciting improvements (there will be), they just won’t require so much refactoring as earlier improvements. This also means that we are starting to reach the end of the alpha phase and enter the beta phase. Expect a new release every 3-4 months and the first beta around the end of the year. So, let me present the most noteworthy improvements in alpha 3: Hooks replaced by Components For the last 7 years WonderGUI has been using a concept of “Hooks” to connect a child widget to its parent. The Hook was owned by the parent and provided a parent-specific API for handling geometry and presentation of the child. E.g. a PackPanel had PackHooks with methods specific to a PackPanel child, while a FlexPanel provided FlexHooks with a different set of methods. To move, resize or hide a child of a FlexPanel you requested the hook for the child and then used the methods provided. This way of handling children seemed great in theory and worked fine, but had several minor drawbacks that weren’t obvious from start. I therefore decided to scrap Hooks and replace them with new embedded components more similar to STL containers. This makes the whole WonderGUI API more consistent while also being more familiar to everyone using STL. It can also more easily be extended to support iterators and the looping constructs of C++11, which is on my roadmap. In theory, there should also be some performance benefits. Documentation overhaul With no more disruptive API changes on the horizon it made sense to give more attention to the documentation. Although I haven’t really added any documentation to alpha 3, the structure has been re-thought and received a big overhaul. Classes only meant for internal use are now excluded from the documentation and most classes have methods grouped into logical sections. This should make it easier to get a quick overview of a class and find the methods you need. Bugfixes, code cleanup etc As usual, several bugs have been fixed, mostly in the classes PackList, ScrollPanel and various GfxDevices. Pragma once is now used instead of my old system of header guards to improve compile times in a nicer way. What to expect next… I have just started to work on the next release and the plan is to not introduce anything new, but make a large number of small improvements all over the place. For several years I have focused on large rewrites and pursued these at a rapid pace, which has left many sharp edges that I now need to attend to. Expect alpha 4 to be released this autumn as a refined version of alpha 3. Until the next release: Happy hacking! [Less]
Posted about 2 years ago
2.0-alpha3 has been released with some major API changes and an overhaul of the documentation. Read on for the details. (Image from torange.biz, CC-BY 4.0) This is the fourth alpha release and things are starting to pick up speed. Between the ... [More] previous two releases no less than two years had passed, but now only 4 months and 1 week. This is in line with my expectations and a sign of the increasing maturity of WonderGUI’s code base. I’m simply able to release updates more quickly now since each subsequent release is “rocking the boat” less than the previous, with more gradual improvements and less disruptive change. That’s not to say that there won’t be so many more exciting improvements (there will be), they just won’t require so much refactoring as earlier improvements. This also means that we are starting to reach the end of the alpha phase and enter the beta phase. Expect a new release every 3-4 months and the first beta around the end of the year. So, let me present the most noteworthy improvements in alpha 3: Hooks replaced by Components For the last 7 years WonderGUI has been using a concept of “Hooks” to connect a child widget to its parent. The Hook was owned by the parent and provided a parent-specific API for handling geometry and presentation of the child. E.g. a PackPanel had PackHooks with methods specific to a PackPanel child, while a FlexPanel provided FlexHooks with a different set of methods. To move, resize or hide a child of a FlexPanel you requested the hook for the child and then used the methods provided. This way of handling children seemed great in theory and worked fine, but had several minor drawbacks that weren’t obvious from start. I therefore decided to scrap Hooks and replace them with new embedded components more similar to STL containers. This makes the whole WonderGUI API more consistent while also being more familiar to everyone using STL. It can also more easily be extended to support iterators and the looping constructs of C++11, which is on my roadmap. In theory, there should also be some performance benefits. Documentation overhaul With no more disruptive API changes on the horizon it made sense to give more attention to the documentation. Although I haven’t really added any documentation to alpha 3, the structure has been re-thought and received a big overhaul. Classes only meant for internal use are now excluded from the documentation and most classes have methods grouped into logical sections. This should make it easier to get a quick overview of a class and find the methods you need. Bugfixes, code cleanup etc As usual, several bugs have been fixed, mostly in the classes PackList, ScrollPanel and various GfxDevices. Pragma once is now used instead of my old system of header guards to improve compile times in a nicer way. What to expect next… I have just started to work on the next release and the plan is to not introduce anything new, but make a large number of small improvements all over the place. For several years I have focused on large rewrites and pursued these at a rapid pace, which has left many sharp edges that I now need to attend to. Expect alpha 4 to be released this autumn as a refined version of alpha 3. Until the next release: Happy hacking! [Less]
Posted over 2 years ago
Starting next week I will dedicate 20% of my work week to WonderGUI development. (Image by bphotoart from pixabay.com, CC0 Public Domain) My employer, Cybercom Group has graciously allowed me to downgrade my fulltime job to 80%, giving me one day ... [More] a week to fully focus on WonderGUI. To cover up for lost income, Softube is once again stepping up to the plate and hiring me as a consultant one day a week. Thank you for your ongoing commitment and support! With these 20% I’m almost doubling the time I already spend on WonderGUI during my evenings and weekends, so it will be a significant boost to development! [Less]