Trying to emulate CSS "object-fit" behaviour...
Hi, I have a collection of PDF files of varying sizes and aspect ratios. I'm currently using a combination and external figures to place these into frames: \setupexternalfigures[width=45.2mm, frame=off, factor=fit] \setupcombinations[nx=5,ny=4,width=277mm,distance=10mm,after={\blank[10mm]}] \setupframed[offset=1.0mm,background=color,rulethickness=0.25pt,backgroundcolor=white,framecolor=lightgray] \starttext \startsection [title={title text}] \placefigure[here][nonumber] {\vspace more text} {\startcombination {\framed[] {\externalfigure[1.pdf][location=middle]}{}}{} %% and so on This works well, but what I'd like to do is choose a fixed size frame for each PDF and have ConTeXt fill the frame in the same way as these CSS commands: object-fit : cover; object-position : top left; overflow : hidden; (http://www.w3.org/TR/css3-images/#the-object-fit) That is, scale the PDF until all the frame is covered with some part of the PDF, even if means overflowing the frame. The "overflow: hidden" would then clip the overflow to the frame. Different PDF's could have different scalings applied to make this work, which is fine for this application. I understand this may not be an idiomatic use of ConTeXt--any advice or suggestions for alternate approaches much appreciated. Stu
On 10/16/2014 12:36 AM, Stuart Hungerford wrote:
Hi,
I have a collection of PDF files of varying sizes and aspect ratios. I'm currently using a combination and external figures to place these into frames:
\setupexternalfigures[width=45.2mm, frame=off, factor=fit]
\setupcombinations[nx=5,ny=4,width=277mm,distance=10mm,after={\blank[10mm]}]
\setupframed[offset=1.0mm,background=color,rulethickness=0.25pt,backgroundcolor=white,framecolor=lightgray]
\starttext \startsection [title={title text}] \placefigure[here][nonumber] {\vspace more text} {\startcombination {\framed[] {\externalfigure[1.pdf][location=middle]}{}}{}
%% and so on
\starttext \framed [offset=overlay,width=4cm,height=4cm] {\externalfigure[t:/sources/cow.pdf][factor=max]} \framed [offset=overlay,width=4cm,height=6cm] {\externalfigure[t:/sources/cow.pdf][factor=max]} \framed [offset=overlay,width=6cm,height=4cm] {\externalfigure[t:/sources/cow.pdf][factor=max]} \stoptext
This works well, but what I'd like to do is choose a fixed size frame for each PDF and have ConTeXt fill the frame in the same way as these CSS commands:
object-fit : cover; object-position : top left; overflow : hidden;
(http://www.w3.org/TR/css3-images/#the-object-fit)
That is, scale the PDF until all the frame is covered with some part of the PDF, even if means overflowing the frame. The "overflow: hidden" would then clip the overflow to the frame. Different PDF's could have different scalings applied to make this work, which is fine for this application.
I understand this may not be an idiomatic use of ConTeXt--any advice or suggestions for alternate approaches much appreciated.
Stu ___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://tex.aanhet.net archive : http://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___________________________________________________________________________________
-- ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com | www.pragma-pod.nl -----------------------------------------------------------------
Hans Hagen
\starttext
\framed [offset=overlay,width=4cm,height=4cm] {\externalfigure[t:/sources/cow.pdf][factor=max]}
\framed [offset=overlay,width=4cm,height=6cm] {\externalfigure[t:/sources/cow.pdf][factor=max]}
\framed [offset=overlay,width=6cm,height=4cm] {\externalfigure[t:/sources/cow.pdf][factor=max]}
\stoptext
This works well, but what I'd like to do is choose a fixed size frame for each PDF and have ConTeXt fill the frame in the same way as these CSS commands:
object-fit : cover; object-position : top left; overflow : hidden;
Many thanks -- although I don't see the effect I'm trying to get. In the code below the cow picture should fill the three frames at three different scales with no white bars between the frame and the externalfigure frame: \setupexternalfigures[location={default}] \starttext \framed [offset=overlay,width=10cm,height=2cm] {\externalfigure[cow][frame=on,factor=max]} \framed [offset=overlay,width=4cm,height=8cm] {\externalfigure[cow][frame=on,factor=max]} \framed [offset=overlay,width=6cm,height=6cm] {\externalfigure[cow][frame=on,factor=max]} \stoptext Thanks, Stu [I'm sending this via the Gmane interface as this thread hasn't come through via the mailing list daily digests via email yet).
On 10/17/2014 10:47 PM, Stuart Hungerford wrote:
Hans Hagen
writes: \starttext
\framed [offset=overlay,width=4cm,height=4cm] {\externalfigure[t:/sources/cow.pdf][factor=max]}
\framed [offset=overlay,width=4cm,height=6cm] {\externalfigure[t:/sources/cow.pdf][factor=max]}
\framed [offset=overlay,width=6cm,height=4cm] {\externalfigure[t:/sources/cow.pdf][factor=max]}
\stoptext
This works well, but what I'd like to do is choose a fixed size frame for each PDF and have ConTeXt fill the frame in the same way as these CSS commands:
object-fit : cover; object-position : top left; overflow : hidden;
Many thanks -- although I don't see the effect I'm trying to get. In the code below the cow picture should fill the three frames at three different scales with no white bars between the frame and the externalfigure frame:
\setupexternalfigures[location={default}]
\starttext
\framed [offset=overlay,width=10cm,height=2cm] {\externalfigure[cow][frame=on,factor=max]}
\framed [offset=overlay,width=4cm,height=8cm] {\externalfigure[cow][frame=on,factor=max]}
\framed [offset=overlay,width=6cm,height=6cm] {\externalfigure[cow][frame=on,factor=max]}
\stoptext
We already have a low level repeater so I've added a low level filler. It will be in the next beta upload (probably not today). \setupexternalfigures[location={default}] \starttext \framed[offset=overlay,width=6cm,height=3cm]{\backgroundimage {1}{\hsize}{\vsize}{\externalfigure[cow][width=1cm]}} \blank \framed[offset=overlay,width=6cm,height=3cm]{\backgroundimage {2}{\hsize}{\vsize}{\externalfigure[cow][width=1cm]}} \blank \framed[offset=overlay,width=6cm,height=3cm]{\backgroundimage {3}{\hsize}{\vsize}{\externalfigure[cow][width=1cm]}} \page \framed[offset=overlay,width=4cm,height=2cm]{\backgroundimagefill{1}{\hsize}{\vsize}{\externalfigure[cow]}} \blank \framed[offset=overlay,width=4cm,height=2cm]{\backgroundimagefill{2}{\hsize}{\vsize}{\externalfigure[cow]}} \blank \framed[offset=overlay,width=4cm,height=2cm]{\backgroundimagefill{3}{\hsize}{\vsize}{\externalfigure[cow]}} \page \framed[offset=overlay,width=2cm,height=4cm]{\backgroundimagefill{1}{\hsize}{\vsize}{\externalfigure[cow]}} \blank \framed[offset=overlay,width=2cm,height=4cm]{\backgroundimagefill{2}{\hsize}{\vsize}{\externalfigure[cow]}} \blank \framed[offset=overlay,width=2cm,height=4cm]{\backgroundimagefill{3}{\hsize}{\vsize}{\externalfigure[cow]}} \page \framed[offset=overlay,width=4cm,height=2cm]{\backgroundimagefill{1}{\hsize}{\vsize}{\externalfigure[mill]}} \blank \framed[offset=overlay,width=4cm,height=2cm]{\backgroundimagefill{2}{\hsize}{\vsize}{\externalfigure[mill]}} \blank \framed[offset=overlay,width=4cm,height=2cm]{\backgroundimagefill{3}{\hsize}{\vsize}{\externalfigure[mill]}} \page \framed[offset=overlay,width=2cm,height=4cm]{\backgroundimagefill{1}{\hsize}{\vsize}{\externalfigure[mill]}} \blank \framed[offset=overlay,width=2cm,height=4cm]{\backgroundimagefill{2}{\hsize}{\vsize}{\externalfigure[mill]}} \blank \framed[offset=overlay,width=2cm,height=4cm]{\backgroundimagefill{3}{\hsize}{\vsize}{\externalfigure[mill]}} \stoptext
[I'm sending this via the Gmane interface as this thread hasn't come through via the mailing list daily digests via email yet).
please avoid duplicate postings Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com | www.pragma-pod.nl -----------------------------------------------------------------
participants (2)
-
Hans Hagen
-
Stuart Hungerford