<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Bitmap Draw Stacking</title>
		<link>http://www.allegro.cc/forums/view/608379</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Wed, 21 Sep 2011 14:35:38 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Is it possible to draw a rotated, scaled bitmap region? I am looking for functionality similar to DirectX&#39;s transforms.  Basically, I am doing something like this now</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="k1">void</span> Sprite::draw<span class="k2">(</span><span class="k2">)</span>
<span class="number">  2</span>  <span class="k2">{</span>
<span class="number">  3</span>        <span class="c">//calculate source frame location</span>
<span class="number">  4</span>    <span class="k1">int</span> fx <span class="k3">=</span> <span class="k2">(</span>this-&gt;curframe % this-&gt;animcolumns<span class="k2">)</span> <span class="k3">*</span> this-&gt;width<span class="k2">;</span>
<span class="number">  5</span>    <span class="k1">int</span> fy <span class="k3">=</span> <span class="k2">(</span>this-&gt;curframe <span class="k3">/</span> this-&gt;animcolumns<span class="k2">)</span> <span class="k3">*</span> this-&gt;height<span class="k2">;</span>
<span class="number">  6</span>
<span class="number">  7</span>        <span class="c">//draw the sprite frame</span>
<span class="number">  8</span>    <a href="http://www.allegro.cc/manual/al_draw_bitmap_region"><span class="a">al_draw_bitmap_region</span></a><span class="k2">(</span>this-&gt;image, fx, fy, this-&gt;width, this-&gt;height, this-&gt;getX<span class="k2">(</span><span class="k2">)</span>, this-&gt;getY<span class="k2">(</span><span class="k2">)</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  9</span>  <span class="k2">}</span>
</div></div><p>

I would like to expand the capabilities, but I am coming up short
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (InfiniteLoop)</author>
		<pubDate>Sun, 18 Sep 2011 07:13:14 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Allegro has transforms as well. See <a href="http://docs.liballeg.org">http://docs.liballeg.org</a>. You could use the code you have with some added transformations.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Trent Gamblin)</author>
		<pubDate>Sun, 18 Sep 2011 07:16:55 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p><span class="source-code"><a href="http://www.allegro.cc/manual/al_draw_scaled_rotated_bitmap"><span class="a">al_draw_scaled_rotated_bitmap</span></a></span>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Sun, 18 Sep 2011 07:18:29 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks guys. Edgar, that would work but I need to draw regions.</p><p>Trent, can you offer any insight on how I would use Allegro transforms to handle scaling and rotation?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (InfiniteLoop)</author>
		<pubDate>Sun, 18 Sep 2011 07:23:50 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>They work exactly like OpenGL transforms, except the first one you specify is applied first not last.</p><p>Example</p><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/ALLEGRO_TRANSFORM"><span class="a">ALLEGRO_TRANSFORM</span></a> t<span class="k2">;</span>
<a href="http://www.allegro.cc/manual/al_copy_transform"><span class="a">al_copy_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>t, <a href="http://www.allegro.cc/manual/al_get_current_transform"><span class="a">al_get_current_transform</span></a><span class="k2">)</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/al_scale_transform"><span class="a">al_scale_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>t, scaleX, scaleY<span class="k2">)</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/al_rotate_transform"><span class="a">al_rotate_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>t, someAngle<span class="k2">)</span><span class="k2">;</span> <span class="c">// scales about Z axis</span>
</pre></div></div><p>

All transforms in Allegro presently are 2D.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Trent Gamblin)</author>
		<pubDate>Sun, 18 Sep 2011 07:28:16 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p><span class="source-code"><a href="http://www.allegro.cc/manual/al_create_sub_bitmap"><span class="a">al_create_sub_bitmap</span></a></span>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Sun, 18 Sep 2011 07:28:20 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks again guys.</p><p>After performing scaling and rotating transforms, do I need to apply with al_use_transform? </p><p>Also, since this is only for a single sprite, how do I prevent the transform from applying to other sprites? How do I reset it?</p><p>Thanks
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (InfiniteLoop)</author>
		<pubDate>Sun, 18 Sep 2011 07:30:56 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Yes, you have to use al_use_transform. You have to save the old transformation if you want to reset back to it.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Trent Gamblin)</author>
		<pubDate>Sun, 18 Sep 2011 07:31:58 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>OK, I am using the following code and my image is going nuts:</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="number">  2</span><span class="k1">void</span> Sprite::transform<span class="k2">(</span><span class="k2">)</span>
<span class="number">  3</span>  <span class="k2">{</span>
<span class="number">  4</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_TRANSFORM"><span class="a">ALLEGRO_TRANSFORM</span></a> T<span class="k2">;</span>
<span class="number">  5</span>    <a href="http://www.allegro.cc/manual/al_identity_transform"><span class="a">al_identity_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>T<span class="k2">)</span><span class="k2">;</span>
<span class="number">  6</span>    <a href="http://www.allegro.cc/manual/al_scale_transform"><span class="a">al_scale_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>T, this-&gt;getScale<span class="k2">(</span><span class="k2">)</span>, this-&gt;getScale<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  7</span>    <a href="http://www.allegro.cc/manual/al_rotate_transform"><span class="a">al_rotate_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>T, this-&gt;getRotation<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  8</span>    <a href="http://www.allegro.cc/manual/al_use_transform"><span class="a">al_use_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>T<span class="k2">)</span><span class="k2">;</span>
<span class="number">  9</span>  <span class="k2">}</span>
<span class="number"> 10</span>
<span class="number"> 11</span>  <span class="k1">void</span> Sprite::draw<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 12</span>  <span class="k2">{</span>
<span class="number"> 13</span>        <span class="c">//calculate source frame location</span>
<span class="number"> 14</span>    <span class="k1">int</span> fx <span class="k3">=</span> <span class="k2">(</span>this-&gt;curframe % this-&gt;animcolumns<span class="k2">)</span> <span class="k3">*</span> this-&gt;width<span class="k2">;</span>
<span class="number"> 15</span>    <span class="k1">int</span> fy <span class="k3">=</span> <span class="k2">(</span>this-&gt;curframe <span class="k3">/</span> this-&gt;animcolumns<span class="k2">)</span> <span class="k3">*</span> this-&gt;height<span class="k2">;</span>
<span class="number"> 16</span>
<span class="number"> 17</span>        <span class="c">//draw the sprite frame</span>
<span class="number"> 18</span>    this-&gt;transform<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 19</span>    <a href="http://www.allegro.cc/manual/al_draw_bitmap_region"><span class="a">al_draw_bitmap_region</span></a><span class="k2">(</span>this-&gt;image, fx, fy, this-&gt;width, this-&gt;height, this-&gt;getX<span class="k2">(</span><span class="k2">)</span>, this-&gt;getY<span class="k2">(</span><span class="k2">)</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 20</span>  <span class="k2">}</span>
</div></div><p>

Scale is 1 and rotation is based on the system clock. I want to image to spin in place, instead it is flying all around the screen</p><p>EDIT: actually, I see that it is rotating about the top left corner. How do I make it rotate about the middle?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (InfiniteLoop)</author>
		<pubDate>Sun, 18 Sep 2011 07:42:23 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You&#39;ll have to add a few translate transforms in there.</p><p>identity<br />translate (to origin, center on the middle of your region)<br />scale<br />rotate<br />translate (back to where your sprite was)<br />use transform
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Sun, 18 Sep 2011 08:03:34 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I am sorry for my density, but I am a little lost at this point. I have no idea how to structure my transform statements. I see where you told my to translate to &quot;origin&quot; and the center of my &quot;region&quot; but I am not sure what that means. Could you help me with some sample code maybe? I tried the following, but it didn&#39;t work. </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><a href="http://www.allegro.cc/manual/ALLEGRO_TRANSFORM"><span class="a">ALLEGRO_TRANSFORM</span></a> T<span class="k2">;</span>
<span class="number"> 2</span>    <a href="http://www.allegro.cc/manual/al_identity_transform"><span class="a">al_identity_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>T<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 3</span>    <a href="http://www.allegro.cc/manual/al_translate_transform"><span class="a">al_translate_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>T, this-&gt;getX<span class="k2">(</span><span class="k2">)</span> <span class="k3">+</span> this-&gt;width <span class="k3">/</span> <span class="n">2</span>, this-&gt;getY<span class="k2">(</span><span class="k2">)</span> <span class="k3">+</span> this-&gt;height <span class="k3">/</span> <span class="n">2</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 4</span>    <a href="http://www.allegro.cc/manual/al_scale_transform"><span class="a">al_scale_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>T, this-&gt;getScale<span class="k2">(</span><span class="k2">)</span>, this-&gt;getScale<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 5</span>    <a href="http://www.allegro.cc/manual/al_rotate_transform"><span class="a">al_rotate_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>T, this-&gt;getRotation<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 6</span>    <a href="http://www.allegro.cc/manual/al_translate_transform"><span class="a">al_translate_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>T, <span class="k3">-</span>this-&gt;width <span class="k3">/</span> <span class="n">2</span>, <span class="k3">-</span>this-&gt;height <span class="k3">/</span> <span class="n">2</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 7</span>    <a href="http://www.allegro.cc/manual/al_use_transform"><span class="a">al_use_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>T<span class="k2">)</span><span class="k2">;</span>
</div></div><p>

EDIT: am I assuming the camera is looking right at the center of my screen? Then what, I have to tell the camera to move where?</p><p>EDIT AGAIN: this is the code I am now using. The image rotates about the center of the screen, but in a wide arc. I would like the image to rotate in place.</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><a href="http://www.allegro.cc/manual/ALLEGRO_TRANSFORM"><span class="a">ALLEGRO_TRANSFORM</span></a> T<span class="k2">;</span>
<span class="number"> 2</span>    <a href="http://www.allegro.cc/manual/al_identity_transform"><span class="a">al_identity_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>T<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 3</span>    <a href="http://www.allegro.cc/manual/al_translate_transform"><span class="a">al_translate_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>T, this-&gt;getX<span class="k2">(</span><span class="k2">)</span> <span class="k3">+</span> this-&gt;width <span class="k3">/</span> <span class="n">2</span>, this-&gt;getY<span class="k2">(</span><span class="k2">)</span> <span class="k3">+</span> this-&gt;height <span class="k3">/</span> <span class="n">2</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 4</span>    <a href="http://www.allegro.cc/manual/al_scale_transform"><span class="a">al_scale_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>T, this-&gt;getScale<span class="k2">(</span><span class="k2">)</span>, this-&gt;getScale<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 5</span>    <a href="http://www.allegro.cc/manual/al_rotate_transform"><span class="a">al_rotate_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>T, this-&gt;getRotation<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 6</span>    <a href="http://www.allegro.cc/manual/al_translate_transform"><span class="a">al_translate_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>T, g_engine-&gt;getScreenWidth<span class="k2">(</span><span class="k2">)</span> <span class="k3">/</span> <span class="n">2</span>, g_engine-&gt;getScreenHeight<span class="k2">(</span><span class="k2">)</span> <span class="k3">/</span> <span class="n">2</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 7</span>    <a href="http://www.allegro.cc/manual/al_use_transform"><span class="a">al_use_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>T<span class="k2">)</span><span class="k2">;</span>
</div></div><p>

Also, is the following acceptable for resetting the transform?</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">const</span> <a href="http://www.allegro.cc/manual/ALLEGRO_TRANSFORM"><span class="a">ALLEGRO_TRANSFORM</span></a> <span class="k3">*</span>current <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_current_transform"><span class="a">al_get_current_transform</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>

        <span class="c">//draw the sprite frame</span>
    this-&gt;beginTransform<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
    <a href="http://www.allegro.cc/manual/al_draw_bitmap_region"><span class="a">al_draw_bitmap_region</span></a><span class="k2">(</span>this-&gt;image, fx, fy, this-&gt;width, this-&gt;height, this-&gt;getX<span class="k2">(</span><span class="k2">)</span>, this-&gt;getY<span class="k2">(</span><span class="k2">)</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>

    <a href="http://www.allegro.cc/manual/al_use_transform"><span class="a">al_use_transform</span></a><span class="k2">(</span>current<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (InfiniteLoop)</author>
		<pubDate>Sun, 18 Sep 2011 08:14:52 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Try:
</p><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/ALLEGRO_TRANSFORM"><span class="a">ALLEGRO_TRANSFORM</span></a> T<span class="k2">;</span>
<a href="http://www.allegro.cc/manual/al_identity_transform"><span class="a">al_identity_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>T<span class="k2">)</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/al_translate_transform"><span class="a">al_translate_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>T, <span class="k3">-</span>this-&gt;width <span class="k3">/</span> <span class="n">2</span>, <span class="k3">-</span>this-&gt;height <span class="k3">/</span> <span class="n">2</span><span class="k2">)</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/al_scale_transform"><span class="a">al_scale_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>T, this-&gt;getScale<span class="k2">(</span><span class="k2">)</span>, this-&gt;getScale<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/al_rotate_transform"><span class="a">al_rotate_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>T, this-&gt;getRotation<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/al_translate_transform"><span class="a">al_translate_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>T, this-&gt;getX<span class="k2">(</span><span class="k2">)</span> <span class="k3">+</span> this-&gt;width <span class="k3">/</span> <span class="n">2</span>, this-&gt;getY<span class="k2">(</span><span class="k2">)</span> <span class="k3">+</span> this-&gt;height <span class="k3">/</span> <span class="n">2</span><span class="k2">)</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/al_use_transform"><span class="a">al_use_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>T<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

</p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/608379/931446#target">InfiniteLoop</a> said:</div><div class="quote"><p>
Also, is the following acceptable for resetting the transform?
</p></div></div><p>
No, you need to copy it elsewhere:</p><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/ALLEGRO_TRANSFORM"><span class="a">ALLEGRO_TRANSFORM</span></a> old<span class="k2">;</span>
<a href="http://www.allegro.cc/manual/al_copy_transform"><span class="a">al_copy_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>old, <a href="http://www.allegro.cc/manual/al_get_current_transform"><span class="a">al_get_current_transform</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>

this-&gt;beginTransform<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/al_draw_bitmap_region"><span class="a">al_draw_bitmap_region</span></a><span class="k2">(</span>this-&gt;image, fx, fy, this-&gt;width, this-&gt;height, this-&gt;getX<span class="k2">(</span><span class="k2">)</span>, this-&gt;getY<span class="k2">(</span><span class="k2">)</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>

<a href="http://www.allegro.cc/manual/al_use_transform"><span class="a">al_use_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>old<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (SiegeLord)</author>
		<pubDate>Sun, 18 Sep 2011 08:27:38 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thank you siege, it is much more tame now, but it is still rotating about some point just past the upper left hand corner of the image. What is doing the &quot;looking&quot;? What do I need to be &quot;looking&quot; at? I get rotation and scaling, but when you throw in translation I am lost.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (InfiniteLoop)</author>
		<pubDate>Sun, 18 Sep 2011 08:34:01 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Oh, I missed one bit. With the set of transforms I suggested you need to draw like this:</p><p><span class="source-code"><a href="http://www.allegro.cc/manual/al_draw_bitmap_region"><span class="a">al_draw_bitmap_region</span></a><span class="k2">(</span>this-&gt;image, fx, fy, this-&gt;width, this-&gt;height, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></span></p><p>Note the 0&#39;s in the destination: the transformation takes entirely of the positioning.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (SiegeLord)</author>
		<pubDate>Sun, 18 Sep 2011 08:42:28 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>My God! You sir are a gentleman and a scholar! That works brilliantly. Would it be too much to ask (and it doesn&#39;t have to be now) for you to explain why that worked? I am not sure how I would draw it at 0, 0 and have it appear where I want.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (InfiniteLoop)</author>
		<pubDate>Sun, 18 Sep 2011 08:46:50 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>One question - are your coordinates in real space or screen space?
</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="number">  2</span><span class="k1">int</span> cx <span class="k3">=</span> this-&gt;x <span class="k3">+</span> this-&gt;width<span class="k3">/</span><span class="n">2</span><span class="k2">;</span><span class="c">// for screen space coordinates</span>
<span class="number">  3</span><span class="k1">int</span> cy <span class="k3">=</span> this-&gt;y <span class="k3">+</span> this-&gt;height<span class="k3">/</span><span class="n">2</span><span class="k2">;</span><span class="c">// for screen space coordinates</span>
<span class="number">  4</span>
<span class="number">  5</span><span class="k1">int</span> cx <span class="k3">=</span> <span class="k2">(</span>this-&gt;x <span class="k3">+</span> this-&gt;width<span class="k2">)</span><span class="k3">/</span><span class="n">2</span> <span class="k3">-</span> camera_x<span class="k2">;</span><span class="c">// for real space coordinates</span>
<span class="number">  6</span><span class="k1">int</span> cy <span class="k3">=</span> <span class="k2">(</span>this-&gt;y <span class="k3">+</span> this-&gt;height<span class="k2">)</span><span class="k3">/</span><span class="n">2</span> <span class="k3">-</span> camera_y<span class="k2">;</span><span class="c">// for real space coordinates</span>
<span class="number">  7</span>
<span class="number">  8</span><a href="http://www.allegro.cc/manual/ALLEGRO_TRANSFORM"><span class="a">ALLEGRO_TRANSFORM</span></a> t<span class="k2">;</span>
<span class="number">  9</span><a href="http://www.allegro.cc/manual/al_identity_transform"><span class="a">al_identity_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>t<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 10</span><span class="c">//al_translate_transform(&amp;t , -cx , -cy);</span>
<span class="number"> 11</span><a href="http://www.allegro.cc/manual/al_translate_transform"><span class="a">al_translate_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>t , <span class="k3">-</span>this-&gt;width<span class="k3">/</span><span class="n">2</span> , <span class="k3">-</span>this-&gt;height<span class="k3">/</span><span class="n">2</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 12</span><a href="http://www.allegro.cc/manual/al_scale_transform"><span class="a">al_scale_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>t , scale , scale<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 13</span><a href="http://www.allegro.cc/manual/al_rotate_transform"><span class="a">al_rotate_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>t , angle<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 14</span><a href="http://www.allegro.cc/manual/al_translate_transform"><span class="a">al_translate_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>t , cx , cy<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 15</span><a href="http://www.allegro.cc/manual/al_use_transform"><span class="a">al_use_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>t<span class="k2">)</span><span class="k2">;</span>
</div></div><p>

Nevermind - I guess Siegelord is right.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Sun, 18 Sep 2011 08:47:49 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Edgar, I believe they are screen coordinates. I do everything relative to the upper left hand corner (0, 0).
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (InfiniteLoop)</author>
		<pubDate>Sun, 18 Sep 2011 08:49:42 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Okay, well if you ever use a camera, just remember that you need to subtract the camera position from the object position to get its screen coordinates.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Sun, 18 Sep 2011 08:51:29 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Why don&#39;t we have an al_draw_rotated_scaled_bitmap_region function? The function name is long, yes - and you can do the same thing with transformations. But we have all the other variants for doing it in a single function call so why not this?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Elias)</author>
		<pubDate>Sun, 18 Sep 2011 18:42:16 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/608379/931451#target">InfiniteLoop</a> said:</div><div class="quote"><p>
Would it be too much to ask (and it doesn&#39;t have to be now) for you to explain why that worked? I am not sure how I would draw it at 0, 0 and have it appear where I want.
</p></div></div><p>
Well, thing is, <span class="source-code"><span class="k2">(</span><span class="n">0</span>, <span class="n">0</span><span class="k2">)</span></span> is the initial pair of coordinates that you specify <i>before</i> they get transformed. The full explanation probably requires pictures, but I don&#39;t feel like drawing right now. Let me try to explain in words then. Let&#39;s go through the list of transformations and see how it affects the output of <span class="source-code"><a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>bmp, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span></span>:</p><p>1. <span class="source-code"><a href="http://www.allegro.cc/manual/al_identity_transform"><span class="a">al_identity_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>T<span class="k2">)</span><span class="k2">;</span></span></p><p>After this call <span class="source-code"><a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a></span> draws like usual, with the top-left corner at (0, 0).</p><p>2. <span class="source-code"><a href="http://www.allegro.cc/manual/al_translate_transform"><span class="a">al_translate_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>T, <span class="k3">-</span>this-&gt;width <span class="k3">/</span> <span class="n">2</span>, <span class="k3">-</span>this-&gt;height <span class="k3">/</span> <span class="n">2</span><span class="k2">)</span><span class="k2">;</span></span></p><p>After this call the <span class="source-code"><a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a></span> call will be offset, so that the top left corner will now be at <span class="source-code"><span class="k2">(</span><span class="k3">-</span>this-&gt;width <span class="k3">/</span> <span class="n">2</span>, <span class="k3">-</span>this-&gt;height <span class="k3">/</span> <span class="n">2</span><span class="k2">)</span></span>. We do this so that the middle of the bitmap is at <span class="source-code"><span class="k2">(</span><span class="n">0</span>, <span class="n">0</span><span class="k2">)</span></span>. Note that this step (and this step alone) can be removed by doing <span class="source-code"><a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>bmp, <span class="k3">-</span>this-&gt;width <span class="k3">/</span> <span class="n">2</span>, <span class="k3">-</span>this-&gt;height <span class="k3">/</span> <span class="n">2</span>, <span class="n">0</span><span class="k2">)</span></span>.</p><p>3. <span class="source-code"><a href="http://www.allegro.cc/manual/al_scale_transform"><span class="a">al_scale_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>T, this-&gt;getScale<span class="k2">(</span><span class="k2">)</span>, this-&gt;getScale<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></span></p><p>After this call the top left corner will be at <span class="source-code"><span class="k2">(</span>this-&gt;getScale<span class="k2">(</span><span class="k2">)</span> <span class="k3">*</span> <span class="k3">-</span>this-&gt;width <span class="k3">/</span> <span class="n">2</span>, this-&gt;getScale<span class="k2">(</span><span class="k2">)</span> <span class="k3">*</span> <span class="k3">-</span>this-&gt;height <span class="k3">/</span> <span class="n">2</span><span class="k2">)</span></span> and the bitmap will also be drawn bigger. The critical bit here (and why we did step #2) is that the center of the bitmap doesn&#39;t move with scaling. If the center was not at <span class="source-code"><span class="k2">(</span><span class="n">0</span>, <span class="n">0</span><span class="k2">)</span></span> it would be scaled, and we&#39;d have a mess.</p><p>4. <span class="source-code"><a href="http://www.allegro.cc/manual/al_rotate_transform"><span class="a">al_rotate_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>T, this-&gt;getRotation<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span></span>;</p><p>After this call the bitmap will be rotated about <span class="source-code"><span class="k2">(</span><span class="n">0</span>, <span class="n">0</span><span class="k2">)</span></span>. Since we took care to place the bitmap&#39;s center at <span class="source-code"><span class="k2">(</span><span class="n">0</span>, <span class="n">0</span><span class="k2">)</span></span> it will be rotated around its center.</p><p>5. <span class="source-code"><a href="http://www.allegro.cc/manual/al_translate_transform"><span class="a">al_translate_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>T, this-&gt;getX<span class="k2">(</span><span class="k2">)</span> <span class="k3">+</span> this-&gt;width <span class="k3">/</span> <span class="n">2</span>, this-&gt;getY<span class="k2">(</span><span class="k2">)</span> <span class="k3">+</span> this-&gt;height <span class="k3">/</span> <span class="n">2</span><span class="k2">)</span><span class="k2">;</span></span></p><p>After this call the bitmap&#39;s center will move to <span class="source-code"><span class="k2">(</span>this-&gt;getX<span class="k2">(</span><span class="k2">)</span> <span class="k3">+</span> this-&gt;width <span class="k3">/</span> <span class="n">2</span>, this-&gt;getY<span class="k2">(</span><span class="k2">)</span> <span class="k3">+</span> this-&gt;height <span class="k3">/</span> <span class="n">2</span><span class="k2">)</span></span>.</p><p>If we had no rotation and scaling, then we&#39;d just have this:
</p><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/ALLEGRO_TRANSFORM"><span class="a">ALLEGRO_TRANSFORM</span></a> T<span class="k2">;</span>
<a href="http://www.allegro.cc/manual/al_identity_transform"><span class="a">al_identity_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>T<span class="k2">)</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/al_translate_transform"><span class="a">al_translate_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>T, <span class="k3">-</span>this-&gt;width <span class="k3">/</span> <span class="n">2</span>, <span class="k3">-</span>this-&gt;height <span class="k3">/</span> <span class="n">2</span><span class="k2">)</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/al_translate_transform"><span class="a">al_translate_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>T, this-&gt;getX<span class="k2">(</span><span class="k2">)</span> <span class="k3">+</span> this-&gt;width <span class="k3">/</span> <span class="n">2</span>, this-&gt;getY<span class="k2">(</span><span class="k2">)</span> <span class="k3">+</span> this-&gt;height <span class="k3">/</span> <span class="n">2</span><span class="k2">)</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/al_use_transform"><span class="a">al_use_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>T<span class="k2">)</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>bmp, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
Translations simply add, so if you followed the steps above it should be clear to see how this code is exactly equivalent to:
</p><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>bmp, this-&gt;getX<span class="k2">(</span><span class="k2">)</span>, this-&gt;getY<span class="k2">(</span><span class="k2">)</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

Lastly, there is a function to simplify this process a bit:</p><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/ALLEGRO_TRANSFORM"><span class="a">ALLEGRO_TRANSFORM</span></a> T<span class="k2">;</span>
<a href="http://www.allegro.cc/manual/al_build_transform"><span class="a">al_build_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>T, this-&gt;getX<span class="k2">(</span><span class="k2">)</span> <span class="k3">+</span> this-&gt;width <span class="k3">/</span> <span class="n">2</span>, this-&gt;getY<span class="k2">(</span><span class="k2">)</span> <span class="k3">+</span> this-&gt;height <span class="k3">/</span> <span class="n">2</span>, this-&gt;getScale<span class="k2">(</span><span class="k2">)</span>, this-&gt;getScale<span class="k2">(</span><span class="k2">)</span>, this-&gt;getRotation<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/al_use_transform"><span class="a">al_use_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>T<span class="k2">)</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>bmp, <span class="k3">-</span>this-&gt;width <span class="k3">/</span> <span class="n">2</span>, <span class="k3">-</span>this-&gt;height <span class="k3">/</span> <span class="n">2</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (SiegeLord)</author>
		<pubDate>Mon, 19 Sep 2011 19:17:25 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I don&#39;t think al_build_transform would work in this case, because it does the scaling and rotation before the translation (according to the <a href="http://www.allegro.cc/manual/5/al_build_transform">manual</a>).
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Tue, 20 Sep 2011 02:26:52 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/608379/931597#target">Edgar Reynaldo</a> said:</div><div class="quote"><p>
I don&#39;t think al_build_transform would work in this case, because it does the scaling and rotation before the translation (according to the manual).
</p></div></div><p>
Right, except there are two sets of translations. Here&#39;s what happens:
</p><pre>
Original set of transformations | New set of transformations
Initial location: 0, 0            Initial location: -w/2, -h/2
Translate(-w/2, -h/2)  ---------------------------------^ moved to here
Scale       \
Rotate      |-------------------&gt; combined into al_build_transform
Translate   /
</pre><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (SiegeLord)</author>
		<pubDate>Tue, 20 Sep 2011 03:38:04 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thank you, that helps a lot. After a nights sleep, I went back and looked at the order I was calling the functions you gave me and I figured it out (by drawing on a piece of paper). What you said has confirmed my suspicions. </p><p>Thank you all again for your help. It is truly appreciated.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (InfiniteLoop)</author>
		<pubDate>Tue, 20 Sep 2011 04:43:37 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/608379/931603#target">SiegeLord</a> said:</div><div class="quote"><p>
Right, except there are two sets of translations. Here&#39;s what happens:
</p></div></div><p>
Fine, except for that&#39;s not what your code example shows.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Tue, 20 Sep 2011 06:18:34 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>How not?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (SiegeLord)</author>
		<pubDate>Tue, 20 Sep 2011 07:06:33 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/608379/931578#target">SiegeLord</a> said:</div><div class="quote"><p>
Lastly, there is a function to simplify this process a bit:
</p><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/ALLEGRO_TRANSFORM"><span class="a">ALLEGRO_TRANSFORM</span></a> T<span class="k2">;</span>
<a href="http://www.allegro.cc/manual/al_build_transform"><span class="a">al_build_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>T, this-&gt;getX<span class="k2">(</span><span class="k2">)</span> <span class="k3">+</span> this-&gt;width <span class="k3">/</span> <span class="n">2</span>, this-&gt;getY<span class="k2">(</span><span class="k2">)</span> <span class="k3">+</span> this-&gt;height <span class="k3">/</span> <span class="n">2</span>, this-&gt;getScale<span class="k2">(</span><span class="k2">)</span>, this-&gt;getScale<span class="k2">(</span><span class="k2">)</span>, this-&gt;getRotation<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/al_use_transform"><span class="a">al_use_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>T<span class="k2">)</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>bmp, <span class="k3">-</span>this-&gt;width <span class="k3">/</span> <span class="n">2</span>, <span class="k3">-</span>this-&gt;height <span class="k3">/</span> <span class="n">2</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
</p></div></div><p>

It&#39;s missing the first translation, that&#39;s all. So it actually wouldn&#39;t work, because al_build_transform sets the identity first.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Wed, 21 Sep 2011 04:30:14 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/608379/931488#target">Elias</a> said:</div><div class="quote"><p>
Why don&#39;t we have an al_draw_rotated_scaled_bitmap_region function? The function name is long, yes - and you can do the same thing with transformations. But we have all the other variants for doing it in a single function call so why not this?
</p></div></div><p>

I think it would be good, too. It&#39;s a fairly common thing to want to do, so it&#39;s a reasonable thing to add. If it weren&#39;t for the new test cases needed I could add it tomorrow. I haven&#39;t looked at adding test cases yet so I have no idea if it&#39;s a big deal. I might try it anyway if I remember this thread... but that&#39;s not a promise.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Trent Gamblin)</author>
		<pubDate>Wed, 21 Sep 2011 04:39:06 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/608379/931721#target">Edgar Reynaldo</a> said:</div><div class="quote"><p>
It&#39;s missing the first translation, that&#39;s all.
</p></div></div><p>
No, it&#39;s not. As my diagram showed, it got transfered to the coordinates passed to <span class="source-code"><a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a></span>:
</p><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/ALLEGRO_TRANSFORM"><span class="a">ALLEGRO_TRANSFORM</span></a> T<span class="k2">;</span>
<a href="http://www.allegro.cc/manual/al_build_transform"><span class="a">al_build_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>T, this-&gt;getX<span class="k2">(</span><span class="k2">)</span> <span class="k3">+</span> this-&gt;width <span class="k3">/</span> <span class="n">2</span>, this-&gt;getY<span class="k2">(</span><span class="k2">)</span> <span class="k3">+</span> this-&gt;height <span class="k3">/</span> <span class="n">2</span>, this-&gt;getScale<span class="k2">(</span><span class="k2">)</span>, this-&gt;getScale<span class="k2">(</span><span class="k2">)</span>, this-&gt;getRotation<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/al_use_transform"><span class="a">al_use_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>T<span class="k2">)</span><span class="k2">;</span>
<div class="highlight"><a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>bmp, <span class="k3">-</span>this-&gt;width <span class="k3">/</span> <span class="n">2</span>, <span class="k3">-</span>this-&gt;height <span class="k3">/</span> <span class="n">2</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></div>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (SiegeLord)</author>
		<pubDate>Wed, 21 Sep 2011 04:53:08 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Wouldn&#39;t you have to modify the final translation in al_draw_bitmap to account for the scaling performed in al_build_transform though? And what about the rotation? It&#39;s scaled, then rotated about its top left corner, which is not what you want.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Wed, 21 Sep 2011 05:41:24 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/608379/931727#target">Edgar Reynaldo</a> said:</div><div class="quote"><p>
final translation in al_draw_bitmap
</p></div></div><p>
The translation in <span class="source-code"><a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a></span> is applied first, and then it is transformed using the current transformation. Doing it the other way wouldn&#39;t make any sense (it would make it clunky to use the transformations for a camera system, for example).
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (SiegeLord)</author>
		<pubDate>Wed, 21 Sep 2011 10:46:25 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/608379/931723#target">Trent Gamblin</a> said:</div><div class="quote"><p>I think it would be good, too. It&#39;s a fairly common thing to want to do, so it&#39;s a reasonable thing to add. If it weren&#39;t forithe new test cases needed I could add it tomorrow. I haven&#39;t looked at adding test cases yet so I have no idea if it&#39;s a big deal. I might try it anyway if I remember this thread... but that&#39;snot a promise.</p></div></div><p>
I can also add it, just could have been that there&#39;s a reason against.<br />And yeah, we probably should make unit tests mandatory for any new additions <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Elias)</author>
		<pubDate>Wed, 21 Sep 2011 14:35:38 +0000</pubDate>
	</item>
</rss>
