I Use This!
Activity Not Available

News

Analyzed 5 months ago. based on code collected 10 months ago.
Posted over 5 years ago by KDAB on Qt
KDAB is the main sponsor at Qt World Summit.  In Boston, we’ll be co-hosting a training day on October 29th,  offering both Introductory and Advanced one day training classes at a knock-down price. Find out more here. On October 30th, you can listen ... [More] to two talks from KDAB experts: Creating compelling blended 2D/3D applications – a solution for artists and developers, with Mike Krus, and KDAB’s Opensource Tools for Qt with David Faure. In addition to all this awesomeness, KDAB will be exhibiting on both days, the 29th and 30th of October. Come to our booth and see: KDAB GammaRay A high-level introspection tool for Qt applications, KDAB’s GammaRay allows you to examine and manipulate application internals at runtime, either locally or on an embedded target. Augmenting conventional debuggers, GammaRay leverages QObject to visualize application behavior at a high level, especially useful where complex Qt frameworks such as model/view, state machines, QGraphicsView or QTextDocument are involved. GammaRay is integral to the Qt Automotive Suite all-in-one package, where it also offers QtCreator integration. Find out more about GammaRay… Clazy Static Code Analyzer An opensource project spawned by KDAB’s R&D efforts for better C++ tooling, Clazy Static Code Analyzer is an LLVM/Clang-based static analyzer for Qt 5 that extends your compiler with approximately 50 Qt-oriented warnings. Clazy Static Code Analyzer highlights Qt-related bugs, performance issues or unneeded memory allocations and performs a code rewrite for common tasks like porting to the Qt 5 connect syntax. Clazy Static Code Analyzer integrates seamlessly with most existing build systems, and is bundled with the latest versions of QtCreator if you don’t want to compile it your self. Find out more… Qi – Cellular Tissue Imaging in Qt 3D Demonstrating the power of Qt 3D, this shows stunning 3D visualizations of microscopic tissue samples that help researchers better understand cell pathology in the fight against cancer. The 3D images are created out of 2D images from electron microscopes in cutting edge clinical diagnostics data sets. The process enables real-time conversion to 3D from 30 image channels using Qt 3D. Find out more… Shaper Origin Shaper Origin is the world’s first handheld CNC router. Under the hood, it runs a Freescale iMX6 system on chip with Yocto Linux and Qt. QML provides the user interface, and renders on top of an OpenGL underlay renderer which renders the current tool position and user’s design. Find out more… nanoQuill Interactive Wall KDAB, along with The Qt Company and Quantitative Image Systems, will also present the nanoQuill interactive display wall where participants can literally help in the cure for cancer (#color4cancer) by coloring in images of cells. Once photographed, completed images can be sent to the nanoQuill website. Find out more about nanoQuill….   Sign up for Qt World Summit… The post KDAB demos at Qt World Summit, Boston appeared first on KDAB. [Less]
Posted over 5 years ago by KDAB on Qt
KDAB is the main sponsor at Qt World Summit Boston and in addition to the Introductory and Advanced one day training courses on Day 1, two talks on Day 2: Creating compelling blended 2D/3D applications – a solution for artists and developers, and ... [More] KDAB’s Opensource Tools for Qt. KDAB will be exhibiting on both days, the 29th and 30th of October. Come to our booth and see: KDAB GammaRay A high-level introspection tool for Qt applications, KDAB’s GammaRay allows you to examine and manipulate application internals at runtime, either locally or on an embedded target. Augmenting conventional debuggers, GammaRay leverages QObject to visualize application behavior at a high level, especially useful where complex Qt frameworks such as model/view, state machines, QGraphicsView or QTextDocument are involved. GammaRay is integral to the Qt Automotive Suite all-in-one package, where it also offers QtCreator integration. Find out more about GammaRay… Clazy Static Code Analyzer An opensource project spawned by KDAB’s R&D efforts for better C++ tooling, Clazy Static Code Analyzer is an LLVM/Clang-based static analyzer for Qt 5 that extends your compiler with approximately 50 Qt-oriented warnings. Clazy Static Code Analyzer highlights Qt-related bugs, performance issues or unneeded memory allocations and performs a code rewrite for common tasks like porting to the Qt 5 connect syntax. Clazy Static Code Analyzer integrates seamlessly with most existing build systems, and is bundled with the latest versions of QtCreator if you don’t want to compile it your self. Find out more… Qi – Cellular Tissue Imaging in Qt 3D Demonstrating the power of Qt 3D, this shows stunning 3D visualizations of microscopic tissue samples that help researchers better understand cell pathology in the fight against cancer. The 3D images are created out of 2D images from electron microscopes in cutting edge clinical diagnostics data sets. The process enables real-time conversion to 3D from 30 image channels using Qt 3D. Find out more… Shaper Origin Shaper Origin is the world’s first handheld CNC router. Under the hood, it runs a Freescale iMX6 system on chip with Yocto Linux and Qt. QML provides the user interface, and renders on top of an OpenGL underlay renderer which renders the current tool position and user’s design. Find out more… nanoQuill Interactive Wall KDAB, along with The Qt Company and Quantitative Image Systems, will also present the nanoQuill interactive display wall where participants can literally help in the cure for cancer (#color4cancer) by coloring in images of cells. Once photographed, completed images can be sent to the nanoQuill website. Find out more about nanoQuill….   Sign up for Qt World Summit… The post KDAB demos at Qt World Summit, Boston appeared first on KDAB. [Less]
Posted over 5 years ago by Tomaz Canabrava (tomaz)
  The idea is not to hack in complex applications for now, but to integrate wannabe KDE hackers into actually being KDE hackers, so I’ll focus on small tasks at first untill we have a solid base here the same way I did when I joined KDE and had those ... [More] sessions with Sandro Andrade at the Universities Ruy Barbosa. Also, my german language skills are really weak, I’m also trying to learn some german here and I belive this is a good way to meet people. Some questions for the Munchen People that are perhaps reading this blog: Any University Professor that want’s to use real software as study cases? I’m willing to help a student group on the getting started process to strength the free software community in munich. Where can I host this montly for free? I know I have my house for that and probably this is where I would host for the first time but I live with more people and I don’t wanna annoy them too much. Anyone willing to setup a Meetup group for that? is there any opensource platform that does the same as a meetup? I live near Laim so it’s near everything in the city of munich. And I plan to focus on kde-utils, for the first weekend (06.oct to 07.oct) We can also organize a Telegram / Matrix / Whatever group. If you are interested send me an e-mail with your contact info to tcanabrava at kde.org and force me to speak in german.   [Less]
Posted over 5 years ago by Krita News
Today we’re releasing the latest version of Krita! In the middle of our 2018 fundraiser campaign, we’ve found the time to prepare Krita 4.1.3. There are about a hundred fixes, so it’s a pretty important release and we urge everyone to update! Please ... [More] join the 2018 fundraiser as well, so we can continue to fix bugs! Now you might be wondering where Krita 4.1.2 went to… The answer is that we had 4.1.2 prepared, but the Windows builds were broken because of a change in the build infrastructure. While we were fixing that, Dmitry made a couple of bug fixes we really wanted to release immediately, like an issue where multiline centered text would be squashed into a single line when you’d edit the text. So we went and created a new version, 4.1.3! Krita 4.1.3 is a bug fix release, so that’s the most important thing, but there are also some new things as well. The first of these is the new welcome screen, by Scott Petrovic. You get some handy links, a list of recently used files, a link to create or open a fdile and a hint that you can also drag and drop images in the empty window to open them. Dmitry Kazakov has worked like crazy fixing bugs and improving Krita in the past couple of weeks. One of the things he did was improve Instant Preview mode. Originally funded by our 2015 Kickstarter, Instant Preview works by computing a scaled-down version of the image and displaying that. But with some brushes, it would cause a little delay at the end of a stroke, or some flickering on the canvas: BUG:361448. That’s fixed now, and painting really feels smoother! And for added smoothness, most of Ivan Yossi’s Google Summer of Code work is also included in this release. We’ve also done work on improving working with selections. Krita’s selections can be defined as vectors or as a pixel mask. If you’re working on a vector selection, using the figure tools, like rectangle or ellipse now add a vector to the selection, instead of rasterizing the vector selection. The move tool has been improved so it’s possible to undo the steps you’ve set with the move tool, instead of undo immediately placing back the layer where it originally came from. See BUG:392014. The bezier curve tools have been improved: there is an auto-smoothing option. If you select auto-smoothing, the created curve will be not a polygon, but a smooth curve with the type of all the points set to “smooth”. BUG:351787 The final new feature is round corners for the rectangle tool. Whether you’re working on a pixel or a vector layer, you have an ability to set round corners for the resulting shape. BUG:335568. You could, of course, already round vector rectangles by editing the shape, but this is easier. The Comics Project manager, a Python plugin created by Wolthera van Hövell tot Westerflier has seen a ton of improvements, especially when it comes to generating standard-compliant epub and acbf files. On a related note, check out Peruse, the KDE Comic Book Reader. It’s a long list of improvements: Add improved navigation to generated epubs. This adds… Region navigation for panels and balloons, as per epub spec. Navigation that uses the “acbf_title” keyword to create a TOC in both nav.xhtml and ncx A Pagelist in both nav.xhtml and ncx. Ensure generated EPUBs pass EPUB check validation. This invoved ensuring that the mimetype gets added first to the zip, as well as as some fixes with the author metadata and the NCX pagelist. Fix language nonsense. Fix several issues with the EPUB metadata export. Add MARC-relators for use with the ‘refines’. Add UUID sharing between acbf and epub. Add a modiied and proper date stuff. Implement “epub_spread”, the primary color ahl meta and more. This also… Makes the balloon localisation more robust. Names all balloons text-areas as that is a bit more accurate Set a sequence on author Adds a ton of documentation everywhere. Make the generated EPUB 3 files pre-paginated. This’ll allow comics to be rendered as part of a spread which should have a nice result. Move Epub to use QDomDocument for generation, split out ncx/opf. This is necessary so we have nicer looking xml files, as well. as having a bit more room to do proper generation for epub 2/3/3+ Update ComicBookInfo and ComicRack generators. And here’s the full list of fixed bugs: Animation Add a workaround for loading broken files with negative frame ids. BUG:395378 Delete existing frame files only within exported range BUG:377354 Fix a problem of Insert Hold Frames action. We should also “offset” empty cell to make sure the expanding works correctly. BUG:396848 Fix an assert when trying to export a PNG image sequence BUG:398608 Fix updates when switching frame on a layer with scalar channel Use user-selected color label for the auto-created animation frames BUG:394072 saving of the multiple frames insertion/removal options to the config Improvements to support for various file formats Fix an assert if an imported SVG file links to non-existent color profile BUG:398576 Fix backward compatibility of adjustment curves. Older versions supported fewer adjustable channels, so we can no longer assume the count in configuration data to matches exactly. BUG:396625 Fix saving layers with layer styles BUG:396224 Let Krita save all the kinds of layers into PSD (in rasterized way) BUG:399002 PNG Export: convert to rgb, if the image isn’t rgb or gray BUG:398241 Remove fax-related tiff options. In fax mode tiff can store only 1 bit per channel images, which Krita doesn’t support. So just remove these options from the GUI BUG:398548 Filters Add a shortcut for the threshold filter BUG:383818 Fix Burn filter to work in 16-bit color space BUG:387102 Make color difference threshold for color labels higher Restore the shortcut for the invert filters. Painting Remove hardcoded brush size limit for the Quick Brush BUG:376085 Fix rotation direction when the transformed piece is mirrored. BUG:398928 Make Stamp brush preview be scaled correctly CCBUG:399065 Tablets Add a workaround for tablets not reporting tablet events in hover mode BUG:363284 Text Do not reset text style when selecting something in text editor Fix saving line breaks when the text is not left aligned BUG:395769 Reference images tool Fix reference image cache update conditions BUG:397208 build system Fix build with dcraw 0.19 Canvas Disable pixel grid action of opengl is disabled BUG:388903 Patch by Shingo Ohtsuka, thanks! Fix painting of selection decoration over grids BUG:362662 Fixes to Krita’s Core Fix saving to a dropbox or google driver folder on Windows temporary workaround until QTBUG-57299: QSaveFile should be disabled on Windows. Fix to/fromLab16/Rgb16 methods of the Alpha color space Fix undo in the cloned KisDocument BUG:398730 Layers Automatically avoid conflicts between color labels and system colors Fix cursor jumps in the Layer Properties dialog BUG:398958 Fix resetting active tool when moving layers above vector layers BUG:398095 Fix selecting of the layer after undoing Flatten Image BUG:398814 Fix showing two nodes when converting to a Filter Mask 1) When a filter mask we should first remove the source layer, and only after that show the filter selection dialog 2) Also make sure that the operation is rolled back when the user presses Cancel button Fix updates of Clone Layers when the nodes are updated with subtree walker a spurious assert in layer cloning BUG:398788 Metadata handling Fix a memory access problem in KisExifIO Fix memory access problems in KisExifIo Show metadata in the dublin core page of the metadata editor. The editor plugin is still broken, with dates not working, bools not working, but now at least a string one has entered is shown again. CCBUG:396672 Python scripting SegFault in LibKis Node mergeDown BUG:397043 apidox for Node.position() BUG:393035 Add modified() getter to the Document class BUG:397320 Add resetCache() Python API to FileLayer BUG:398740 Fix memory management of the Filter’s InfoObject BUG:392183 Fix setting file path of the file layer through python API BUG:398740 Make sure we wait for the filter to be done Resource handling Fix saving a fixed bundle under the original name Selections Fix “stroke selection” to work with local selections BUG:398007 Fix a crash when moving a vector shape selection when it is an overlay Fix crash when converting a shape selection shape into a shape selection Fix crash when undoing removing of a selection mask Fix rounded rectangular selection to actually work BUG:397806 Fix selection default bounds when loading old type of adjustment layers Stroke Selection: don’t try to add a shape just because a layer doesn’t have a paint device BUG:398015 Other tools Fix color picking from reference images. Desaturation now affects the picked color, and reference images are ignored for picking if hidden. Fix connection points on cage transform BUG:396788 Fix minor UIX issues in the move tool: 1) adds an explicit frame when the move stroke is in progress; 2) Ctrl+Z now cancels the stroke if there is nothing to undo BUG:392014 Fix offset in Move Tool in the end of the drag Fix shift modifier in Curve Selection Tool. The modifier of the point clicked the last should define the selection mode. For selection tools we just disable shift+click “path-close” shortcut of the base path tool. BUG:397932 Move tool crops the bounding area by exact bounds Reduce aliasing in reference images BUG:396257 Papercuts and UI issues Add the default shortcut for the close action: when opening Krita with an image, the close document shortcut was not available. FEATURE: Add a hidden config option to lock all dockers in place Fix KMainWindow saving incorrect widget settings Fix broken buddy: Scale to New Size’s Alt-F points to Alt-T BUG:396948 Fix http link color in KritaBlender.colors: The link are now visible on the startup page of Krita and were dark blue, exact same value as the background making the frame hard to read. Switching them to bright cyan improves the situation. Fix loading the template icons Fix the offset dialog giving inaccurate offsets. BUG:397218 Make color label selector handle mouse release events CCBUG:394072 Remember the last opened settings page in the preferences dialog Remember the last used filter bookmark Remove the shortcut for wraparound mode: It’s still available from the menu and could be put on the toolbar, or people could assign a shortcut, but having it on by default makes life too hard for people who are trying to support our users. Remove the shortcuts from the mdi window’s system menu’s actions. The Close Window action can now have a custom shortcut, and there are no conflicts with hidden actions any more. BUG:398729 BUG:375524 BUG:352205 Set color scheme hint for compositor. This is picked up by KWin and sets the palette on the decoration and window frame, ensuring a unified look. Show a canvas message when entering wraparound mode Show the zoom widget when switching documents BUG:398099 Use KSqueezedTextLabel for the pattern name in the pattern docker and brush editor BUG:398958 sort the colorspace depth combobox Download Windows Note for Windows users: if you encounter crashes, please follow these instructions to use the debug symbols so we can figure out where Krita crashes. 64 bits Windows: krita-x64-4.1.3-setup.exe Portable 64 bits Windows: krita-x64-4.1.3.zip Debug symbols. (Unpack in the Krita installation folder) 32 bits Windows: krita-x86-4.1.3-setup.exe Portable 32 bits Windows: krita-x86-4.1.3.zip Debug symbols. (Unpack in the Krita installation folder) Linux 64 bits Linux: krita-4.1.3-x86_64.appimage 64 bits Linux G’Mic-Qt plugin appimage. (If, for some reason, Firefox thinks it needs to load this as text: to download, right-click on the link.) When it is updated, you can also use the Krita Lime PPA to install Krita 4.1.3 on Ubuntu and derivatives. We are working on an updated snap. OSX OSX disk image: krita-4.1.3.dmg Note: the touch docker, gmic-qt and python plugins are not available on OSX. Source code Source code: krita-4.1.3.tar.gz md5sum For all downloads: md5sum.txt Key The Linux appimage and the source tarball are signed. You can retrieve the public key over https here: 0x58b9596c722ea3bd.asc. The signatures are here (filenames ending in .sig). Support Krita Krita is a free and open source project. Please consider supporting the project with donations or by buying training videos or the artbook! With your support, we can keep the core team working on Krita full-time. [Less]
Posted over 5 years ago by Krita News
Today we’re releasing the latest version of Krita! In the middle of our 2018 fundraiser campaign, we’ve found the time to prepare Krita 4.1.3. There are about a hundred fixes, so it’s a pretty important release and we urge everyone to update! Please ... [More] join the 2018 fundraiser as well, so we can continue to fix bugs! Now you might be wondering where Krita 4.1.2 went to… The answer is that we had 4.1.2 prepared, but the Windows builds were broken because of a change in the build infrastructure. While we were fixing that, Dmitry made a couple of bug fixes we really wanted to release immediately, like an issue where multiline centered text would be squashed into a single line when you’d edit the text. So we went and created a new version, 4.1.3! Krita 4.1.3 is a bug fix release, so that’s the most important thing, but there are also some new things as well. The first of these is the new welcome screen, by Scott Petrovic. You get some handy links, a list of recently used files, a link to create or open a file and a hint that you can also drag and drop images in the empty window to open them. Dmitry Kazakov has worked like crazy fixing bugs and improving Krita in the past couple of weeks. One of the things he did was improve Instant Preview mode. Originally funded by our 2015 Kickstarter, Instant Preview works by computing a scaled-down version of the image and displaying that. But with some brushes, it would cause a little delay at the end of a stroke, or some flickering on the canvas: BUG:361448. That’s fixed now, and painting really feels smoother! And for added smoothness, most of Ivan Yossi’s Google Summer of Code work is also included in this release. We’ve also done work on improving working with selections. Krita’s selections can be defined as vectors or as a pixel mask. If you’re working on a vector selection, using the figure tools, like rectangle or ellipse now add a vector to the selection, instead of rasterizing the vector selection. The move tool has been improved so it’s possible to undo the steps you’ve set with the move tool, instead of undo immediately placing back the layer where it originally came from. See BUG:392014. The bezier curve tools have been improved: there is an auto-smoothing option. If you select auto-smoothing, the created curve will be not a polygon, but a smooth curve with the type of all the points set to “smooth”. BUG:351787 The final new feature is round corners for the rectangle tool. Whether you’re working on a pixel or a vector layer, you have an ability to set round corners for the resulting shape. BUG:335568. You could, of course, already round vector rectangles by editing the shape, but this is easier. The Comics Project manager, a Python plugin created by Wolthera van Hövell tot Westerflier has seen a ton of improvements, especially when it comes to generating standard-compliant epub and acbf files. On a related note, check out Peruse, the KDE Comic Book Reader. It’s a long list of improvements: Add improved navigation to generated epubs. This adds… Region navigation for panels and balloons, as per epub spec. Navigation that uses the “acbf_title” keyword to create a TOC in both nav.xhtml and ncx A Pagelist in both nav.xhtml and ncx. Ensure generated EPUBs pass EPUB check validation. This invoved ensuring that the mimetype gets added first to the zip, as well as as some fixes with the author metadata and the NCX pagelist. Fix language nonsense. Fix several issues with the EPUB metadata export. Add MARC-relators for use with the ‘refines’. Add UUID sharing between acbf and epub. Add a modiied and proper date stuff. Implement “epub_spread”, the primary color ahl meta and more. This also… Makes the balloon localisation more robust. Names all balloons text-areas as that is a bit more accurate Set a sequence on author Adds a ton of documentation everywhere. Make the generated EPUB 3 files pre-paginated. This’ll allow comics to be rendered as part of a spread which should have a nice result. Move Epub to use QDomDocument for generation, split out ncx/opf. This is necessary so we have nicer looking xml files, as well. as having a bit more room to do proper generation for epub 2/3/3+ Update ComicBookInfo and ComicRack generators. And here’s the full list of fixed bugs: Animation Add a workaround for loading broken files with negative frame ids. BUG:395378 Delete existing frame files only within exported range BUG:377354 Fix a problem of Insert Hold Frames action. We should also “offset” empty cell to make sure the expanding works correctly. BUG:396848 Fix an assert when trying to export a PNG image sequence BUG:398608 Fix updates when switching frame on a layer with scalar channel Use user-selected color label for the auto-created animation frames BUG:394072 saving of the multiple frames insertion/removal options to the config Improvements to support for various file formats Fix an assert if an imported SVG file links to non-existent color profile BUG:398576 Fix backward compatibility of adjustment curves. Older versions supported fewer adjustable channels, so we can no longer assume the count in configuration data to matches exactly. BUG:396625 Fix saving layers with layer styles BUG:396224 Let Krita save all the kinds of layers into PSD (in rasterized way) BUG:399002 PNG Export: convert to rgb, if the image isn’t rgb or gray BUG:398241 Remove fax-related tiff options. In fax mode tiff can store only 1 bit per channel images, which Krita doesn’t support. So just remove these options from the GUI BUG:398548 Filters Add a shortcut for the threshold filter BUG:383818 Fix Burn filter to work in 16-bit color space BUG:387102 Make color difference threshold for color labels higher Restore the shortcut for the invert filters. Painting Remove hardcoded brush size limit for the Quick Brush BUG:376085 Fix rotation direction when the transformed piece is mirrored. BUG:398928 Make Stamp brush preview be scaled correctly CCBUG:399065 Tablets Add a workaround for tablets not reporting tablet events in hover mode BUG:363284 Text Do not reset text style when selecting something in text editor Fix saving line breaks when the text is not left aligned BUG:395769 Reference images tool Fix reference image cache update conditions BUG:397208 build system Fix build with dcraw 0.19 Canvas Disable pixel grid action if opengl is disabled BUG:388903 Patch by Shingo Ohtsuka, thanks! Fix painting of selection decoration over grids BUG:362662 Fixes to Krita’s Core Fix saving to a dropbox or google driver folder on Windows temporary workaround until QTBUG-57299: QSaveFile should be disabled on Windows. Fix to/fromLab16/Rgb16 methods of the Alpha color space Fix undo in the cloned KisDocument BUG:398730 Layers Automatically avoid conflicts between color labels and system colors Fix cursor jumps in the Layer Properties dialog BUG:398958 Fix resetting active tool when moving layers above vector layers BUG:398095 Fix selecting of the layer after undoing Flatten Image BUG:398814 Fix showing two nodes when converting to a Filter Mask 1) When a filter mask we should first remove the source layer, and only after that show the filter selection dialog 2) Also make sure that the operation is rolled back when the user presses Cancel button Fix updates of Clone Layers when the nodes are updated with subtree walker a spurious assert in layer cloning BUG:398788 Metadata handling Fix a memory access problem in KisExifIO Fix memory access problems in KisExifIo Show metadata in the dublin core page of the metadata editor. The editor plugin is still broken, with dates not working, bools not working, but now at least a string one has entered is shown again. CCBUG:396672 Python scripting SegFault in LibKis Node mergeDown BUG:397043 apidox for Node.position() BUG:393035 Add modified() getter to the Document class BUG:397320 Add resetCache() Python API to FileLayer BUG:398740 Fix memory management of the Filter’s InfoObject BUG:392183 Fix setting file path of the file layer through python API BUG:398740 Make sure we wait for the filter to be done Resource handling Fix saving a fixed bundle under the original name Selections Fix “stroke selection” to work with local selections BUG:398007 Fix a crash when moving a vector shape selection when it is an overlay Fix crash when converting a shape selection shape into a shape selection Fix crash when undoing removing of a selection mask Fix rounded rectangular selection to actually work BUG:397806 Fix selection default bounds when loading old type of adjustment layers Stroke Selection: don’t try to add a shape just because a layer doesn’t have a paint device BUG:398015 Other tools Fix color picking from reference images. Desaturation now affects the picked color, and reference images are ignored for picking if hidden. Fix connection points on cage transform BUG:396788 Fix minor UIX issues in the move tool: 1) adds an explicit frame when the move stroke is in progress; 2) Ctrl+Z now cancels the stroke if there is nothing to undo BUG:392014 Fix offset in Move Tool in the end of the drag Fix shift modifier in Curve Selection Tool. The modifier of the point clicked the last should define the selection mode. For selection tools we just disable shift+click “path-close” shortcut of the base path tool. BUG:397932 Move tool crops the bounding area by exact bounds Reduce aliasing in reference images BUG:396257 Papercuts and UI issues Add the default shortcut for the close action: when opening Krita with an image, the close document shortcut was not available. FEATURE: Add a hidden config option to lock all dockers in place Fix KMainWindow saving incorrect widget settings Fix broken buddy: Scale to New Size’s Alt-F points to Alt-T BUG:396948 Fix http link color in KritaBlender.colors: The link are now visible on the startup page of Krita and were dark blue, exact same value as the background making the frame hard to read. Switching them to bright cyan improves the situation. Fix loading the template icons Fix the offset dialog giving inaccurate offsets. BUG:397218 Make color label selector handle mouse release events CCBUG:394072 Remember the last opened settings page in the preferences dialog Remember the last used filter bookmark Remove the shortcut for wraparound mode: It’s still available from the menu and could be put on the toolbar, or people could assign a shortcut, but having it on by default makes life too hard for people who are trying to support our users. Remove the shortcuts from the mdi window’s system menu’s actions. The Close Window action can now have a custom shortcut, and there are no conflicts with hidden actions any more. BUG:398729 BUG:375524 BUG:352205 Set color scheme hint for compositor. This is picked up by KWin and sets the palette on the decoration and window frame, ensuring a unified look. Show a canvas message when entering wraparound mode Show the zoom widget when switching documents BUG:398099 Use KSqueezedTextLabel for the pattern name in the pattern docker and brush editor BUG:398958 sort the colorspace depth combobox Download Windows Note for Windows users: if you encounter crashes, please follow these instructions to use the debug symbols so we can figure out where Krita crashes. 64 bits Windows: krita-x64-4.1.3-setup.exe Portable 64 bits Windows: krita-x64-4.1.3.zip Debug symbols. (Unpack in the Krita installation folder) 32 bits Windows: krita-x86-4.1.3-setup.exe Portable 32 bits Windows: krita-x86-4.1.3.zip Debug symbols. (Unpack in the Krita installation folder) Linux 64 bits Linux: krita-4.1.3-x86_64.appimage 64 bits Linux G’Mic-Qt plugin appimage. (If, for some reason, Firefox thinks it needs to load this as text: to download, right-click on the link.) When it is updated, you can also use the Krita Lime PPA to install Krita 4.1.3 on Ubuntu and derivatives. We are working on an updated snap. OSX OSX disk image: krita-4.1.3.dmg Note: the touch docker, gmic-qt and python plugins are not available on OSX. Source code Source code: krita-4.1.3.tar.gz md5sum For all downloads: md5sum.txt Key The Linux appimage and the source tarball are signed. You can retrieve the public key over https here: 0x58b9596c722ea3bd.asc. The signatures are here (filenames ending in .sig). Support Krita Krita is a free and open source project. Please consider supporting the project with donations or by buying training videos or the artbook! With your support, we can keep the core team working on Krita full-time. [Less]
Posted over 5 years ago by Nate Graham (ngraham)
A few days ago Jupiter Broadcasting’s Chris Fisher approached me about doing an interview for his Linux Unplugged podcast, so I said sure! I talked about the Usability & Productivity initiative, Kubuntu and KDE Neon, my history at Apple, and ... [More] sustainable funding models for open-source development. Awesomely enough, it turns out that their systems all run Kubuntu 18.04, and Chris calls it “the best distro we’ve ever used in production.” Now that’s what I like to hear! It’s exactly what the Usability & Productivity initiative is all about: making KDE software a lean, mean, productivity machine for creators and professionals. You can listen to the show here: https://linuxunplugged.com/268. My segment starts at about the 25 minute mark. [Less]
Posted over 5 years ago by Wolthera van Hövell tot Westerflier (Wolthera)
So, I got my thesis done, updated the Comic Project Management Tools, and had a lot of time left till I got my thesis results(I did not pass >_> sadly). One thing that was sort of bugging me was that after all the work I did on the CPMT, there ... [More] just wasn’t much movement happening in Peruse, the KDE comic book reader that can read comic books with ACBF files and make use of the extra functionality. So, it was time to do some moving myself. Building and running. Peruse doesn’t have much in way of configuration. All the dependancies were available on Kubuntu 17.10. What however was tricky was that I just could not get my installation running. Peruse, you see, uses QML for it’s GUI. And if you install a program with QML locally(instead of systemwide), for some reason on Ubuntu, at the least, the QML files get placed somewhere else than where the program expects them to be. I had this problem before with Krita’s QML elements, the touch docker, and before that the Krita Sketch GUI. Turns out that what needs to be done is that you not only add the regular executable PATH for peruse to the enviroment variables, but also QT_PLUGIN_PATH and QML2_IMPORT_PATH. Peruse makes a handy little bash file with the appropriate paths upon build in the build directory, and I was able to find a similar solution to use to get Krita’s touch docker to work for me. This one is kind of hard to figure out though, and I still don’t know the why and how of this one beyond the obvious ‘paths wrong, point to correct paths manually’. Starting with an unfamiliar source: Dox, dox, dox. So, because I was starting with an unfamiliar source I started out with doing function documentation. Usually within KDE function documentation is welcomed (as long as you’re willing to make changes to you patch when you’re wrong, which is not really that controversial :p ), and it is a really good way to get to know the source. Peruse has two programs it builds: Peruse and Peruse Creator. Both of these use the contents of the ACBF library for reading/writing ACBF files, as well as a qtquick plugin, which provide some objects for handling comic archives and their metadata. Peruse the comic book reader also uses several files in the qtquick plugin together with another qtquick plugin under content list where the search is handled, to set up its catalogue and making it browsable. Docs for the acbf library. Adding docs to contentlist and qtquick folders Adding descriptions to almost all the qml files. I also did some really small fixes in between to get to know the code, but soon enough I got to an idea that might be a be a bit frustrating for leinir(the maintainer) to review each and every single commit for, so I started to work in a branch for this… Updating the ACBF library. So the first thing I did was update the ACBF library to ACBF 1.1. This involved getting references, stylesheets and several new keys in. Another thing that got added with this was that according to the official ACBF 1.1 xsd, authors can have multiple emails and homepages, so the class was updated to handle that. This was largely uneventful, except that I had this weird bug where the parsing would not go right because certain pointers were not initialized. That is not weird the way I describe it, pointers should be initialized! No, the weird thing was that it just made the parsing go awry instead of, you know, crashing. Trying to make use of the ACBF library. So, next up was actually making use of the new stuff that could be parsed and written. There were several places this could be done, but the easiest place by far was Peruse Creator. Peruse Creator could, when I started working on it, update the title, authors, genres, genre match and character names. This felt a bit sparse, and I often had opened Peruse Creator to stare at the metadata entries and wonder why not at the least there was an editor for ‘sequence'(series). Now it can also handle annotation, keywords, sequence, database references, content rating, reading direction, publisher, publishing date, city, isbn, license, document author, document sources, document history, document version and general page background color. The most difficult part here was that making lists of objects in QML requires making a library a QML plugin, and leinir had wanted to avoid that for the ACBF library. This was the reason why there were no editors for things like Sequence, Database Reference and Content Rating. So instead we have this pattern where we take a list of objects, write a count function for it and have a ‘countChanged’ signal. From those two we make a read-only property. Then we add a ‘getObjectByIndex’ type of function to get the objects, ‘removeByIndex’ and ‘addObjectAtIndex/createObjectFromStrings’, and make all of these invokable. This pattern mostly works, except when swapping, because if you assign a QML Repeater to use an integer as model, it just won’t update when the signal for integer update is fired due to items swapping, because, duh, the number of items obviously hasn’t changed! This was something that showed up with the frames, textareas and jumps. So instead of using integers there, a stringlist was made. As these objects were mostly unique by the points they took up, a string of the points is used to identify the object within a stringlist for similar objects. This will force QML Repeaters and Listviews to update when the stringlist has items swapped, and has the benefit of giving something to debug with when things go awry. I am pretty pleased I got this working in Peruse, because reordering page areas is one place where the Krita Comic Manager plugin is kind of difficult to use. It ended up being a big exercise in how to use QML, overal. I think my biggest victory was when I got the bounding boxes of the page areas(frames/textareas/jumps) to draw, color coded and all, correctly on the viewport. A Comic page in Peruse Creator with frame and text area definitions. Blue is frames, red is text areas. Currently only getting the bounding box is really supported. Other things that made me personally happy was to figure out how to use javascript array’s ‘filter’ function to filter out used genres from the available genres list, and how to use Keys.onReturnPressed so that you can add a character entry by happily smashing the return key. Little things like that make an application much more fun to use. Editing a the page contents in Peruse Creator. This part can still do with some extras, but being able to edit these is a big step. That said, Peruse Creator can now besides adding/removing/reordering pages also edit their contents, meaning we can add titles, transitions, set background colors and add page areas such as frames/jumps/textareas. The latter can only do rectangles for now, for the simple reason that with Qt 5.9 the only thing that can be drawn on screen are Rectangles and ellipses(rounded Rectangles). With Qt 5.11 there’s also the Shape object, which would be able to handle more, but I am currently bound to 5.9. Having rectangles is a pretty big deal already. Because being able to access them in Peruse Creator meant work could also be done to get them in Peruse regular… Frame based viewports in the image browser. So, the above patch makes it possible for Peruse regular to use frames to as a guide for zooming in on a page. This seems a bit overly fancy for desktop, but on Mobile it can be super handy. Unfortunately I couldn’t figure out how to get the next/previous to hook up to next frame/previous frame, which would’ve been even cooler, but leinir is gonna look at that :3 Frame based viewport zoom seems a bit over the top on desktop, but it can be really useful on mobile. On using QML for the first time. That QML would come across as a very different programming language was to be expected, it is declarative programming after all. The biggest surprise for me was how in QML items and objects are parented to one another, and if not, anchored in some way or another and can be modified by things like animations which get parented to the widget it should animate. This is the biggest difference in looking at how to order a layout in QML compared to regular Qt widgets, where everything is in a layout and you can sort of force it to lay out slightly differently by using the QSizePolicy and Spacers, and if you want to animate you need to modify the paintEvent. That was the primary thing that I had to abandon when using QML. Once I got past that, the biggest annoyance was trying to find the proper documentation. As hinted before, Qt 5.11 has had quite a few improvements on QML on Qt 5.9, and as the docs point at the latest and greatest by default… Let’s say I had quite a few moments where I was wondering why I could not use this function even though it was obviously in the docs. Qt widgets themselves do not update a lot in functionality between released, so when you’re used to programming with Qt widgets, going to QML the amount of things that change between versions can throw you for a loop. Other than that, it is indeed very easy to do shiny things in QML, but sometimes I wished there was a document to help my Qt Widgets geared brain to figure out how to do things in QML. Like, ‘this is how you stuff things in a row, this is how you stuff them in a column, or a grid, (there’s seperate layout QML items for this, it turns out), this is how you make a nice date/time editor without spending your whole day figuring this stuff out,’ etc. On top of that, the weird stuff with setting up a local install on Ubuntu as noted above is also a big hurdle, and I wish it would be documented better because it is very hard to find solutions if all you know is that a program with QML is not finding it’s QML files on Ubuntu. Trying to get translating ACBF files to work. So, my changes removed the translatable title entries, because it seemed to me these needed a dedicated translation system. In lieu of trying to figure out the appropriate gui for this, I thought it might be nice to just generate POT files and parse PO files, but this was blocked by the KDE translation coordinator on the basis of homebrew code being flakey and easy breaking. He suggested using gettext directly, which would require first getting to know that library and then trying to figure out how to hide all of this functionality when gettext isn’t available because gettext is near impossible to build on Windows because GNU. So I am just going to kind of abandon this idea… On the plus side, the translation coordinator also set up Peruse to be included into the KDE translation system, so Peruse can be translated now! But not translate ACBF files. Parsing ComicInfo.xml/CoMet. This was a little detour, but also makes use of the ACBF library. I’ve been writing a lot about different comic metadata files before. And I’ve, honestly gotten a little depressed seeing that these other metadata files are under documented and their programs have stopped being maintained, so I’m trying to get as much information for the files documented and thus also wrote a parser so that people who’d been using these formats can now switch to Peruse without losing their tags and notes. The code was debugged by running a zip file of the Killing Joke through ComicTagger, a program that allows you to write a ComicInfo.xml and get the information directly from ComicVine. I had wanted to get ComicBookInfo done as well, but unfortunately KArchive doesn’t have the functionality to get ZIP comments(it does sort of know about zip comments, but just enough to avoid their existence from messing up the parsing of a zip file). Editing the book entry system. So after doing all that, the next section was editing the book entry system, aka, the Catalogue. This system consists of a CategoryModel which can hold subcategories and comic, and each which can hold subcategories and comics themselves. Multiple series and authors, as well as Using KFileMetaData comments/tags/ratings. So, this was done in one big patch, because I was editing those entries anyway, and I really wanted access to the KFileMetaData from Peruse. Multiple series and authors was something that had been in the tracker for a while, and now Peruse can give you the full list of authors whose work you have and you’d want to, well, ‘Peruse’… as long as the metadata is there. Multiple authors means that for each author that works on a comic, if there’s an author entry, they’ll show up as a category with the books inside. Eagle eyed viewers can see an in-developement feature here too. KFileMetaData::UserMetaData is probably better known to most people as the little stars/tagging/comments system in Dolphin. I believe some other KDE programs make use of it(Amarok?), but Peruse used it mainly to keep track of the last read page. Now, in the dialog where you have finished reading a comic, you can set the rating/tags/user comment for that book, and it’ll be updated directly in Dolphin too. This was something I really really wanted to get in, because if you read a lot of comics, especially indie and amateur work, some of which can be quite forgettable, you’d want to leave a comment to your future self to remember what you thought of it, or, if you stopped reading, why you stopped reading it. This dialog shows up when you’ve finished a comic, and if the window is full screen it also allows editing tags and comments. The rating tags and comments are stored in the metadata in such a way that Dolphin and other programs using the KFileMetaData library can get to these values too. Make ‘sort by publishers’ work. This was basically an open door. There was no publisher category model, so one just needed to be defined and entries needed to be added based on their publisher string. Avoid removed entries in cache. This one, as you can see from the review, was a little controversial. On one hand, we should not have missing entries visible in Peruse (they look amazingly glitchy, for one), but on the other hand, the whole point of making a database cache was to avoid the slowdown you get when checking for entries, and on the third hand(foot?) QFileInfo caches a little itself too? Either way, we decided to just go for it and if it turns out to slow down start up a lot we’ll know where to start optmizing. Bugfixes and other stuff. Between all this I got so significantly comfortable with the code that I got to the point deciding which items need reviewing (unfamilair territory, behaviour changes), and which didn’t (fixes that remove warnings, bug fixes). And I was able to fix some of my own bug reports too! Show thumbnails in the search results box. Make switching to new books in a series easier. Add press indicator to Book tiles in bookshelf. Fix Toggling of Global Drawer actions. Make sure these i18n tags are i18nc tags. BUG:398256 Allow the mouse areas to switch functionality when reading direction is flipped. BUG: 398417 Add little buttons on hover for the page mouse areas. BUG 398254 Remove call to non-exitent function. BUG:398327 Make delete book work. Avoid duplicate entries. Preserve file suffix when copying files into archive. So, what’s left? A lot still, actually. The scariest part is a crash bug with getting the book thumbnails through KIO. This one shows up a lot with moderately sized comic collections(it starts happening at more than 10 entries), and can make it really hard to read series with Peruse. It is on the plus side also the only crash with Peruse I’ve found. Other than that there’s about a handful of bugs left in the tracker, of a variety. Other things that could be done are making the search more flexible(it can now only search through file names, being able to search through titles, authors, characters and more would be cool too), and coming up with a nice way to look at the leftover metadata, getting text areas and translations to work, making Peruse Creator’s textarea editing nicer, updating the cache after it has been generated, and I could go on for a while. I myself am working right now on making use of genre, keywords and character names in a rudimentary manner, and there’s still little things left and right I’ll poke at myself [Less]
Posted over 5 years ago by KDAB on Qt
QtQuick includes basic visual item to construct many common user-interface components, but people often ask how to create different visual appearances, beyond rectangles, round-rectangles and images. There’s various solutions to this problem, and ... [More] with Qt 5.10, there’s the new Shapes module which makes it easy to define paths, ellipses and other standard SVG drawing elements. However, if these built-in solutions aren’t quite what is needed, or you need to squeeze some additional performance from limited hardware, it’s always possible to create a custom Item using the Scene-Graph API of Qt Quick, and some knowledge of hardware drawing APIs, such as OpenGL and GLES. This is usually a somewhat complex solution, and it’s important to stick to the design philosophy of Qt Quick: create simple, efficient and re-usable items which can be configured via properties. Here I want to show an example item which was inspired by one of KDAB’s Automotive customers: an angular sector: Sector { id: baseSector color: "white"; endColor: "black" outerColor: "red"; outerEndColor: "green" outerRadius: (parent.width / 2) - 40 anchors.centerIn: parent innerRadius: outerRadius - thickness.value startAngle: -110 spanAngle: spanAngle.value borderColor: "black"; borderWidth: 1.0 } Defining the Geometry When creating a subclass of QQuickItem, you define the standard interface to QML as normal: via Q_PROPERTY macros, slots, and Q_INVOKABLE methods. (Such as the radius and color properties in the QML snippet above). But most importantly you must override the updatePaintNode method, and use this to describe the scene-graph nodes which correspond to your item. The scene-graph system in Qt Quick is an efficient mechanism to describe your visual pieces to the hardware APIs, but it’s very different from imperative drawing APIs such as the venerable QPainter. Your visuals must be defined as a tree of nodes, which can specify opacity, clipping, a transformation or most importantly, geometry. Geometry nodes contain both geometry – triangles, usually – and some mechanism to define how the pixels in those triangles are drawn; that mechanism is called a material in the scene-graph, and is closely related to a shader in OpenGL or other hardware APIs. The first step in defining our sector item, then, is to compute a set of triangles covering the item, based on the inner and outer radius, and the start and end angles. Why are we restricted to triangles? Well, that’s really the only thing hardware knows how to draw; APIs such as the Shapes module have to ultimately translate everything you provide into triangles. So we split our sector into triangles, but of course a triangle has straight sides. We could accept this and some ‘polygonal’ edges on our shapes (as happened in the first few generations of 3D video games and graphics), but we can do better. One solution is to use more, smaller triangles – so that the straight outer edges become a closer approximation of the curved sector we want. But this has its own problems – more triangles means more geometry data to be updated when the sector changes, and potentially slower rendering. (Although in practice, most modern graphics hardware can draw a lot of triangles). However, we can be smarter, and enable some additional features by using a different approach – we can use fewer triangles, but ensure they are larger than we need, so the entire sector is covered by triangles. Inside our shader code, we will use the discard GLSL keyword to make those pixels transparent, and this also gives us an easy way to smooth the edges of the sector (anti-aliasing), or even render a border. In this method, we’re no longer considering our triangle geometry to mean ‘pixels defining our shape’ but rather ‘pixels where we can potentially decide what happens’. Of course we could simply use two triangles covering the entire shape, but there is a cost to evaluating each pixel, so a coarse fit as shown below, is a tradeoff between complexity of the geometry, and covering unecessary amounts of the screen. Inside the QSGGeometry API, we need to define how many points (vertices) we have, and the X and Y positions of each, using some trigonometry. Unfortunately it’s hard to get very far in APIs such as OpenGL without some basic knowledge of linear algebra and trigonometry, but fortunately there’s many examples to work from. Inside the main code, we subdivide the sector into triangles, and generate the three vertices for each one. The most important piece of trigonometry is to compute X and Y (cartesian) values from polar (angle + radius) form, and of course we have to translate from degrees to radians. Here’s the code which creates our node and associated geometry: int vertexCount = .... compute number of unique vertices int indexCount = ... compute number of triangles * 3; node = new QSGGeometryNode; geom = new QSGGeometry(QSGGeometry::defaultAttributes_TexturedPoint2D(), vertexCount, indexCount); geom->setIndexDataPattern(QSGGeometry::StaticPattern); geom->setDrawingMode(GL_TRIANGLES); node->setGeometry(geom); node->setFlag(QSGNode::OwnsGeometry); Once this is done, we can ask the geometry to give us a pointer to the storage it allocated internally to hold our vertices and indices. Note that we’re using one of the default vertex attribute formats here, TexturedPoint2D. This means each vertex stores four values: X, Y and two other values called S and T we can use. There’s other built-in formats, but if you need, you can supply a custom one. Very often, one of the basic three (Point2D, TexturedPoint2D or ColoredPoint2D) will suffice however, and they save some typing! Here’s how we retrieve a pointer to the memory we must fill in with our vertices: QSGGeometry::TexturedPoint2D *points = geom->vertexDataAsTexturedPoint2D(); Then we need to run some loops, computing the values to insert into the arrays: // computing s & t not shown here for simplicity points[i].set(innerRadius * cos(angleInRad),  innerRadius * sin(angleInRad), s, t); The S and T values, we will actually pass the cartesian values again, but modified slightly, so we can compute the polar position of each pixel accurately in our material (see the next post in this series!). Of course, many triangles in our geometry share the same vertices. Graphics is all about efficiency, so rather than repeating our vertices, we only include each one a single time. Then we use a separate piece of data to indicate which triangles use which vertices. This is called the index data, and it’s simply a list of integers, specify vertices by, you guessed, their index. Again the QSGGeomtry will allocate storage for this based on a size we pass in, and can give us a pointer to that memory, to be filled in: quint16* indices = geom->indexDataAsUShort(); // three sequential entries in 'indices' define a // single triangle, here using vertices 4, 6 and 3 indices[i] = 4; indices[i+1] = 6; indices[i+2] = 3; The scene-graph API requires us to perform explicit management of memory and resources – this is because it’s optimised for speed and efficiency, not comfort. And it allows materials and geometry to be shared between nodes or items, so we need to explicitly state if we own our geometry. (You can see in the snippets above, we have to explicitly tell the node, it owns the geometry and hence can delete it) If our item properties change (for example, the radius), we need to recompute our geometry, but then also tell the scene-graph data we made changes, because internally there’s a hardware buffer which needs to be updated; that’s an operation we need to avoid doing if nothing has changed, so we have to explicitly mark the data as changed (‘dirty’) so it will copied to the GPU on the next Qt Quick drawing frame. geom->markIndexDataDirty(); geom->markVertexDataDirty(); node->markDirty(QSGNode::DirtyGeometry | QSGNode::DirtyMaterial); If you forget to tell either the geometry or the node, that something has changed, the hardware data won’t be updated, and you won’t see your changes. Putting this all together, we now have a way to get our geometry object populated with vertices and indices. Each vertex defines an X,Y position, and each group of three index values identify three vertices, and hence one triangle. We can use some basic trigonometry to work out the X,Y values from our angles and radii. Whenever our angles or radii change, we’ll need to recompute our geometric data, and tell the scene-graph that the data is dirty (modified). If we wanted to show our shape with a simple color, we could now use QSGFlatColorMaterial and we’d be done. As the name suggests, this built-in material will draw ever pixel in your triangles, in a single color. But we want something prettier, so we need a custom material. We’ll see how to do that, in the next part. The post Efficient custom shapes in Qt Quick appeared first on KDAB. [Less]
Posted over 5 years ago by Andrew Crouthamel (AndrewCrouthamel)
Thank you everyone who participated in the first Bugsquad event! We saw the team page on Phabricator double in membership, and had seven people contribute triaging bugs. Thank you xyquadrat, emmet, spaliwal, eoinoneill, and jtamate! Many of them ... [More] continued triaging past their assigned blocks, knocking out the majority of the bugs. Absolute rockstars! The KDE Bugsquad is back for Part 2 of joining forces with the Krita team as part of their Squash All the Bugs fundraiser! We will be holding the second Bug Day on October 2nd, 2018, focusing on bugs reported on Krita. Join at any time, the event will be occurring all day long! This is a great opportunity for anyone, especially non-developers to get involved! Check out our Bug Triaging guide for a primer on how to go about confirming and triaging bugs. Log into KDE Phabricator and join the Bugsquad! Join the #kde-bugs IRC channel on Freenode to chat with us in real-time as we go through the list. Open the shared Etherpad for this event (use your KDE Identity login) to select your block of bugs and cross them off. If you need any help, contact me! [Less]
Posted over 5 years ago by KDE neon Blog
KDE Dot News: KDE neon Rebased on Ubuntu 18.04 LTS “Bionic Beaver”