<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>LukasT.mediablog.sk</title>
	<atom:link href="http://lukast.mediablog.sk/log/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://lukast.mediablog.sk/log</link>
	<description>Lukas&#039;s blog about Krita development, computer graphics and Linux</description>
	<lastBuildDate>Sat, 16 Mar 2013 19:43:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Create textures with Krita</title>
		<link>http://lukast.mediablog.sk/log/?p=466</link>
		<comments>http://lukast.mediablog.sk/log/?p=466#comments</comments>
		<pubDate>Sat, 16 Mar 2013 19:43:44 +0000</pubDate>
		<dc:creator>LukasT</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://lukast.mediablog.sk/log/?p=466</guid>
		<description><![CDATA[Field of painting that Krita explicitly supports is also creating textures for rendering. This field gets attention mostly these days. Transform tool was improved just recently. One bug, that caught my attention, was about transforming layers with offset. It is essential image &#8230; <a href="http://lukast.mediablog.sk/log/?p=466">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Field of painting that Krita explicitly supports is also creating textures for rendering. This field gets attention mostly these days. <a title="Transform tool improved (www.krita.org)" href="http://krita.org/item/131-free-transform-tool" target="_blank">Transform tool</a> was improved just recently.</p>
<p>One <a title="bko" href="https://bugs.kde.org/show_bug.cgi?id=315367" target="_blank">bug</a>, that caught my attention, was about transforming layers with offset. It is essential image pixel transformation if you want to produce seamless textures.</p>
<p>I started to work on it before our Calligra Essen Sprint 2013, then there I made some progress together with dmitryK. Dmitry next to me made the integration much more faster as Dmitry knows processing framework used in Krita very well. Now I clean up rough edges and I&#8217;m trying to support corner use-cases like multi-layer document with transparency masks and other crazy possibilities that are available in Krita. As you will see in the video, texture artist is usually using one layer in most cases.</p>
<p>Anyway, the offset transformation can be found in <em>Image </em>menu and <em>Layer </em>menu. If you have multi-layer image and you want to offset all the layers, you use <em>Image-&gt;Offset.</em> If you want to offset only active layer, you go to <em>Layer-&gt;Offset</em> menu<em>. </em>The default coordinates in UI point to the center of canvas or if you have active selection, to the center of the selection.</p>
<p><strong>mifth</strong>, Krita user and graphics artist, that reported the bug, was so kind, that he prepared video demonstrating the feature</p>
<p><iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/6DeyjO4JIEw" frameborder="0" allowfullscreen></iframe></p>
<p>To support the texture workflow even better in Krita, it would be nice to implement texture analysis and synthesis filter. For GIMP there is plug-in called <a href="http://www.logarithmic.net/pfh/resynthesizer">Resynthesizer</a>Given a sample of a texture, it can create more of that texture. <a href="http://www.logarithmic.net/pfh/resynthesizer/more">Auto-magically!</a></p>
]]></content:encoded>
			<wfw:commentRss>http://lukast.mediablog.sk/log/?feed=rss2&#038;p=466</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Calligra Essen sprint 2013: Day 2</title>
		<link>http://lukast.mediablog.sk/log/?p=458</link>
		<comments>http://lukast.mediablog.sk/log/?p=458#comments</comments>
		<pubDate>Sat, 09 Mar 2013 23:52:33 +0000</pubDate>
		<dc:creator>LukasT</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://lukast.mediablog.sk/log/?p=458</guid>
		<description><![CDATA[Greetings from Essen! The 2nd day of Calligra sprint in Essen started with discussion about redesigning UI in Calligra so that the applications can be delivered easily on more platforms. The first candidate for UI code refactoring is going to &#8230; <a href="http://lukast.mediablog.sk/log/?p=458">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Greetings from Essen! The 2nd day of Calligra sprint in Essen started with discussion about redesigning UI in Calligra so that the applications can be delivered easily on more platforms. The first candidate for UI code refactoring is going to be Krita. There is already Krita Sketch application which provides QML based user interface besides the standard QWidget one. Rest of the Calligra suite should follow the refactorings too.</p>
<p>Maintainers are needed! Karbon, Plan and Braindump are without maintainers. Previous maintainers are busy with real life.</p>
<p>Afternoon was full of commits and coding. I made code review for Krita Sketch merge to master and then Boud, Krita maintainer, started to fix the problems I found. Sven is working on actions and operations, so that users can produce macros. And he did some refactoring, so now you can write less code to produce extensions with actions. Dmitry was trying to compile Windows version of Krita, but that failed. He helped me also to implement offset operation for layers and image, especially part related to processing framework in Krita &#8212; if you have image with 8 layers and your computer has 4 cores, every core will process one layer, so you get the filtering results quickly! Dmitry also fixed some crash in transform tool. Arjen worked on modern OpenGL canvas for Krita.</p>
<p>Friedrich was fixing build system in Calligra, he introduced so-called Productsets, so now you can easily specify that you want to compile Calligra for Plasma Active with only useful parts and avoid compilation of the parts that are useful only for desktop version.</p>
<p>Yue is fixing some text layout bug. Matus Uzak fixed some problems in filters and worked on docx export filter. Inge started to lay foundations for export filter for docx. He has experience with epub that is constructed from odf and also experience with export of odf to html. Thorsten fixed bug with styles in filters related to footers and headers, that were not saved correctly. He also reported some bug for me, what reminded me of my time when I was working on Calligra for Nokia and I investigated shortly some bug in MS Office filter.</p>
<p>Today I was riding a small electric car provided by Linux hotel. It is called <a title="YouTube video" href="http://www.youtube.com/watch?feature=player_embedded&amp;v=szN3bLF1oP4" target="_self">Renault Twizy</a>. I was picking up pizzas for lunch. It was funny to ride in Essen-Horst, I enjoyed it a lot. The car does not have windows (now I see the pun from linuxhotel), it is quite small and elegant for city travelling! The speed change is so smooth in this electric car. Then we had nice dinner in a restaurant &#8212; some had tasty Schnitzels and some tasty vegetarian food.</p>
]]></content:encoded>
			<wfw:commentRss>http://lukast.mediablog.sk/log/?feed=rss2&#038;p=458</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Calligra Essen sprint 2013: Day 1</title>
		<link>http://lukast.mediablog.sk/log/?p=444</link>
		<comments>http://lukast.mediablog.sk/log/?p=444#comments</comments>
		<pubDate>Fri, 08 Mar 2013 22:17:54 +0000</pubDate>
		<dc:creator>LukasT</dc:creator>
				<category><![CDATA[KDE]]></category>

		<guid isPermaLink="false">http://lukast.mediablog.sk/log/?p=444</guid>
		<description><![CDATA[Calligra sprint 2013 is taking place in Essen, Germany. We are occupying Linuxhotel, which happens to be a very nice Linux hotel. The rooms are nice, the meeting hall is nice. Cool place with Linux mascot everywhere. I like the equipment of &#8230; <a href="http://lukast.mediablog.sk/log/?p=444">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Calligra sprint 2013 is taking place in Essen, Germany. We are occupying <a href="http://linuxhotel.de/">Linuxhotel</a>, which happens to be a <a title="Youtube video" href="http://www.youtube.com/watch?v=hg8zOQ3f5G4" target="_blank">very nice Linux hotel</a>. The rooms are nice, the meeting hall is nice. Cool place with Linux mascot everywhere. I like the equipment of the hotel. Coffee machine, kitchen ready to be used, rooms with computers, even an acoustic guitar.</p>
<p>The first day started with a lot of discussions. Some are personal, some are technical.Sven, Dmitry and I were discussing recording, macros and actions in Krita. Inge and Matus were discussing docx export filter. Hopefully it will happen! <img src='http://lukast.mediablog.sk/log/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Arijen and Thorsten cooked really great dinner for us. Pasta with tasty sauces, one was vegetarian and tasted great even for me, non-vegetarian person. The other one was with meat. Nobody stayed hungry. Mek, Sheets <span style="text-decoration: line-through;">Tables</span> maintainer, happens to work for Google now and he brought <em>Google Chromebook Pixel</em>.I can confirm that the display is really amazing on this device. Boud shared some positive impressions from Mobile World Congress about demoing Krita.</p>
<p style="text-align: left;">Few remarkable quotes of the day:</p>
<blockquote>
<p style="text-align: left;">&#8220;Krita is actually useful product, that people can use.&#8221;</p>
</blockquote>
<blockquote><p>&#8220;You are married&#8230;You are Lord of the Rings now.&#8221;<br />
&#8220;Yeah, the ring makes me invisible in the commit log.&#8221;</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://lukast.mediablog.sk/log/?feed=rss2&#038;p=444</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Libre Graphics Meeting 2012</title>
		<link>http://lukast.mediablog.sk/log/?p=420</link>
		<comments>http://lukast.mediablog.sk/log/?p=420#comments</comments>
		<pubDate>Mon, 07 May 2012 20:48:20 +0000</pubDate>
		<dc:creator>LukasT</dc:creator>
				<category><![CDATA[Computer graphics]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Krita]]></category>

		<guid isPermaLink="false">http://lukast.mediablog.sk/log/?p=420</guid>
		<description><![CDATA[I spent 5 days in Vienna, participating at the Libre Graphics Meeting 2012. It is conference full of developers, artists and users connected to open-source tools. You can meet there MyPaint, Gimp, Inkscape or Scribus developers. At least I did! Or you can &#8230; <a href="http://lukast.mediablog.sk/log/?p=420">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I spent 5 days in Vienna, participating at the <a href="http://libregraphicsmeeting.org/2012/" target="_self">Libre Graphics Meeting 2012</a>. It is conference full of developers, artists and users connected to open-source tools. You can meet there MyPaint, Gimp, Inkscape or Scribus developers. At least I did! Or you can meet some independent developers who created cool custom open-source tools and very nice people interested in design.</p>
<p>Besides the regular program we visited <a href="http://hackerspaces.org/wiki/Metalab" target="_self">Metalab</a>. It&#8217;s part of the <a title="Hackerspaces" href="http://hackerspaces.org/wiki/" target="_self">Hackerspace</a> scene. It is a great place for hackers to meet and build stuff. Not just code, but also hardware, photography or food. Metalab is full of interesting geeky stuff like laser cutter, 3D printer or game consoles since the age of Atari! Pity that something like that is not close enough to me. I had very nice conversions with LGM friends there. Let&#8217;s review the conference from my point of view. But first I would like to thank KDE for sponsoring me the travel expenses!</p>
<p>TL;DR: Very interesting stuff everywhere.</p>
<p>First day of the conference was full of color management talks. Richard Hughes talked about ColorHug and colord. ColorHug is interesting piece of open source hardware: display colorimeter. It allows you to calibrate your screen for accurate color matching. More information <a title="ColorHug: display colorimeter" href="http://www.hughsie.com/" target="_self">on the official website</a>.</p>
<p>Kai-Uwe Behrmann talked about <a title="OpenICC web" href="http://www.freedesktop.org/wiki/OpenIcc" target="_self">OpenICC</a> and <a title="Oyranos website" href="http://www.oyranos.org/" target="_self">Oyranos</a>. Chris Lilley about color management in SVG2. I don&#8217;t understand this topics, but I read <a title="Color management" href="http://blog.pcode.nl/2012/01/29/color-management-on-linux/" target="_self">very good article</a> about it recently, so if you are confused about it, go ahead and read it. It is important topic, if you print photos or you want to calibrate two monitors to show the colors in the same visual way.</p>
<p>Second half of the day started with lovely Russian Valek Filippov. He was talking about <a title="Re-lab repositary" href="https://gitorious.org/re-lab/" target="_self">re-lab project</a> which is about reverse engineering of the proprietary formats for the compatibility reasons. I used <strong>oletoy</strong> from this project back then when I was working on Calligra. For investigating Excel files it was really great and helped me a lot! Valek&#8217;s presentation was followed by <a title="Fridrich Strba" href="http://fridrich.blogspot.com/" target="_self">Fridrich Strba</a> (who comes from Slovakia by the way, go Slovakia! :-]), he talked about LibreOffice and support of the proprietary graphics formats in LO.</p>
<p>Igor Novikov presented the restart of the <a href="http://sk1project.org/" target="_self">sK1 Project</a>. Next presentation by Behdad Esfahbod was very interesting, he was talking about rendering of the text on the GPU. With this approach you can free CPU from performance CPU-consuming tasks like rasterization. It&#8217;s way to go on low-performance devices like smart phones.</p>
<p><a title="Ramon's web" href="http://www.ramonmiranda.com/" target="_self">Ramon Miranda</a> is involved in <a href="http://www.gimp.org">Gimp</a>, <a href="http://www.mypaint.info">MyPaint</a> and <a href="http://www.krita.org">Krita</a> as the artist and the creator of brush presets. He is famous for his <a title="Gimp Paint Studio web" href="http://code.google.com/p/gps-gimp-paint-studio/" target="_self">GIMP Paint Studio</a>. His presentation was important for me as he was talking about painting and that is always interesting to me. His background lays in traditional art and he is exploring digital painting. And he is exploring it very successfully producing nice art. Very talented painter and nice man.  Martin Renold (Maxy), original creator, developer, maintainer gave talk about &#8220;Predictive painting&#8221; in MyPaint. I could not miss it. I always like to talk with Martin about painting algorithms.</p>
<p>Tom Lechner talked about lovely tool, his <a title="Cool tool" href="http://laidout.org/" target="_self">Laidout</a> contains many fancy tools not available in other packages. I liked that you could put pictures on curve for example. <a href="http://www.freedesktop.org/wiki/Software/HarfBuzz" target="_self">HarfBuzz</a>, the free text shaping engine by Behdad Esfahbod catched my attention too.</p>
<p>From the &#8220;An awesome FLOSS design collaboration work-flow&#8221; by <a href="http://blog.linuxgrrl.com/" target="_self">Máirín Duffy</a> and Emily Dirsh, <a title="Sharing" href="http://sparkleshare.org/" target="_self">Sparkleshare</a> caught my attention. It&#8217;s a git-backed, dropbox-like system that automatically checks in and pushes files to a shared git repository.</p>
<p>On Friday I started with <a title="Powerstroke" href="http://wiki.inkscape.org/wiki/index.php/PowerStroke" target="_self">Powerstroke</a> in Inkscape. Very nice effects were demoed. You need Inkscape trunk for Powerstroke to be able to play with it. We might take some inspiration either for Karbon or maybe even for some vector brush engine for Krita.</p>
<p>Then train of GIMP related talks started. <a href="http://blog.mmiworks.net/" target="_self">Peter Sikking</a>, interaction design guru, and Kate Price talked about <a title="Text handling wiki" href="http://gui.gimp.org/index.php/Text-Handling_in_GIMP" target="_self">text handling in GIMP</a>. OpenCL in Gegl and GIMP by Victor Oliveira: Mesa is implementing OpenCL support! NVidia, AMD and Intel provide proprietary solutions so far. Øyvind Kolås a.k.a. pippin with <del datetime="2012-05-11T07:42:19+00:00">some Gimp developer</del> mitch talked about <a title="Goat invasion story" href="http://gimpfoo.de/2012/04/17/goat-invasion-in-gimp/" target="_self">Gegl integration in GIMP</a>. Recently a huge step was made towards integrating this very fast, important back-end (e.g. 16 bit per channel) for pixel buffers. Many pictures with goats were presented.</p>
<p><a href="http://www.kickstarter.com/projects/1331941187/the-tube-open-movie" target="_self">Tube Open Movie</a> by Bassam Kurdali was actually remote presentation. Bassam sent video to organizers and it was projected for the whole audience. Then he answered some questions through #lgm IRC channel.</p>
<div class="wp-caption aligncenter" style="width: 610px"><img style="border: 1px solid black;" src="http://mediablog.christ-net.sk/images/Krita-when-it-is-ready.jpg" alt="Shortly before Krita talk" width="600" height="316" /><p class="wp-caption-text">Peter Sikking, me and Timothee shortly before the Krita talk</p></div>
<p>Saturday started with our presentation about Krita. Together with <a title="Official web site" href="http://www.timotheegiet.com/" target="_self">Timothee Giet</a>, a.k.a. Animtim, we presented some new workflow improvements in Krita. Curve brush, multi-hand and mirror painting caught some attention too. Tom Lechner had nice suggestion for multi-hand tool: Escher-like strokes. Then we showed some piece of art done by Krita. Timothee Giet then continued with his talk about animation with Synfig studio.</p>
<p>Then I attended Krita workshop about workflow to create illustrations and comics with Krita where Timothee showed Krita in the real-world usecase. It was very well attended workshop, around 22 people there, full room of people. We found some problems with Krita 2.4 in Fedora package. Now I realize that it was probably disabled feature shortly before release and already available in master (full-screen canvas with &#8216;Tab&#8217; key). I use Fedora, but I never use the packages, because you can&#8217;t have installed both. Krita 2.3 is by the way very old. Please refrain from using it. Krita 2.3 misses so many work and features, many of those that Timothee presented in his workflow. You can get Krita 2.4 for Fedora 16 in testing <a title="KDE repositary for Fedora 16" href="http://kde-redhat.sourceforge.net/" target="_self">KDE repo</a>. Few problems found at the workshop: old 2.3 version, disabled feature in 2.4 and brush editor is too big for netbooks <img src='http://lukast.mediablog.sk/log/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Closing talk by Louis Desjardins. It was decided that the next LGM is going to be in Madrid, Spain. Handshakes with familiar faces, visiting Vienna and travel back home. It was great time to be there.</p>
<p>The event was covered by blogposts and ideas from talks were picked on twitter/identi.ca. Here are few I found:</p>
<p><a title="Tag:lgm" href="http://identi.ca/tag/lgm">Ideas from talks I<br />
</a><a title="Group:LGM" href="http://identi.ca/group/lgm" target="_self">Ideas from talks II<br />
</a><a href="http://nicubunu.blogspot.com/2012/05/" target="_self">Nicu Bunu</a><br />
<a href="http://timotheegiet.com/blog/floss/lgm-2012-a-crazy-week-in-vienna.html" target="_self">Timothee a.k.a. Animtim</a></p>
]]></content:encoded>
			<wfw:commentRss>http://lukast.mediablog.sk/log/?feed=rss2&#038;p=420</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Krita Bug hunting day</title>
		<link>http://lukast.mediablog.sk/log/?p=399</link>
		<comments>http://lukast.mediablog.sk/log/?p=399#comments</comments>
		<pubDate>Fri, 04 Nov 2011 08:45:22 +0000</pubDate>
		<dc:creator>LukasT</dc:creator>
				<category><![CDATA[Krita]]></category>

		<guid isPermaLink="false">http://lukast.mediablog.sk/log/?p=399</guid>
		<description><![CDATA[5th november 2011 since the early morning til the late night (almost) no matter where you are, the Krita IRC channel #krita on freenode. This bug hunting event is about help you to try Krita, it&#8217;s about finding hidden bugs &#8230; <a href="http://lukast.mediablog.sk/log/?p=399">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>5th november 2011 since the early morning til the late night (almost) no matter where you are, the Krita IRC channel #krita on freenode.</p>
<p>This <a title="Bug day announcement" href="http://krita.org/component/content/article/10-news/98-krita-24-bug-day" target="_blank">bug hunting event</a> is about help you to try Krita, it&#8217;s about finding hidden bugs in your Krita workflow, it&#8217;s about getting to know more people from community. We will help you<br />
build lastest Krita if you want or you can come and test prepared packages for your Linux distribution (Krita 2.4 beta 3).</p>
<p>What you can do at the event?</p>
<p>Precondition: Setup environment to have always fresh Krita build or install package for your distro</p>
<p>a) <a title="http://bugs.kde.org" href="http://bugs.kde.org/buglist.cgi?bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;field-1-0-0=bug_status&amp;field-1-1-0=product&amp;product=krita&amp;query_format=advanced&amp;remaction=&amp;type-1-0-0=anyexact&amp;type-1-1-0=anyexact&amp;value-1-0-0=UNCONFIRMED%2CNEW%2CASSIGNED%2CREOPENED&amp;value-1-1-0=krita&amp;order=bugs.bug_id%20desc&amp;query_based_on=" target="_blank">triagge bugs from bugzilla</a>, pick a bug and try to reproduce, if reproducible, confirm (optionally with your backtrace)<br />
b) test various <a title="Visual guide for Krita 2.4" href="http://krita.org/component/content/article/8-press-releases/94-krita-24-beta-release-visual-tour" target="_blank">features from our visual guide</a><br />
c) <a title="Release log with features" href="http://krita.org/component/content/article/10-news/93-first-beta-of-krita-24-released" target="_blank">review the release log</a> and test the mentioned items (ever wondered what <em>Make painting obey channel locks</em> means? Ask us, test it, yay if it works, fill bug report if fails)<br />
d) <a title="David Revoy" href="http://www.davidrevoy.com/index.php?article98/krita-2-4-beta-screenshots-features-and-ppa" target="_blank">test features that real professional digital painter likes</a><br />
e) something cool I forgot to tell</p>
<p>Why would you attend? You can contribute to Krita this way very easily.</p>
<p>I will be there too, my nick is LukasT. Feel free to ping me.<br />
By the way we will have professional digital painter around too <img src='http://lukast.mediablog.sk/log/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><a title="Facebook Event" href="https://www.facebook.com/event.php?eid=112196922226074" target="_blank">Facebook event</a></p>
<p><center><em>Maybe you want to test new multihand painting tool&#8230;</em><br />
<iframe width="560" height="315" src="http://www.youtube.com/embed/1HWDTQnNwVY" frameborder="0" allowfullscreen></iframe><br />
</center></p>
]]></content:encoded>
			<wfw:commentRss>http://lukast.mediablog.sk/log/?feed=rss2&#038;p=399</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Krita bug-fixing</title>
		<link>http://lukast.mediablog.sk/log/?p=387</link>
		<comments>http://lukast.mediablog.sk/log/?p=387#comments</comments>
		<pubDate>Sat, 30 Apr 2011 18:09:04 +0000</pubDate>
		<dc:creator>LukasT</dc:creator>
				<category><![CDATA[Krita]]></category>

		<guid isPermaLink="false">http://lukast.mediablog.sk/log/?p=387</guid>
		<description><![CDATA[There are few Krita developers sponsored to work on Krita part-time and I&#8217;m one of them. It&#8217;s all donated by one man from Krita community, Silvio Grosso. Big thanks goes to him. Thanks to this initiative I can spend few &#8230; <a href="http://lukast.mediablog.sk/log/?p=387">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>There are few Krita developers sponsored to work on Krita part-time and I&#8217;m one of them. It&#8217;s all donated by one man from Krita community, <em>Silvio Grosso</em>. Big thanks goes to him. Thanks to this initiative I can spend few hours a week on ugly Krita bugs. Besides that I&#8217;m still contributing to Krita as a hobby developer. Mostly by new features <img src='http://lukast.mediablog.sk/log/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  I blog after I finish milestone of 50 sponsored hours so here I go.</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" src="../../images/use_krita_else.jpeg" alt="Lovely picture for a blog post" width="300" height="300" /><em>Some peaceful picture for a little too technical blog post <img src='http://lukast.mediablog.sk/log/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </em></p>
<p>I started with <a title="bug on bugs.kde.org" href="https://bugs.kde.org/show_bug.cgi?id=250978" target="_self">bug 250978</a>. It says, that stylus X/Y Tilt sensors are broken. Tilt comes from your (Wacom) tablet. I found out that the sensors were not broken, but tilt support, that artists except, is not about directly taking the values of tilt X  and tilt Y from Qt event and use those, but you have to compute one value based on these tilts. The inspiration came from befriended project mypaint. The solution was to implement new sensors, namely <em>declination</em> and <em>ascension</em>. It is nicely described at <a title="MyPaint wiki" href="http://wiki.mypaint.info/Iportnovs_en#Stylus_tilt_support" target="_self">mypaint wiki</a>. Fixed and the outcome was happy artist.</p>
<p>Next bug was about the performance. Experimental paintop was kinda <a title="bug on bugs.kde.org" href="http://bugs.kde.org/263171" target="_self">slooow and flickering</a>. I had some discussions with Dmitry Kazakov, Krita developer, as he had some nice idea, but the idea is not general enough, but still might be worth to try to implement it, but later. Basically it is about the way we construct the shape of the experimental paintop. But it does not take into account the dynamic opacity of the whole shape or deformation of the shape. Flickering was fixed by trick similar to double buffering. I was rendering the shape directly into layer and then remove it fastly every brush dab. And the update algorithm of Krita flickered in that case. So now I render and remove the shape on the paintop&#8217;s internal device and it does not flicker anymore. I also improved the performance of the paintop by doing tricks when converting Qt&#8217;s QPainter polygon into Krita&#8217;s colorspace aware pixel buffers. <em>David Revoy</em> says he is happy with the speed of it, compared to Alchemy. I&#8217;m not happy yet as I have slower hardware as David, but I don&#8217;t have any idea how to improve it for now.</p>
<p>Then I investigated and worked on some smaller bugs. We had problems with our presets. We save XML into PNG file into metadata part. Because we save doubles (like 1.246) as strings, they were sometimes saved accourding the system locale. So in some countries like 1,246 and in some like 1.246. Then we load them with QString::toDouble(bool * ok) and we did not checked the ok value. Who does that? Have you ever checked printf() return code? We should checked it. We discovered the problem when Krita artist from Argentina send the presets to share them. I was not able to load them in English locale system. Some important preset values were zeros. So we fixed the loading with Sven by using mighty german locale when loading old presets if we fail. 1.246 and 1,246 are loaded ok in german locale. Now we save the presets without honoring the user&#8217;s locale settings. There might be some problems <a title="bug on bugs.kde.org" href="https://bugs.kde.org/show_bug.cgi?id=265477" target="_self">still present</a>.</p>
<p>Then I investigated some slowness with paintops, but it lead to the pooler and that is maintained by Dmitry so I handed the bug to him. He successfully fixed it.</p>
<p>Rest of the time I spend with <a title="bug on bugs.kde.org" href="https://bugs.kde.org/show_bug.cgi?id=234308" target="_self">speed</a> <a title="bug on bugs.kde.org" href="https://bugs.kde.org/show_bug.cgi?id=251374" target="_self">sensor</a> bugs. I still did not nailed it. Basically I try to adopt mypaint solution with low-pass filtering on the speed computation. Maxy from mypaint was very helpful. Speed is computed now in the tool (was in the sensor itself) and will be computed even when you hover the canvas. The result is still not smooth speed, so I have to debug the code.</p>
<p>That&#8217;s it. Current plan is still bug fixing and making Krita more stable, faster and polished! I will continue in this work in my pace and I look forward to inform you after the next milestone!</p>
]]></content:encoded>
			<wfw:commentRss>http://lukast.mediablog.sk/log/?feed=rss2&#038;p=387</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Alchemy in Krita: shape, mirroring, multihand painting</title>
		<link>http://lukast.mediablog.sk/log/?p=361</link>
		<comments>http://lukast.mediablog.sk/log/?p=361#comments</comments>
		<pubDate>Thu, 10 Mar 2011 08:50:58 +0000</pubDate>
		<dc:creator>LukasT</dc:creator>
				<category><![CDATA[Computer graphics]]></category>
		<category><![CDATA[Krita]]></category>

		<guid isPermaLink="false">http://lukast.mediablog.sk/log/?p=361</guid>
		<description><![CDATA[There is an open drawing project, called Alchemy. I noticed this project while watching some video tutorials made by David Revoy. He uses this tool in his workflow. I noticed that people can draw crazy interesting stuff with that tool. &#8230; <a href="http://lukast.mediablog.sk/log/?p=361">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>There is an open drawing project, called <a href="http://al.chemy.org/">Alchemy</a>. I noticed this project while watching some video tutorials made by David Revoy. He uses this tool in his workflow. I noticed that people can draw <a title="Alchemy forum: random gallery thread" href="http://al.chemy.org/forum/sketches/topic533.html#p2128" target="_blank">crazy interesting stuff</a> with that tool. I wanted to have those features in Krita for our users. I also wanted to kill Alchemy in David&#8217;s workflow (evil laugh) so that he can use Krita more in his workflow.</p>
<p>Here is the vision of the Alchemy project, just for the reference and before I kill the Alchemy userbase with Krita (exaggeration of course):</p>
<blockquote><p>Alchemy is an open drawing project aimed at exploring how we can sketch,  draw, and create on computers in new ways. Alchemy isn’t software for  creating finished artwork, but rather a sketching environment that  focuses on the absolute initial stage of the creation process.  Experimental in nature, Alchemy lets you brainstorm visually to explore  an expanded range of ideas and possibilities in a serendipitous way.</p></blockquote>
<p>Now is the time to mention our shiny Krita vision:</p>
<blockquote><p>Krita is a KDE program for sketching and painting, offering an end–to–end solution for creating digital painting files from scratch by masters. Fields of painting that Krita explicitly supports are concept art, creation of comics and textures for rendering. Modelled on existing real-world painting materials and workflows, Krita supports creative working by getting out of the way and with snappy response.</p></blockquote>
<p><a title="See mirroring and shape in action on his DVD Chaos" href="http://www.youtube.com/watch?v=kGOtGDQ-K-g&amp;feature=player_detailpage#t=656s">David Revoy&#8217;s workflow</a> contains mainly shape and mirroring mode from the Alchemy. So I started and focused on those features and I tried to implement their adaption for Krita. There are other features in Alchemy, that are nice to have, but my spare time is limited so I prioritize!</p>
<p><strong>Shape feature</strong></p>
<p>Let me share some developer details. First let&#8217;s talk about the shape feature. Basically it allows you to paint the freehand form shape. Every new mouse move adds triangle to the shape, but some triangles make the shape non-convex and that means that the shape is transparent in the place where the triangle bisect the shape.</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" src="http://lukast.mediablog.sk/images/shape_bisect.png" alt="Shape bisected" width="300" height="305" />Piece of abstract art demonstrating<br />
non-convex freehand shape</p>
<p>Alchemy is vector graphics application, Krita is raster graphics. First problem was how to render the shape correctly with raster brush. I wanted to create some new brush engine &#8212; it is possible to realize this feature like this, e.g. <a title="Pinta painting application" href="http://pinta-project.com/" target="_blank">Pinta </a>can do this shape with its tools. But, but..brushes just leave the trace, how do you want to render the shape, which is changing under your hand like some kind of animation as you stroke? I did not shared yet that the shape can be pre-processed and post-processed which imply that it can change from dab to dab. The opacity of the shape can be dynamic too, it can be like random, controlled by pressure. Dmitry, Krita folk, had nice idea to use mean of the pressure, because when you activate the opacity contoller with pressure, you will not see the shape, because the sensor pressure sends low value when you raise your pen from the tablet.</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" src="http://lukast.mediablog.sk/images/shape_robot.jpeg" alt="Shape in use: Robot" width="450" height="360" />Made with shape and mirroring<br />
By me and my pc mouse</p>
<p>The solution I come up with is to first render the part of the stroke, next time erase the previous part of the stroke and render the whole stroke (previous and new) again on the unchanged background. We call some part of the stroke <em>dab</em>.That way the opacity can be dynamic, shape can change as it will be re-rendered everytime from the beginning.</p>
<p><em>Implementation details (feel free to skip)</em>: The rasterization is done by QPainterPath and QPainter and the result is used as alpha mask for our various color-spaces. Thank you, Qt. First attempt was using data that we store to our pixel buffers for undo action, we name it oldRawData(). Also pixel filters use those data sometimes. Before the stroke begins, you have the original unchanged data of the layer there until the end of the stroke &#8211; those are there because of the Krita&#8217;s transaction system. The whole stroke is one transaction for every brush engine. This attempt somehow worked, but it was slow. I pinged Dmitry, our transaction, tile engine and multithreaded developer and he advised me to make copy of the current layer and use those data to erase rendering of the previous dab. I used some tricky commands that activated the tile sharing of the pixel buffers and auto-magically it was much more faster. The only problem that left was some flickering. Also the speed was still not perfect, but closer to &#8220;snappy response&#8221; (see Krita vision). Next advice from Dmitry was to use transaction directly. Cyrille Berger advised this in the beginning, but somehow I did not know how to realize that idea and Dmitry showed me some pseudo code with those transactions. Lesson learned: ask for the pseudo-code. I implemented the advice. All the rendering was done on the layer directly. That caused that flickering of the canvas. So I had to do some kind of double buffering. Now all rendering is done on the internal device which is the copy of the layer and the flickering is gone. Speed is almost ok, there is no more flickering.</p>
<p><strong>Mirroring</strong></p>
<p>Another interesting and funny feature is mirroring of the stroke. You paint on the left half of the canvas and the stroke is rendered <strong>also</strong> on the right half and it is mirrored. Crazy fun.</p>
<p style="text-align: center;"><img class="aligncenter" src="http://lukast.mediablog.sk/images/batman_wolferine.jpg" alt="Mirror in Krita:two batmen?" width="355" height="545" />You want to paint two mirrored Batmen?<br />
Yes, you can&#8230;with Krita!</p>
<p>I implemented this feature first for the brush engine that has features from Alchemy (the shape feature described above) as it is needed for David workflow. I realized soon that this can be generalized and done in our freehand tool, that means for every brush engine, that we have. Yes, now we have two buttons in the tool bar for vertical and horizontal mirroring. This mirroring is implemented as dab mirroring. When you smudge the pixels in your canvas or if you deform them with our brush engines, the pixels beneath your cursor are used. The result of the brush is mirrored and placed in the correct mirrored position., but the smudge or deform is not done on the image. It has it&#8217;s purpose too. It&#8217;s fast, and it&#8217;s fun also.</p>
<p style="text-align: center;"><img class="aligncenter" src="http://lukast.mediablog.sk/images/toolbar_krita24_mirroring.png" alt="Krita 2.4 ALPHA toolbar" width="600" height="58" />Red icons turn on the mirror feature (Krita 2.4 alpha)</p>
<p style="text-align: left;">Some of our artists usually use git master, so that they have the candies like mirroring faster, so I&#8217;m glad that I can share already some art produced with mirroring feature:</p>
<p style="text-align: left;"><a title="See full image in Krita Gallery" href="http://forum.kde.org/viewtopic.php?f=138&amp;t=93103" target="_blank"><img src="http://lukast.mediablog.sk/images/Ico_dY_mother_mirrored.jpeg" alt="IcoD: Mother Nature" width="200" height="200" /></a> <a title="A green troll by Animtim: link to Krita gallery" href="http://forum.kde.org/viewtopic.php?f=138&amp;t=93449"><img src="http://lukast.mediablog.sk/images/Animtim_troll_mirrored.jpg" alt="Animtim: Mirrored Troll" width="250" height="250" /></a></p>
<p>Some tests done by David Revoy in Krita with mirror feature:</p>
<p><a title="Full size image" href="http://lukast.mediablog.sk/images/fun-krita-sym.jpg" target="_self"><img style="border: 1px solid black;" src="http://lukast.mediablog.sk/images/fun-krita-sym_thumb.jpeg" alt="Fun with Krita mirror: Lovely girl" width="250" height="119" /></a> <a title="Full size image" href="http://lukast.mediablog.sk/images/krita-symetric-dragon.jpg" target="_self"><img style="border: 1px solid black;" src="http://lukast.mediablog.sk/images/krita-symetric-dragon_thumb.jpeg" alt="Scary dragon done with mirror" width="250" height="160" /></a></p>
<p><strong>Multihand tool</strong></p>
<p><em>Ok, but I want to mirror the behaviour, </em><em>I want to smudge or deform both sides!</em> maybe you say, dear Krita user. <em> </em> You want to smudge both sides of the image and mirrored. For that I created a new tool for you dawg. Tool, that does not mirror the result, but mirrors the stroke of the freehand tool. But about that in some future blogpost.</p>
]]></content:encoded>
			<wfw:commentRss>http://lukast.mediablog.sk/log/?feed=rss2&#038;p=361</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Krita part-time report</title>
		<link>http://lukast.mediablog.sk/log/?p=355</link>
		<comments>http://lukast.mediablog.sk/log/?p=355#comments</comments>
		<pubDate>Tue, 21 Dec 2010 21:31:15 +0000</pubDate>
		<dc:creator>LukasT</dc:creator>
				<category><![CDATA[Krita]]></category>

		<guid isPermaLink="false">http://lukast.mediablog.sk/log/?p=355</guid>
		<description><![CDATA[My full-time sponsored developing of Krita ended few months ago and I&#8217;m already working in my day job as software developer. So far it&#8217;s fun, I enjoy my new work place and colleges and basically I&#8217;m happy to work in &#8230; <a href="http://lukast.mediablog.sk/log/?p=355">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>My full-time sponsored developing of <a title="Krita -- your tool for digital painting" href="http://krita.org/">Krita</a> ended few months ago and I&#8217;m already working in my day job as software developer. So far it&#8217;s fun, I enjoy my new work place and colleges and basically I&#8217;m happy to work in the environment with people &#8212; that&#8217;s what I was missing about when working from home alone.</p>
<p>Silvio, the great Krita sponsor, is the man who decided to put Krita to the next level by sponsoring me and Dmitry working on Krita part-time. Big thanks to Silvio! I promised to blog about the progress, so here I go a little bit late as being busy with new work and life. I think part-time version worked fine so far. I managed to deliver 51 hours of work.</p>
<p>I started to fix the brush mask generators. I fixed few rendering bugs, usually some artifacts and I fixed little inconsistency with them. If you setup spikes to rectangle mask and change the ratio, you supposed to see the spikes in the mask. At least that is the behavior in GIMP and in Krita we did not computed the spikes for the rectangle brushes. Fixed. When I worked on this bug, I noticed that the quality of the brush mask in the curve mode is quite bad, especially when you rotate the mask. Oversampling helped. The curve mask works in that way that it samples the curve created by user. When you do oversampling, you take more samples from the curve. When the user wants circle with radius 10, I used to take 10 samples. Now with oversampling, I take 4x more, so 40 samples. I did some tests with it and 4x seems to be the right number of oversampling. Also GIMP uses this multiplier.</p>
<p style="text-align: center;"><img class="aligncenter" src="http://lukast.mediablog.sk/images/stars.jpg" alt="Stars" width="415" height="225" /><em>Using spikes in rectangle mask generator<br />
Let&#8217;s spray some stars</em></p>
<p>Then I worked on the brush outline bug. I added new option to the Pixel brush called density which can be used to <a title="David Revoy - Chalk test (density)" href="http://forum.kde.org/viewtopic.php?p=154400#p15440">simulate chalk effect</a>. Problem with density is that it creates complicated brush outlines. In Krita the brush outline is constructed from QPolygons inside QPainterPath. Pixel-sized holes causes, that the outline is constructed from a lot of small QPolygons. So far the fix is that when there is density used, the outline does not show the holes. This problem is quite big, if somebody creates brush with a huge amount of pixel-size holes, the outline will be rendered slow. Some more proper solution will be needed.</p>
<p>Then I decided to support Dmitry, who is also sponsored Krita developer, working part-time. He had a lot of bugs assigned before release and my code paths were quite release ready. So I investigated bugs with filters. I discovered that some filters in Krita are actually direct ports from GIMP and that means that they ignore colorspaces and work wrongly if you have e.g. RGB colorspace with 16-bit per channel or more. I managed to fix only blur filter with Cyrille Berger&#8217;s help and mentoring. We disabled other broken filters for the release.I did some bug triagging too.</p>
<p>Then I fixed some unit-tests which has to pass before the release. I fixed the autobrush unit test, that is crucial for Pixel Brush in Auto brush mode. And then I fixed benchmarks as they were crashing.I also fixed jpeg unit test, it failed with some version of JPEG library. Then I spent some time investigating the shape layer bug with scaling, but too much new code area to me. Sven managed to fixed it much more faster then me. I was also doing some icon work, I<a title="Bug with icon" href="https://bugs.kde.org/show_bug.cgi?id=251720" target="_blank"> fixed bug</a> with the select similar color icon.</p>
<p>That&#8217;s it. Next report after I deliver at least 50 hours <img src='http://lukast.mediablog.sk/log/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Thanks to the Krita developers and community for the support!</p>
]]></content:encoded>
			<wfw:commentRss>http://lukast.mediablog.sk/log/?feed=rss2&#038;p=355</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Harmony brush adoption in Krita: Sketch</title>
		<link>http://lukast.mediablog.sk/log/?p=347</link>
		<comments>http://lukast.mediablog.sk/log/?p=347#comments</comments>
		<pubDate>Tue, 28 Sep 2010 13:05:45 +0000</pubDate>
		<dc:creator>LukasT</dc:creator>
				<category><![CDATA[Krita]]></category>

		<guid isPermaLink="false">http://lukast.mediablog.sk/log/?p=347</guid>
		<description><![CDATA[Besides my sponsored work on Krita, I work in my spare time (if I find some) on some new features. I did a thesis about brush painting and I still enjoy this topic. So when I find some new interesting &#8230; <a href="http://lukast.mediablog.sk/log/?p=347">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Besides my sponsored work on Krita, I work in my spare time (if I find some) on some new features. I did a thesis about brush painting and I still enjoy this topic. So when I find some new interesting brush, that might be usable, I&#8217;m trying to adopt it in Krita as a new brush engine. Few months ago I discovered <a title="Project Harmony" href="http://mrdoob.com/projects/harmony/" target="_blank">project Harmony</a> and I liked the brushes there. Especially Sketchy, Shaded, Chrome, Fur and Long Fur. The idea for those brushes comes from concept of connecting neighbour points. The concept was realized first in <a title="Scribbler project" href="http://www.zefrank.com/scribbler/about.html" target="_blank">Scribbler</a> and Harmony was inspired. Then I adopted the Harmony version in Krita.</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" src="http://lukast.mediablog.sk/images/Tribal_Warrior_by_Animtim_thumb.jpg" alt="Animtim: Using the sketch here" width="300" height="300" /></p>
<p>So far it seems to be useful, fun brush. It was already used by artists, especially by Animtim in his <a title="First comic page in Krita: Sketch was used" href="http://krita.org/component/content/article/10-news/60-last-week-in-well-i-need-to-share-this-with-you" target="_self">first comic page in Krita</a> and also in <a title="Krita Galery: Warrior by Animtim" href="http://forum.kde.org/viewtopic.php?f=138&amp;t=89263" target="_blank">previous art</a>.</p>
<p style="text-align: center;"><img style="border: 1px solid black;" src="http://lukast.mediablog.sk/images/sketch_flower.jpeg" alt="Flower by Sketch" /><em></em></p>
<p style="text-align: center;"><em>Painted by software developer, with Sketch in Krita</em></p>
<p>The adoption has some advantages like undo/redo and some different and new features and one drawback.</p>
<p><strong>New features compared to Harmony</strong></p>
<p><em>Highly configurable<br />
</em></p>
<p>You can create new brushes, because I adopted all five brushes from Harmony as one big brush engine with parameters. I explored the code and came up with names for the parameters, which influence the stroke of the brush. So you can change the size of brush easily. In original Harmony project, the area is just circle with fixed size, that detects the points. In Krita it can be any brush tip (ellipse, flower, chain). I don&#8217;t how much is this usable, but at least I found ellipse quite useful compared to circle. Anyway you can create more effects compared to the Harmony version.</p>
<p>For performance reasons you will find in <em>Brush size</em> dialog checkbox called <em>Simple mode</em>, which means that again circle area will be used if check. For the size of the circle, the size of the brush tip you choose in <em>Brush tip</em> is used. What is the performance problem here? Maybe you need some big circle and rasterization of that circle as brush mask is quite slow. On the other hand checking the points in this simple mode in the circle is quite fast no matter of the size.</p>
<p>The main options for the brush are in Brush size option dialog. Let me describe them a little. <strong>Line width</strong> is new feature compared to Harmony. You can setup the width of the line that is used as connection between the points of the stroke.</p>
<p style="text-align: center;"><img style="border: 1px solid black;" src="http://lukast.mediablog.sk/images/sketch_linewidth.jpeg" alt="Line width in Sketch" width="326" height="391" /><em></em></p>
<p style="text-align: center;"><em>Sketch can stroke with different width</em> of the connection lines</p>
<p><strong>Offset scale </strong>is partially reverse engineered from Harmony. It influence the size of the connection line between two points. Actually it changes the offset of the start and end point of the connection line. Here I need to work on better UI, because now it is confusing. When you setup the offset to 0% or 100%, it looks same. Weird, right? You can see the demonstration on of it on the next picture.</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" src="http://lukast.mediablog.sk/images/sketch_offsetScale.jpg" alt="Offset scale" width="300" height="220" /><em>Offset scale: 60%, 90%, 100%, 200%</em></p>
<p><strong>Density </strong>influence the number of lines. When the brush detects point in the neighbour, it starts to think: <em>Should I make a connection? Hm..let&#8217;s look at the density.Ah, density is 100%, why I&#8217;m thinking about, of course make a connection. </em>When the density is e.g. 20% the brush think like this: <em>Hm&#8230;density is 20%, that means 1 line from 5 detections of neighbour points should be rasterized. Let&#8217;s roll the dice. Oh, I can&#8217;t make connection &#8211; neeeext! </em>There is also related checkbox option called <strong><em>Use distance density</em></strong>. This one uses the distance of the points and dice to decide if to make the connection. It changes the size of the brush due to the way it computes the density of the lines. If you setup 50% density, check the distance density and use the brush tip of size 64, it will usually make connection only for points that are in the distance of 32 pixels and will also roll a dice if it should make a connection. This option is from original Harmony project. I wanted to control the density  just by dice, but I wanted to make presets that mimics the Harmony and I needed this one.</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" src="http://lukast.mediablog.sk/images/sketch_density.jpeg" alt="Density" width="300" height="220" /><em>Density 100%, 20%, 1%</em></p>
<p><strong>Magnetify </strong>option decides whether to connect the current point with points from stroke or to make line with offset right and left and the current mouse position. If the brush is not magnetifying, the effect creates nice fur effect. Tweak the <strong>offset scale</strong> to get nice effects.</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 1px solid black;" src="http://lukast.mediablog.sk/images/sketch_furEffect.jpg" alt="Furry flowers" width="350" height="356" /><em>Fur effect in Sketch</em></p>
<p><strong>Random opacity </strong>checked causes that in every line has random opacity. This effect was present in Harmony.<br />
<strong>Random RGB </strong>checked causes that the color of the single line is distorted per channel by random generator. This was needed to support Chrome from Harmony<br />
<strong>Distance density</strong> checked causes that the connection line will have density according the distance between points that are going to be connected.<br />
<strong>Paint connection line </strong>checked paints connection line between two positions of the brush always (previous mouse position and current mouse position).</p>
<p>Then I added support for tablet to the Sketch. I implemented it through standard Krita dialogs like <strong>Size</strong> sensor, <strong>Opacity</strong> sensor and <strong>Rotation</strong> sensor. So you can use also different sensors to change the size like fade or for rotation drawing angle. <strong>Size</strong> sensor changes the size of the area where the detection occurs. Opacity sensor changes the opacity of the dab. In one dab there can be many lines rendered as many points are checked &#8212; it is not per line opacity, that&#8217;s why there is <strong>Random opacity. Rotation</strong> sensor<strong> </strong>rotate the brush tip shape, which is used for detecting the neighbour points. I usually use the ellipse and setup the Rotation sensor to drawing angle. Thanks to the lately added dynamic outlines you can see where it is detecting the points.</p>
<p><em>UI feedback</em></p>
<p>You can see the size of the brush on canvas. In Harmony you see just the cursor. I have to improve the situation &#8211; somehow the center of the brush is also important. You can switch to showing the cursor instead of the brush outline to temporary workaround it but I plan to add some cross in the middle of the shape.</p>
<p><em>Undo/Redo</em></p>
<p>You can&#8217;t undo the stroke in Harmony, you can in Krita <img src='http://lukast.mediablog.sk/log/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><strong>Missing feature compared to Harmony</strong></p>
<p>The detection between the neighbour points occurs only per stroke in Krita&#8217;s adoption. In Harmony you can connect to points from previous strokes. I put this problem on the feature list for 2.4 as that is not support in our API yet &#8211; to be able to store information about previous strokes somewhere. Brush engine life span takes from the start of the stroke to the end of the stroke. You don&#8217;t have information about previous stroke available in the brush engine. Slovak (me) and Russian (Dmitry <span style="text-decoration: line-through;">Medvedev</span> Kazakov) Krita developers will take care of this feature together as it needs to work correctly with undo/redo. Question is if we also want to connect to points only on the same layer or per layer or make it optional. We will find out something.</p>
<p><strong>Future</strong></p>
<p>This brush engine is in experimental state and will be released in Krita 2.3. Experimental brush engine means that the presets you make might not work in Krita 2.4 as the UI will be changed (improved of course) and the brush engine is still under development. I hope to add the missing feature for 2.4 and polish the UI.</p>
<p><strong>Finally</strong></p>
<p>There are presets that mimics the Harmony brushes: Sketchy, Shaded, Chrome and Fur (I lost the Long Fur preset, but I will try to fix it). They are installed with Krita, so you can explore them and tweak them as you wish. Preset is the setting of the brush engine saved on the disk if you did not know. The Ribbon brush from Harmony is already in Krita, behaves little differently and it is called Particle brush in Krita. Other brush engines are for me less usable and quite specific so, I do not plan to port them (yet).</p>
<p>Thanks<strong> </strong>goes to the author of Harmony, Mr. Doob for co-operation. He wrote about Harmony <a title="Blog about hamony" href="http://mrdoob.com/blog/post/689" target="_blank">on his blog. </a>Check the <a title="Flickr: Scribbler images " href="http://www.flickr.com/search/?q=scribbler+-bengal&amp;m=text">Flickr</a>, <a title="Google Images: Harmony tool" href="http://www.google.com/images?q=Painting+with+Harmony+procedural+drawing+tool">Google</a> where you find images that can be done with Sketch brush in Krita.</p>
<p>If you create (please, do..) something nice, please, sent it to our gallery at <a title="KDE/Krita: forum" href="http://forum.kde.org/krita" target="_self">Krita forum</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://lukast.mediablog.sk/log/?feed=rss2&#038;p=347</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Week 38: On the path to fix smudge bugs</title>
		<link>http://lukast.mediablog.sk/log/?p=344</link>
		<comments>http://lukast.mediablog.sk/log/?p=344#comments</comments>
		<pubDate>Tue, 28 Sep 2010 09:43:37 +0000</pubDate>
		<dc:creator>LukasT</dc:creator>
				<category><![CDATA[Krita]]></category>

		<guid isPermaLink="false">http://lukast.mediablog.sk/log/?p=344</guid>
		<description><![CDATA[The week started with some fixes in Dyna tool I already wrote about in the previous blog entry. Then I started to work on bug with smudge. And I still did not fix the issue completely. I started to investigate &#8230; <a href="http://lukast.mediablog.sk/log/?p=344">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The week started with some fixes in Dyna tool I already wrote about in the previous blog entry. Then I started to work on <a title="Bug on bugs.kde.org" href="https://bugs.kde.org/show_bug.cgi?id=245130" target="_self">bug with smudge</a>.  And I still did not fix the issue completely. I started to investigate  the smudge. I did not write that brush engine, so it was new code for  me. I already did some bug fixing there previously. But the code has  been changed in the meantime by Pentalis, our Google Summer Of Code 2010  student who by the way did great testing for smudge.  I had to start to  understand the code again. I did some small cosmetic changes in the  code first.</p>
<p>Then I started to track down the bug. Smudge  currently gives some blocky effect we need to fix. I started to code  small unit tests to test various code places. I tested KisPainter and  that one seems to be ok as other composite operations work correctly.  Then I started to test the composite operation, which Cyrille wrote  recently for the smudge and I discovered the problem in it. It does not  work as it supposed to and instead of copying according the mask, it is  doing strange things by copying rectangular area of pixels. You can see  it on images created by tests TestKoCompositeOps and KisAutobrushTest.</p>
<p>When  preparing the unit test, I discovered segmentation fault when  converting part of the KisFixedPaintDevice to QImage. Fixed.Finally I  commited the test I prepared. Now I&#8217;m going to try to fix the composite  copy operation. Patience is the key to fix this bug. That&#8217;s all for the  week 38.</p>
<p>Krita is becoming more robust and stable. Krita community is working in full swing  fixing various bugs. I suggest you to go and compile trunk and play  with it. If you find some problem, bug, crash or slow performance,  please report it to us.</p>
]]></content:encoded>
			<wfw:commentRss>http://lukast.mediablog.sk/log/?feed=rss2&#038;p=344</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
