# [NTG-context] factor=fit images don't fit

Hans Hagen pragma at wxs.nl
Sun Jul 22 22:47:03 CEST 2007

```Giuseppe Bilotta wrote:
> Friday, July 20, 2007 Giuseppe Bilotta wrote:
>
>> Hello all,
>
>> I have to place a number of images into some given-size
>> frames in a layer. The images should be scaled
>> proportionally to fit into the frame. The code I'm working
>> with is:
>
>> \defineframed[framedimg][
>>   frame=on,framecolor=elux,
>>   background=color,
>>   backgroundcolor=white,
>>   width=\wdfig,
>>   height=\htfigone,
>>   offset=overlay,
>> ]
>
>> \setlayer[figs][voffset=\nextfigvoff]{%
>>   \framedimg{%
>>     \externalfigure[#1][
>>       factor=fit,
>>       % maxwidth=\wdfig,
>>       % maxheight=\htfigone,
>>       % frame=on,
>>     ]%
>>   }%
>> }%
>
>> where \wdfig, \htfigone are the frame size and \nextfigvoff
>> is the vertical offset which must be placed. I've tried
>> factor=fit, factor=max, but in both cases I get images which
>> cross the boundaries of the frame, mostly in the horizontal
>> direction. If I add the maxwidth/maxheight specification,
>> images don't get scaled at all.
>
>> I would expect factor=fit to scale the image in such a way
>> that the biggest direction fits into the enclosing box,
>> while factor=max would scale the image in such a way that
>> the smallest direction fits into the enclosing box. Instead,
>> in both cases the vertical direction is being fitted, with
>> no apparent consideration for the horizontal direction.
>
>> What am I doing wrong and what should I do to fix it?
>
> Ok, I've tried studying the source and I really think that
> the way factor scaling is computed is wrong. However, the
> fix is nontrivial, and a somewhat thorough checking should
> be implemented, with earlier check for the factor value
> (fit, max, broad), since the logic selecting which dimension
> to scale depends on the kind of scaling.

the fit assumes operating on a page not in a box; an alternative is:

\framed[width=5cm,height4cm]
{\externalfigure[mill.png][maxwidth=4cm,maxheight=5cm,width=10cm]}

i.e. setting the maximum values

> Anyway, I've found a temporary solutin to my problem by
> using a very large value of scale=, coupled with appropriate
> maxwidth and maxheight values.
>

--

-----------------------------------------------------------------