<div dir="ltr">Oh good! That works well. Thank you very much, Glynn. I had it backwards. <div><br></div><div>Hopefully my experience here can be of some help. The man page section for --transform is a bit misleading. For example:<div>

<br></div><div><div><div>> The final device coordinates of the pixel are then calculated with the so-called homogenic division by the transformed w coordinate.</div></div><div><br></div><div>From what I understand now, the transformation matrix doesn't directly calculate final device coordinates, but instead calculates graphic buffer coordinates *from* your desired final device coordinates. Maybe someone who knows the terminology better can rewrite this section of the man page to make its behavior clearer?</div>

</div></div><div><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Oct 2, 2013 at 3:19 AM, Glynn Clements <span dir="ltr"><<a href="mailto:glynn@gclements.plus.com" target="_blank">glynn@gclements.plus.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im"><br>
AJ Heller wrote:<br>
<br>
> I implemented a transformation matrix to pinch the top of my screen 100px<br>
> on each side. My hope is for the resulting image to be an isosceles<br>
> trapezoid (trapezium) with the smaller base on top, larger base on bottom<br>
> filling the width of the screen, and with no part of the image missing or<br>
> drawn off the screen.<br>
><br>
> After transforming, the top remains fixed at the width of the screen, and<br>
> the bottom of the trapezoidal image is drawn off the screen on either side.<br>
> I could be confused about what the transform should be doing, but otherwise<br>
> I think this is a bug.<br>
><br>
> Have I setup my transformation incorrectly? Should I file a bug report?<br>
<br>
</div><div class="im">> I'm working with 1440x900 resolution. I mapped the four corners to my<br>
> desired output coordinates:<br>
><br>
> (0,0) => (0,0)<br>
> (1440,0) => (1440,0)<br>
> (0,900) => (100,900)<br>
> (1440,900) => (1340,900)<br>
<br>
> My transformation matrix is:<br>
> 1, 0.30769, 0<br>
> 0, 1.38462, 0<br>
> 0, 0.00043, 1<br>
<br>
</div>Based upon the xrandr manual page and your pictures, that's not what<br>
you want, and will produce the results you describe.<br>
<br>
First, the transformation converts from output coordinates to input<br>
coordinates. So the above will result in the bottom corners of the<br>
screen being mapped 100 pixels in from the edge (i.e. you'll lose 100<br>
pixels at each side). Except, it's actually 200 pixels for the matrix<br>
which you give.<br>
<br>
Second, 0,0 is the top-left corner, not the bottom-left (this isn't<br>
stated in the manual page, but it explains why the the oversized edge<br>
is the bottom edge rather than the top edge).<br>
<br>
If I'm understanding you (and xrandr) correctly, the matrix you want<br>
is:<br>
<br>
1.16129, 0.12903, -116.12903<br>
0.     , 1.16129,    0.<br>
0.     , 0.00018,    1.<br>
<br>
This will map:<br>
<br>
 output        input<br>
<br>
 100,   0       0,   0<br>
1340,   0    1440,   0<br>
   0, 900       0, 900<br>
1440, 900    1440, 900<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
Glynn Clements <<a href="mailto:glynn@gclements.plus.com">glynn@gclements.plus.com</a>><br>
</font></span></blockquote></div><br></div></div>