<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>making good graphics</title>
		<link>http://www.allegro.cc/forums/view/618499</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Sun, 12 Sep 2021 23:47:41 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>As I&#39;m concentrating on the drawing side of game creation at the moment I&#39;ve been writing an art program lately.</p><p>What it&#39;s done here is take a black and white image and a colour image (the pixies) and blended them together in a way I couldn&#39;t get Paint Shop Pro 7 to do.</p><p>Posting a WIP in case anyone&#39;s interested.</p><p><span class="remote-thumbnail"><span class="json">{"name":"613030","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/d\/a\/da308698209674733bcdb137ecd78884.png","w":2500,"h":1786,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/d\/a\/da308698209674733bcdb137ecd78884"}</span><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/d/a/da308698209674733bcdb137ecd78884-240.jpg" alt="613030" width="240" height="171" /></span>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (William Labbett)</author>
		<pubDate>Thu, 09 Sep 2021 04:29:13 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p><img src="http://www.allegro.cc/forums/smileys/cheesy.gif" alt=";D" border="0" />, i already see it before. <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (RmBeer2)</author>
		<pubDate>Thu, 09 Sep 2021 05:06:21 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>It looks neat, but I wonder what it is that you couldn&#39;t do in Paint Shop Pro?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (amarillion)</author>
		<pubDate>Thu, 09 Sep 2021 17:03:57 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I thought I&#39;d posted it before, but this time it&#39;s partway coloured which I guess is not very exciting.</p><p><span class="remote-thumbnail"><span class="json">{"name":"613031","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/4\/2\/42312207b4473362dd0d99ab32f4b487.png","w":325,"h":380,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/4\/2\/42312207b4473362dd0d99ab32f4b487"}</span><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/4/2/42312207b4473362dd0d99ab32f4b487-240.jpg" alt="613031" width="240" height="280" /></span></p><p>This is an example of the best I could do with PSP7.</p><p>What I&#39;ve done above is add the painted version of the pixie to the black and white image<br />as another layer and reduced it&#39;s opacity.</p><p>What my program does is :</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><span class="c">/* shade_coloured_picture_process() : takes the colour bitmap and black and white bitmap and</span>
<span class="number">  2</span><span class="c">blends them. */</span>
<span class="number">  3</span><span class="k1">int</span> shade_coloured_picture_process<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_LOCKED_REGION"><span class="a">ALLEGRO_LOCKED_REGION</span></a> <span class="k3">*</span>coloured_bitmap, <a href="http://www.allegro.cc/manual/ALLEGRO_LOCKED_REGION"><span class="a">ALLEGRO_LOCKED_REGION</span></a> <span class="k3">*</span>check_bitmap_lock_ptr, <a href="http://www.allegro.cc/manual/ALLEGRO_LOCKED_REGION"><span class="a">ALLEGRO_LOCKED_REGION</span></a> <span class="k3">*</span>clone, <span class="k1">int</span> process_instructions<span class="k2">[</span>NUMBER_OF_INTEGERS_FOR_PROCESSING<span class="k2">]</span><span class="k2">)</span>
<span class="number">  4</span><span class="k2">{</span>
<span class="number">  5</span>   <span class="k1">unsigned</span> <span class="k1">char</span> <span class="k3">*</span>out_ptr, <span class="k3">*</span>ptr2<span class="k2">;</span>
<span class="number">  6</span>   <span class="k1">int</span> r, g, b<span class="k2">;</span>
<span class="number">  7</span>   <span class="k1">int</span> nr, ng, nb<span class="k2">;</span>
<span class="number">  8</span>   <span class="k1">int</span> x, y<span class="k2">;</span>
<span class="number">  9</span>   <span class="k1">int</span> grey<span class="k2">;</span>
<span class="number"> 10</span>
<span class="number"> 11</span>   <span class="k1">unsigned</span> <span class="k1">int</span> new_colour<span class="k2">;</span>
<span class="number"> 12</span>
<span class="number"> 13</span>
<span class="number"> 14</span>   <span class="k1">for</span><span class="k2">(</span>y <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> y <span class="k3">&lt;</span> process_instructions<span class="k2">[</span>LOCKED_BITMAP_ONE_HEIGHT_INDEX<span class="k2">]</span><span class="k2">;</span> <span class="k3">+</span><span class="k3">+</span>y<span class="k2">)</span>
<span class="number"> 15</span>   <span class="k2">{</span>
<span class="number"> 16</span>      <span class="k1">for</span><span class="k2">(</span>x <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> x <span class="k3">&lt;</span> process_instructions<span class="k2">[</span>LOCKED_BITMAP_TWO_WIDTH_INDEX<span class="k2">]</span><span class="k2">;</span> <span class="k3">+</span><span class="k3">+</span>x<span class="k2">)</span>
<span class="number"> 17</span>      <span class="k2">{</span>
<span class="number"> 18</span>         ptr2 <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span><span class="k1">unsigned</span> <span class="k1">char</span> <span class="k3">*</span><span class="k2">)</span> coloured_bitmap-&gt;data<span class="k2">)</span> <span class="k3">+</span> coloured_bitmap-&gt;pitch <span class="k3">*</span> y <span class="k3">+</span> x <span class="k3">*</span> <span class="n">4</span><span class="k2">;</span>
<span class="number"> 19</span>
<span class="number"> 20</span>         <span class="c">/* Get the r, g, b of the pixel on the colour bitmap. */</span>
<span class="number"> 21</span>
<span class="number"> 22</span>         r <span class="k3">=</span> <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span> <span class="k3">*</span><span class="k2">(</span>ptr2 <span class="k3">+</span> <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 23</span>     g <span class="k3">=</span> <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span> <span class="k3">*</span><span class="k2">(</span>ptr2 <span class="k3">+</span> <span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 24</span>     b <span class="k3">=</span> <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span> <span class="k3">*</span><span class="k2">(</span>ptr2 <span class="k3">+</span> <span class="n">2</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 25</span>
<span class="number"> 26</span>         out_ptr <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span><span class="k1">unsigned</span> <span class="k1">char</span> <span class="k3">*</span><span class="k2">)</span> clone-&gt;data<span class="k2">)</span> <span class="k3">+</span> clone-&gt;pitch <span class="k3">*</span> y <span class="k3">+</span> x <span class="k3">*</span> <span class="n">4</span><span class="k2">;</span>
<span class="number"> 27</span>
<span class="number"> 28</span>     grey <span class="k3">=</span> <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span> <span class="k3">*</span><span class="k2">(</span>out_ptr<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 29</span>     nr <span class="k3">=</span> <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span> <span class="k2">(</span> <span class="k2">(</span><span class="k2">(</span><span class="k1">float</span><span class="k2">)</span> grey <span class="k3">/</span> <span class="n">255</span>.<span class="n">0f</span><span class="k2">)</span> <span class="k3">*</span> <span class="k2">(</span><span class="k1">float</span><span class="k2">)</span> r<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 30</span>     ng <span class="k3">=</span> <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span> <span class="k2">(</span> <span class="k2">(</span><span class="k2">(</span><span class="k1">float</span><span class="k2">)</span> grey <span class="k3">/</span> <span class="n">255</span>.<span class="n">0f</span><span class="k2">)</span> <span class="k3">*</span> <span class="k2">(</span><span class="k1">float</span><span class="k2">)</span> g<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 31</span>     nb <span class="k3">=</span> <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span> <span class="k2">(</span> <span class="k2">(</span><span class="k2">(</span><span class="k1">float</span><span class="k2">)</span> grey <span class="k3">/</span> <span class="n">255</span>.<span class="n">0f</span><span class="k2">)</span> <span class="k3">*</span> <span class="k2">(</span><span class="k1">float</span><span class="k2">)</span> b<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 32</span>
<span class="number"> 33</span>
<span class="number"> 34</span>     <span class="k1">if</span><span class="k2">(</span> <span class="k3">*</span><span class="k2">(</span><span class="k2">(</span><span class="k1">unsigned</span> <span class="k1">int</span> <span class="k3">*</span><span class="k2">)</span> ptr2<span class="k2">)</span> <span class="k3">!</span><span class="k3">=</span> MASK_COLOUR_ABGR <span class="k2">)</span>
<span class="number"> 35</span>         <span class="k2">{</span>
<span class="number"> 36</span>            <span class="c">/* this pixel on the coloured bitmap is not the mask colour so use blended</span>
<span class="number"> 37</span><span class="c">            pixel */</span>
<span class="number"> 38</span>
<span class="number"> 39</span>            new_colour <span class="k3">=</span> <span class="n">255</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="n">24</span> <span class="k3">|</span>  <span class="k2">(</span><span class="k1">unsigned</span> <span class="k1">char</span><span class="k2">)</span> nb <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="n">16</span> <span class="k3">|</span> <span class="k2">(</span> <span class="k1">unsigned</span> <span class="k1">char</span> <span class="k2">)</span> ng <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="n">8</span> <span class="k3">|</span> <span class="k2">(</span><span class="k2">(</span> <span class="k1">unsigned</span> <span class="k1">char</span> <span class="k2">)</span> nr  <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 40</span>        <span class="k3">*</span><span class="k2">(</span><span class="k2">(</span><span class="k1">unsigned</span> <span class="k1">int</span> <span class="k3">*</span><span class="k2">)</span> <span class="k2">(</span>out_ptr<span class="k2">)</span><span class="k2">)</span> <span class="k3">=</span> new_colour<span class="k2">;</span>
<span class="number"> 41</span>         <span class="k2">}</span>
<span class="number"> 42</span>      <span class="k2">}</span>
<span class="number"> 43</span>   <span class="k2">}</span>
<span class="number"> 44</span>
<span class="number"> 45</span>   <span class="k1">return</span> PROCESS_RESULT_OKAY<span class="k2">;</span>
<span class="number"> 46</span><span class="k2">}</span>
</div></div><p>

Basically I&#39;ve forgotten exactly what it does but I think approximately it does the equivalent of drawing in the medium used for the black and white image (biro) over the colour painting. Since I draw first with the biro I can&#39;t then paint underneath it on the paper so this function achieves that.</p><p>There is a big difference between the two images.</p><p>BTW, another thing I could do with PSP is rotate an image underneath a superimposed translucent layer. I was trying to rotate a scanned in painting so that the vertical lines on it were exactly vertical on a bitmap (I had trouble scanning it in that way).<br />I needed a translucent rectangle over it which stretched from top to bottom so I could see 2 straight vertical lines and then I needed to rotate the painting underneath. I could do this in PSP so I decided to add this facility to my program.</p><p>Perhaps I&#39;m just being stupid but it pleases me. I&#39;m aware there could be something I don&#39;t know which would have saved all the work. It&#39;s a small project this art program. I&#39;m doing it also because I want to get better at coding and it&#39;s only a small project so I think I can get a first version of it finished.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (William Labbett)</author>
		<pubDate>Thu, 09 Sep 2021 22:29:27 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>the variable &#39;gray&#39; only takes the red color of the bitmap &#39;clone&#39; to make the type of blending. As I think it does, it reduces the color to black according to the opacity of the cloned image, if there is any black trace on a white background, that translates directly to the color image, but only taking the intensity of the red.</p><p>Although I can&#39;t see its result in the displayed images.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (RmBeer2)</author>
		<pubDate>Thu, 09 Sep 2021 23:10:38 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>GIMP has a nice colorization tool. It uses a brush to tint the background.</p><p>I&#39;ve used it with success before to color pencil sketches that I&#39;ve scanned.</p><p>Here&#39;s an example :</p><p>Before :<br /><a href="https://www.deviantart.com/nemonameless/art/My-friend-Liddee-2-Curly-Hair-pencil-292944859">https://www.deviantart.com/nemonameless/art/My-friend-Liddee-2-Curly-Hair-pencil-292944859</a></p><p>After :<br /><a href="https://www.deviantart.com/nemonameless/art/My-friend-Liddee-2-Curly-Hair-colored-292944133">https://www.deviantart.com/nemonameless/art/My-friend-Liddee-2-Curly-Hair-colored-292944133</a>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Fri, 10 Sep 2021 18:51:15 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>In many layer-based programs this would be defined by the blending mode that you choose for the top layer :
</p><ul><li><p>If it&#39;s the colored one, you would blend it as &quot;Colorize&quot;
</p></li><li><p>If it&#39;s the greyscale one, you would blend it as Luminance / Lightness
</p></li><li><p>In either case, a Multiply mode would also fit the bill - Because one of the two layers happens to be 100% greyscale.</p></li></ul><p>Note that multiplying RGB channels means you&#39;re doing math in the RGB color space. Having one layer greyscale limits the damage, but the effect of gammma still applies. So you may obtain a more intuitive coloring if you perform gamma correction before doing the math, and reverse the conversion at the end.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Audric)</author>
		<pubDate>Sat, 11 Sep 2021 02:05:49 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks Edgar and Audric. I couldn&#39;t check out those drawings as my ISP blocks loads of sites from my viewing. I tried fixing it to no avail.</p><p>Interesting feedback, lots I had no idea about and stuff to look into.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (William Labbett)</author>
		<pubDate>Sat, 11 Sep 2021 02:37:48 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I uploaded them here so you can see them :</p><p><span class="remote-thumbnail"><span class="json">{"name":"613032","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/2\/e\/2e8f08da28742fa202378032c4ed65fe.jpg","w":1020,"h":1404,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/2\/e\/2e8f08da28742fa202378032c4ed65fe"}</span><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/2/e/2e8f08da28742fa202378032c4ed65fe-240.jpg" alt="613032" width="240" height="330" /></span></p><p><span class="remote-thumbnail"><span class="json">{"name":"613033","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/e\/2\/e22a561367ca5c68b6840401be498c67.jpg","w":1020,"h":1404,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/e\/2\/e22a561367ca5c68b6840401be498c67"}</span><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/e/2/e22a561367ca5c68b6840401be498c67-240.jpg" alt="613033" width="240" height="330" /></span>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Sat, 11 Sep 2021 04:46:37 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks Edgar. I understand now. I&#39;ll have to try it out on my drawing.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (William Labbett)</author>
		<pubDate>Sun, 12 Sep 2021 23:47:41 +0000</pubDate>
	</item>
</rss>
