* resize and center and clip image @ 2014-05-01 11:50 Mikael P. Sundqvist 2014-05-01 13:38 ` Mikael P. Sundqvist 0 siblings, 1 reply; 8+ messages in thread From: Mikael P. Sundqvist @ 2014-05-01 11:50 UTC (permalink / raw) To: mailing list for ConTeXt users [-- Attachment #1: Type: text/plain, Size: 835 bytes --] Hi! Assume that I want to fill in the text area with images, and I want to clip and scale them according to these rules: 1) If the image is "too wide" (in sense of proportions), then scale it so that the height fits the text area height, center it, and clip it to the text area. (See the attached image, on top, where the blue area is supposed to show the text area and the red rectangle the image.) 2) If the image is "too high" (in sense of proportions), then scale it so that the width fits the text area width, center it, and clip it to the text area. (See the attached image, on bottom.) The background why I want to do this is that I'm making a small template for presentations, and I'd like the users to insert images as background without really having to think about if their proportions fit or not. Best regards, Mikael [-- Attachment #2: contextresizecenter.png --] [-- Type: image/png, Size: 8957 bytes --] [-- Attachment #3: Type: text/plain, Size: 485 bytes --] ___________________________________________________________________________________ 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 ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: resize and center and clip image 2014-05-01 11:50 resize and center and clip image Mikael P. Sundqvist @ 2014-05-01 13:38 ` Mikael P. Sundqvist 2014-05-01 14:59 ` Otared Kavian 0 siblings, 1 reply; 8+ messages in thread From: Mikael P. Sundqvist @ 2014-05-01 13:38 UTC (permalink / raw) To: mailing list for ConTeXt users OK, sorry for the noise. I think I have the solution: \startexternalfigurecollection[k.jpg] \useexternalfigure[k.jpg][k.jpg] \stopexternalfigurecollection \externalfigurecollectionminwidth{k.jpg} \externalfigurecollectionmaxheight{k.jpg} \clip[width=8cm,height=7cm]{% \framed[width=8cm,height=7cm,align={middle,lohi},offset=overlay]{% \dimen0=\externalfigurecollectionminwidth{k.jpg} \dimen2=\externalfigurecollectionmaxheight{k.jpg} \dimen4=8cm \dimen6=7cm \startluacode if tex.dimen[0] / tex.dimen[2] < tex.dimen[4] / tex.dimen[6] then local skalning = -0.5*(tex.dimen[4]/tex.dimen[0]*tex.dimen[2]-tex.dimen[6]) context("\\vskip%ssp", skalning) context.externalfigure({"k.jpg"},{width="8cm"}) context.sprint("foo") else local skalning = -0.5*(tex.dimen[6]/tex.dimen[2]*tex.dimen[0]-tex.dimen[4]) context("\\hskip%ssp", skalning) context.externalfigure({"k.jpg"},{height="7cm"}) context.sprint("bar") end \stopluacode }} If there are any bad side effects of this or simplifications, please do not hesitate to tell me :) /Mikael On Thu, May 1, 2014 at 1:50 PM, Mikael P. Sundqvist <mickep@gmail.com> wrote: > Hi! > > Assume that I want to fill in the text area with images, and I want to > clip and scale them according to these rules: > > 1) If the image is "too wide" (in sense of proportions), then scale it > so that the height fits the text area height, center it, and clip it > to the text area. (See the attached image, on top, where the blue area > is supposed to show the text area and the red rectangle the image.) > > 2) If the image is "too high" (in sense of proportions), then scale it > so that the width fits the text area width, center it, and clip it to > the text area. (See the attached image, on bottom.) > > The background why I want to do this is that I'm making a small > template for presentations, and I'd like the users to insert images as > background without really having to think about if their proportions > fit or not. > > Best regards, Mikael ___________________________________________________________________________________ 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 ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: resize and center and clip image 2014-05-01 13:38 ` Mikael P. Sundqvist @ 2014-05-01 14:59 ` Otared Kavian 2014-05-01 15:07 ` Mikael P. Sundqvist 0 siblings, 1 reply; 8+ messages in thread From: Otared Kavian @ 2014-05-01 14:59 UTC (permalink / raw) To: mailing list for ConTeXt users Hi Mikael, Out of curiosity I tried to typeset your example (after adding the usual \starttext, \stoptext), but using ConTeXt ver: 2014.04.28 23:24 MKIV beta fmt: 2014.4.29 int: english/english I obtained a TeX error: tex error > error on line 13 in file /Users/kavian/Context/essais/mkii/figures/resize-and-center.tex: ! Undefined control sequence \startexternalfigurecollection ...igurecollection {#1}\settrue \c_grph_inclu... l.13 \clip[width=8cm,height=7cm] {% 3 \startexternalfigurecollection[k.jpg] 4 \useexternalfigure[k.jpg][k.jpg] 5 \stopexternalfigurecollection I did not understand what is the « Undefined control sequence », since I think \clip is a known control sequence. Best regards: OK On 1 mai 2014, at 15:38, Mikael P. Sundqvist <mickep@gmail.com> wrote: > OK, sorry for the noise. I think I have the solution: > > \startexternalfigurecollection[k.jpg] > \useexternalfigure[k.jpg][k.jpg] > \stopexternalfigurecollection > > > \externalfigurecollectionminwidth{k.jpg} > \externalfigurecollectionmaxheight{k.jpg} > > \clip[width=8cm,height=7cm]{% > \framed[width=8cm,height=7cm,align={middle,lohi},offset=overlay]{% > \dimen0=\externalfigurecollectionminwidth{k.jpg} > \dimen2=\externalfigurecollectionmaxheight{k.jpg} > \dimen4=8cm > \dimen6=7cm > \startluacode > if tex.dimen[0] / tex.dimen[2] < tex.dimen[4] / tex.dimen[6] then > local skalning = > -0.5*(tex.dimen[4]/tex.dimen[0]*tex.dimen[2]-tex.dimen[6]) > context("\\vskip%ssp", skalning) > context.externalfigure({"k.jpg"},{width="8cm"}) > context.sprint("foo") > else > local skalning = > -0.5*(tex.dimen[6]/tex.dimen[2]*tex.dimen[0]-tex.dimen[4]) > context("\\hskip%ssp", skalning) > context.externalfigure({"k.jpg"},{height="7cm"}) > context.sprint("bar") > end > \stopluacode > }} > > If there are any bad side effects of this or simplifications, please > do not hesitate to tell me :) > > /Mikael > > On Thu, May 1, 2014 at 1:50 PM, Mikael P. Sundqvist <mickep@gmail.com> wrote: >> Hi! >> >> Assume that I want to fill in the text area with images, and I want to >> clip and scale them according to these rules: >> >> 1) If the image is "too wide" (in sense of proportions), then scale it >> so that the height fits the text area height, center it, and clip it >> to the text area. (See the attached image, on top, where the blue area >> is supposed to show the text area and the red rectangle the image.) >> >> 2) If the image is "too high" (in sense of proportions), then scale it >> so that the width fits the text area width, center it, and clip it to >> the text area. (See the attached image, on bottom.) >> >> The background why I want to do this is that I'm making a small >> template for presentations, and I'd like the users to insert images as >> background without really having to think about if their proportions >> fit or not. >> >> Best regards, Mikael > ___________________________________________________________________________________ > 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 > ___________________________________________________________________________________ ___________________________________________________________________________________ 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 ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: resize and center and clip image 2014-05-01 14:59 ` Otared Kavian @ 2014-05-01 15:07 ` Mikael P. Sundqvist 2014-05-01 16:43 ` Otared Kavian 2014-05-01 18:00 ` Aditya Mahajan 0 siblings, 2 replies; 8+ messages in thread From: Mikael P. Sundqvist @ 2014-05-01 15:07 UTC (permalink / raw) To: mailing list for ConTeXt users Interesting, I use ConTeXt ver: 2014.04.28 23:24 MKIV beta fmt: 2014.4.29 int: english/english and it works. I now defined this with argument: \startluacode userdata = userdata or {} function userdata.lundklippfyllbild(str, bredd, hojd) if tex.dimen[0] / tex.dimen[2] < tex.dimen[4] / tex.dimen[6] then local skalning = -0.5*(tex.dimen[4]/tex.dimen[0]*tex.dimen[2]-tex.dimen[6]) context("\\vskip%ssp", skalning) context.externalfigure({str},{width=bredd}) context.sprint("foo") else local skalning = -0.5*(tex.dimen[6]/tex.dimen[2]*tex.dimen[0]-tex.dimen[4]) context("\\hskip%ssp", skalning) context.externalfigure({str},{height=hojd}) context.sprint("bar") end end \stopluacode \unexpanded\def\lundklippfyllbild#1#2#3{% \startexternalfigurecollection[#1]% \useexternalfigure[#1][#1]% \stopexternalfigurecollection% \clip[ width=#2, height=#3, hoffset=0mm, voffset=0mm, ]{% \framed[width=#2,height=#3,align={middle,lohi},offset=overlay,frame=off]{% \dimen0=\externalfigurecollectionminwidth{#1}% \dimen2=\externalfigurecollectionmaxheight{#1}% \dimen4=#2% \dimen6=#3% {\ctxlua{userdata.lundklippfyllbild([==[#1]==],[==[#2]==],[==[#3]==])}}}}} and then run \lundklippfyllbild{k.jpg}{\textwidth}{\textheight} it works well. Of course you should replace k.jpg with some other image name... /Mikael PS And please, if someone has opinions about the code, don't hesitate to tell me. This is my first time using lua... On Thu, May 1, 2014 at 4:59 PM, Otared Kavian <otared@gmail.com> wrote: > Hi Mikael, > > Out of curiosity I tried to typeset your example (after adding the usual \starttext, \stoptext), but using > ConTeXt ver: 2014.04.28 23:24 MKIV beta fmt: 2014.4.29 int: english/english > I obtained a TeX error: > > tex error > error on line 13 in file /Users/kavian/Context/essais/mkii/figures/resize-and-center.tex: ! Undefined control sequence > > > \startexternalfigurecollection ...igurecollection > {#1}\settrue \c_grph_inclu... > l.13 \clip[width=8cm,height=7cm] > {% > > 3 \startexternalfigurecollection[k.jpg] > 4 \useexternalfigure[k.jpg][k.jpg] > 5 \stopexternalfigurecollection > > I did not understand what is the « Undefined control sequence », since I think \clip is a known control sequence. > > Best regards: OK > > On 1 mai 2014, at 15:38, Mikael P. Sundqvist <mickep@gmail.com> wrote: > >> OK, sorry for the noise. I think I have the solution: >> >> \startexternalfigurecollection[k.jpg] >> \useexternalfigure[k.jpg][k.jpg] >> \stopexternalfigurecollection >> >> >> \externalfigurecollectionminwidth{k.jpg} >> \externalfigurecollectionmaxheight{k.jpg} >> >> \clip[width=8cm,height=7cm]{% >> \framed[width=8cm,height=7cm,align={middle,lohi},offset=overlay]{% >> \dimen0=\externalfigurecollectionminwidth{k.jpg} >> \dimen2=\externalfigurecollectionmaxheight{k.jpg} >> \dimen4=8cm >> \dimen6=7cm >> \startluacode >> if tex.dimen[0] / tex.dimen[2] < tex.dimen[4] / tex.dimen[6] then >> local skalning = >> -0.5*(tex.dimen[4]/tex.dimen[0]*tex.dimen[2]-tex.dimen[6]) >> context("\\vskip%ssp", skalning) >> context.externalfigure({"k.jpg"},{width="8cm"}) >> context.sprint("foo") >> else >> local skalning = >> -0.5*(tex.dimen[6]/tex.dimen[2]*tex.dimen[0]-tex.dimen[4]) >> context("\\hskip%ssp", skalning) >> context.externalfigure({"k.jpg"},{height="7cm"}) >> context.sprint("bar") >> end >> \stopluacode >> }} >> >> If there are any bad side effects of this or simplifications, please >> do not hesitate to tell me :) >> >> /Mikael >> >> On Thu, May 1, 2014 at 1:50 PM, Mikael P. Sundqvist <mickep@gmail.com> wrote: >>> Hi! >>> >>> Assume that I want to fill in the text area with images, and I want to >>> clip and scale them according to these rules: >>> >>> 1) If the image is "too wide" (in sense of proportions), then scale it >>> so that the height fits the text area height, center it, and clip it >>> to the text area. (See the attached image, on top, where the blue area >>> is supposed to show the text area and the red rectangle the image.) >>> >>> 2) If the image is "too high" (in sense of proportions), then scale it >>> so that the width fits the text area width, center it, and clip it to >>> the text area. (See the attached image, on bottom.) >>> >>> The background why I want to do this is that I'm making a small >>> template for presentations, and I'd like the users to insert images as >>> background without really having to think about if their proportions >>> fit or not. >>> >>> Best regards, Mikael >> ___________________________________________________________________________________ >> 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 >> ___________________________________________________________________________________ > > ___________________________________________________________________________________ > 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 > ___________________________________________________________________________________ ___________________________________________________________________________________ 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 ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: resize and center and clip image 2014-05-01 15:07 ` Mikael P. Sundqvist @ 2014-05-01 16:43 ` Otared Kavian 2014-05-01 18:00 ` Aditya Mahajan 1 sibling, 0 replies; 8+ messages in thread From: Otared Kavian @ 2014-05-01 16:43 UTC (permalink / raw) To: mailing list for ConTeXt users Hi Mikael, With your new definitions and lua code I could typeset and test a few examples: it is very nice, thanks for sharing! Best regards: OK On 1 mai 2014, at 17:07, Mikael P. Sundqvist <mickep@gmail.com> wrote: > Interesting, > > I use ConTeXt ver: 2014.04.28 23:24 MKIV beta fmt: 2014.4.29 int: > english/english > > and it works. I now defined this with argument: > > \startluacode > userdata = userdata or {} > function userdata.lundklippfyllbild(str, bredd, hojd) > if tex.dimen[0] / tex.dimen[2] < tex.dimen[4] / tex.dimen[6] then > local skalning = > -0.5*(tex.dimen[4]/tex.dimen[0]*tex.dimen[2]-tex.dimen[6]) > context("\\vskip%ssp", skalning) > context.externalfigure({str},{width=bredd}) > context.sprint("foo") > else > local skalning = > -0.5*(tex.dimen[6]/tex.dimen[2]*tex.dimen[0]-tex.dimen[4]) > context("\\hskip%ssp", skalning) > context.externalfigure({str},{height=hojd}) > context.sprint("bar") > end > end > \stopluacode > > \unexpanded\def\lundklippfyllbild#1#2#3{% > \startexternalfigurecollection[#1]% > \useexternalfigure[#1][#1]% > \stopexternalfigurecollection% > \clip[ > width=#2, > height=#3, > hoffset=0mm, > voffset=0mm, > ]{% > \framed[width=#2,height=#3,align={middle,lohi},offset=overlay,frame=off]{% > \dimen0=\externalfigurecollectionminwidth{#1}% > \dimen2=\externalfigurecollectionmaxheight{#1}% > \dimen4=#2% > \dimen6=#3% > {\ctxlua{userdata.lundklippfyllbild([==[#1]==],[==[#2]==],[==[#3]==])}}}}} > > > > and then run > > > \lundklippfyllbild{k.jpg}{\textwidth}{\textheight} > > > it works well. Of course you should replace k.jpg with some other image name... > > /Mikael > > PS And please, if someone has opinions about the code, don't hesitate > to tell me. This is my first time using lua... > > > On Thu, May 1, 2014 at 4:59 PM, Otared Kavian <otared@gmail.com> wrote: >> Hi Mikael, >> >> Out of curiosity I tried to typeset your example (after adding the usual \starttext, \stoptext), but using >> ConTeXt ver: 2014.04.28 23:24 MKIV beta fmt: 2014.4.29 int: english/english >> I obtained a TeX error: >> >> tex error > error on line 13 in file /Users/kavian/Context/essais/mkii/figures/resize-and-center.tex: ! Undefined control sequence >> >> >> \startexternalfigurecollection ...igurecollection >> {#1}\settrue \c_grph_inclu... >> l.13 \clip[width=8cm,height=7cm] >> {% >> >> 3 \startexternalfigurecollection[k.jpg] >> 4 \useexternalfigure[k.jpg][k.jpg] >> 5 \stopexternalfigurecollection >> >> I did not understand what is the « Undefined control sequence », since I think \clip is a known control sequence. >> >> Best regards: OK >> >> On 1 mai 2014, at 15:38, Mikael P. Sundqvist <mickep@gmail.com> wrote: >> >>> OK, sorry for the noise. I think I have the solution: >>> >>> \startexternalfigurecollection[k.jpg] >>> \useexternalfigure[k.jpg][k.jpg] >>> \stopexternalfigurecollection >>> >>> >>> \externalfigurecollectionminwidth{k.jpg} >>> \externalfigurecollectionmaxheight{k.jpg} >>> >>> \clip[width=8cm,height=7cm]{% >>> \framed[width=8cm,height=7cm,align={middle,lohi},offset=overlay]{% >>> \dimen0=\externalfigurecollectionminwidth{k.jpg} >>> \dimen2=\externalfigurecollectionmaxheight{k.jpg} >>> \dimen4=8cm >>> \dimen6=7cm >>> \startluacode >>> if tex.dimen[0] / tex.dimen[2] < tex.dimen[4] / tex.dimen[6] then >>> local skalning = >>> -0.5*(tex.dimen[4]/tex.dimen[0]*tex.dimen[2]-tex.dimen[6]) >>> context("\\vskip%ssp", skalning) >>> context.externalfigure({"k.jpg"},{width="8cm"}) >>> context.sprint("foo") >>> else >>> local skalning = >>> -0.5*(tex.dimen[6]/tex.dimen[2]*tex.dimen[0]-tex.dimen[4]) >>> context("\\hskip%ssp", skalning) >>> context.externalfigure({"k.jpg"},{height="7cm"}) >>> context.sprint("bar") >>> end >>> \stopluacode >>> }} >>> >>> If there are any bad side effects of this or simplifications, please >>> do not hesitate to tell me :) >>> >>> /Mikael >>> >>> On Thu, May 1, 2014 at 1:50 PM, Mikael P. Sundqvist <mickep@gmail.com> wrote: >>>> Hi! >>>> >>>> Assume that I want to fill in the text area with images, and I want to >>>> clip and scale them according to these rules: >>>> >>>> 1) If the image is "too wide" (in sense of proportions), then scale it >>>> so that the height fits the text area height, center it, and clip it >>>> to the text area. (See the attached image, on top, where the blue area >>>> is supposed to show the text area and the red rectangle the image.) >>>> >>>> 2) If the image is "too high" (in sense of proportions), then scale it >>>> so that the width fits the text area width, center it, and clip it to >>>> the text area. (See the attached image, on bottom.) >>>> >>>> The background why I want to do this is that I'm making a small >>>> template for presentations, and I'd like the users to insert images as >>>> background without really having to think about if their proportions >>>> fit or not. >>>> >>>> Best regards, Mikael >>> ___________________________________________________________________________________ >>> 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 >>> ___________________________________________________________________________________ >> >> ___________________________________________________________________________________ >> 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 >> ___________________________________________________________________________________ > ___________________________________________________________________________________ > 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 > ___________________________________________________________________________________ ___________________________________________________________________________________ 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 ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: resize and center and clip image 2014-05-01 15:07 ` Mikael P. Sundqvist 2014-05-01 16:43 ` Otared Kavian @ 2014-05-01 18:00 ` Aditya Mahajan 2014-05-01 19:27 ` Mikael P. Sundqvist 2014-05-01 19:31 ` Wolfgang Schuster 1 sibling, 2 replies; 8+ messages in thread From: Aditya Mahajan @ 2014-05-01 18:00 UTC (permalink / raw) To: mailing list for ConTeXt users On Thu, 1 May 2014, Mikael P. Sundqvist wrote: > \startluacode > userdata = userdata or {} > function userdata.lundklippfyllbild(str, bredd, hojd) > if tex.dimen[0] / tex.dimen[2] < tex.dimen[4] / tex.dimen[6] then > local skalning = > -0.5*(tex.dimen[4]/tex.dimen[0]*tex.dimen[2]-tex.dimen[6]) > context("\\vskip%ssp", skalning) > context.externalfigure({str},{width=bredd}) > context.sprint("foo") > else > local skalning = > -0.5*(tex.dimen[6]/tex.dimen[2]*tex.dimen[0]-tex.dimen[4]) > context("\\hskip%ssp", skalning) > context.externalfigure({str},{height=hojd}) > context.sprint("bar") > end > end > \stopluacode > > \unexpanded\def\lundklippfyllbild#1#2#3{% > \startexternalfigurecollection[#1]% > \useexternalfigure[#1][#1]% > \stopexternalfigurecollection% > \clip[ > width=#2, > height=#3, > hoffset=0mm, > voffset=0mm, > ]{% > \framed[width=#2,height=#3,align={middle,lohi},offset=overlay,frame=off]{% > \dimen0=\externalfigurecollectionminwidth{#1}% > \dimen2=\externalfigurecollectionmaxheight{#1}% > \dimen4=#2% > \dimen6=#3% > {\ctxlua{userdata.lundklippfyllbild([==[#1]==],[==[#2]==],[==[#3]==])}}}}} > > > > and then run > > > \lundklippfyllbild{k.jpg}{\textwidth}{\textheight} Here is an eTeX solution. \unprotect \newdimen\d_scaleandclip_actual_wd \newdimen\d_scaleandclip_actual_ht \newdimen\d_scaleandclip_requested_wd \newdimen\d_scaleandclip_requested_ht \newbox\scaleandclip_box \installnamespace{scaleandclip} \installcommandhandler \????scaleandclip {scaleandclip} \????scaleandclip \setupscaleandclip [width=\textwidth, height=\textheight] \unexpanded\def\scaleandclip{\dodoubleempty\doscaleandclip} \def\doscaleandclip[#1][#2]% {\bgroup \ifsecondargument \edef\currentscaleandclip{#1}% \setupcurrentscaleandclip[#2]% \else\iffirstargument \doifassignmentelse{#1} {\let\currentscaleandclip\empty \setupcurrentscaleandclip[#1]} {\edef\currentscaleandclip{#1}} \else \let\currentscaleandclip\empty \fi\fi \dowithnextboxcs\scaleandclip_finish\hbox} \def\scaleandclip_finish {% \d_scaleandclip_requested_wd \dimexpr\scaleandclipparameter\c!width\relax \d_scaleandclip_requested_ht \dimexpr\scaleandclipparameter\c!height\relax % \d_scaleandclip_actual_wd\wd\nextbox \d_scaleandclip_actual_ht\dimexpr\ht\nextbox + \dp\nextbox\relax % \ifdim\dimexpr\d_scaleandclip_actual_wd*100/\d_scaleandclip_requested_wd < \dimexpr\d_scaleandclip_actual_ht*100/\d_scaleandclip_requested_ht \relax \setbox\scaleandclip_box\hbox {\scale[\c!width=\d_scaleandclip_requested_wd]{\box\nextbox}}% \scratchdimen=\the\dimexpr(\ht\scaleandclip_box - \d_scaleandclip_requested_ht)/2\relax \clip [ \c!voffset=\scratchdimen, \c!height=\d_scaleandclip_requested_ht, ]{\box\scaleandclip_box}% \else \setbox\scaleandclip_box\hbox {\scale[\c!height=\d_scaleandclip_requested_ht]{\box\nextbox}}% \scratchdimen=\the\dimexpr(\wd\scaleandclip_box - \d_scaleandclip_requested_wd)/2\relax \clip [ \c!hoffset=\scratchdimen, \c!width=\d_scaleandclip_requested_wd, ]{\box\scaleandclip_box}% \fi \egroup} \protect The usage is: \scaleandclip[width=..., height=...]{ ... any box ...} simimlar to the usage of \scale macro. \starttext \dontleavehmode \scaleandclip[width=3cm, height=3cm]{\externalfigure[cow.pdf][width=3cm,frame=on]} \scale[maxwidth=3cm, maxheight=3cm]{\externalfigure[cow.pdf][width=3cm,frame=on]} \dontleavehmode \scaleandclip[width=3cm, height=3cm]{\externalfigure[cow.pdf][width=3cm,height=10cm,frame=on]} \scale[maxwidth=3cm, maxheight=3cm]{\externalfigure[cow.pdf][width=3cm,height=10cm,frame=on]} \dontleavehmode \scaleandclip[width=3cm, height=3cm]{\externalfigure[cow.pdf][width=10cm,height=3cm,frame=on]} \scale[maxwidth=3cm, maxheight=3cm]{\externalfigure[cow.pdf][width=10cm,height=3cm,frame=on]} \stoptext ___________________________________________________________________________________ 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 ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: resize and center and clip image 2014-05-01 18:00 ` Aditya Mahajan @ 2014-05-01 19:27 ` Mikael P. Sundqvist 2014-05-01 19:31 ` Wolfgang Schuster 1 sibling, 0 replies; 8+ messages in thread From: Mikael P. Sundqvist @ 2014-05-01 19:27 UTC (permalink / raw) To: mailing list for ConTeXt users On Thu, May 1, 2014 at 8:00 PM, Aditya Mahajan <adityam@umich.edu> wrote: > On Thu, 1 May 2014, Mikael P. Sundqvist wrote: >> >> \startluacode >> userdata = userdata or {} >> function userdata.lundklippfyllbild(str, bredd, hojd) >> if tex.dimen[0] / tex.dimen[2] < tex.dimen[4] / tex.dimen[6] then >> local skalning = >> -0.5*(tex.dimen[4]/tex.dimen[0]*tex.dimen[2]-tex.dimen[6]) >> context("\\vskip%ssp", skalning) >> context.externalfigure({str},{width=bredd}) >> context.sprint("foo") >> else >> local skalning = >> -0.5*(tex.dimen[6]/tex.dimen[2]*tex.dimen[0]-tex.dimen[4]) >> context("\\hskip%ssp", skalning) >> context.externalfigure({str},{height=hojd}) >> context.sprint("bar") >> end >> end >> \stopluacode >> >> \unexpanded\def\lundklippfyllbild#1#2#3{% >> \startexternalfigurecollection[#1]% >> \useexternalfigure[#1][#1]% >> \stopexternalfigurecollection% >> \clip[ >> width=#2, >> height=#3, >> hoffset=0mm, >> voffset=0mm, >> ]{% >> \framed[width=#2,height=#3,align={middle,lohi},offset=overlay,frame=off]{% >> \dimen0=\externalfigurecollectionminwidth{#1}% >> \dimen2=\externalfigurecollectionmaxheight{#1}% >> \dimen4=#2% >> \dimen6=#3% >> {\ctxlua{userdata.lundklippfyllbild([==[#1]==],[==[#2]==],[==[#3]==])}}}}} >> >> >> >> and then run >> >> >> \lundklippfyllbild{k.jpg}{\textwidth}{\textheight} > > > Here is an eTeX solution. > > \unprotect > > \newdimen\d_scaleandclip_actual_wd > \newdimen\d_scaleandclip_actual_ht > > \newdimen\d_scaleandclip_requested_wd > \newdimen\d_scaleandclip_requested_ht > > \newbox\scaleandclip_box > > \installnamespace{scaleandclip} > \installcommandhandler \????scaleandclip {scaleandclip} \????scaleandclip > > \setupscaleandclip > [width=\textwidth, > height=\textheight] > > \unexpanded\def\scaleandclip{\dodoubleempty\doscaleandclip} > > \def\doscaleandclip[#1][#2]% > {\bgroup > \ifsecondargument > \edef\currentscaleandclip{#1}% > \setupcurrentscaleandclip[#2]% > \else\iffirstargument > \doifassignmentelse{#1} > {\let\currentscaleandclip\empty > \setupcurrentscaleandclip[#1]} > {\edef\currentscaleandclip{#1}} > \else > \let\currentscaleandclip\empty > \fi\fi > \dowithnextboxcs\scaleandclip_finish\hbox} > > \def\scaleandclip_finish > {% > \d_scaleandclip_requested_wd > \dimexpr\scaleandclipparameter\c!width\relax > \d_scaleandclip_requested_ht > \dimexpr\scaleandclipparameter\c!height\relax > % > \d_scaleandclip_actual_wd\wd\nextbox > \d_scaleandclip_actual_ht\dimexpr\ht\nextbox + \dp\nextbox\relax > % > > \ifdim\dimexpr\d_scaleandclip_actual_wd*100/\d_scaleandclip_requested_wd < > > \dimexpr\d_scaleandclip_actual_ht*100/\d_scaleandclip_requested_ht \relax > \setbox\scaleandclip_box\hbox > > {\scale[\c!width=\d_scaleandclip_requested_wd]{\box\nextbox}}% > \scratchdimen=\the\dimexpr(\ht\scaleandclip_box - > \d_scaleandclip_requested_ht)/2\relax > \clip > [ > \c!voffset=\scratchdimen, > \c!height=\d_scaleandclip_requested_ht, > ]{\box\scaleandclip_box}% > \else > \setbox\scaleandclip_box\hbox > > {\scale[\c!height=\d_scaleandclip_requested_ht]{\box\nextbox}}% > \scratchdimen=\the\dimexpr(\wd\scaleandclip_box - > \d_scaleandclip_requested_wd)/2\relax > \clip > [ > \c!hoffset=\scratchdimen, > \c!width=\d_scaleandclip_requested_wd, > ]{\box\scaleandclip_box}% > \fi > \egroup} > > \protect > > The usage is: > > \scaleandclip[width=..., height=...]{ ... any box ...} > > simimlar to the usage of \scale macro. > > > \starttext > > \dontleavehmode > \scaleandclip[width=3cm, > height=3cm]{\externalfigure[cow.pdf][width=3cm,frame=on]} > \scale[maxwidth=3cm, > maxheight=3cm]{\externalfigure[cow.pdf][width=3cm,frame=on]} > > \dontleavehmode > \scaleandclip[width=3cm, > height=3cm]{\externalfigure[cow.pdf][width=3cm,height=10cm,frame=on]} > \scale[maxwidth=3cm, > maxheight=3cm]{\externalfigure[cow.pdf][width=3cm,height=10cm,frame=on]} > > \dontleavehmode > \scaleandclip[width=3cm, > height=3cm]{\externalfigure[cow.pdf][width=10cm,height=3cm,frame=on]} > \scale[maxwidth=3cm, > maxheight=3cm]{\externalfigure[cow.pdf][width=10cm,height=3cm,frame=on]} > > \stoptext > > ___________________________________________________________________________________ > 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 > ___________________________________________________________________________________ Thanks Aditya! That is more general and looks more ConTeXt-ish to me with the options. I should study your code in detail to learn how that is done. Mikael ___________________________________________________________________________________ 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 ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: resize and center and clip image 2014-05-01 18:00 ` Aditya Mahajan 2014-05-01 19:27 ` Mikael P. Sundqvist @ 2014-05-01 19:31 ` Wolfgang Schuster 1 sibling, 0 replies; 8+ messages in thread From: Wolfgang Schuster @ 2014-05-01 19:31 UTC (permalink / raw) To: mailing list for ConTeXt users Am 01.05.2014 um 20:00 schrieb Aditya Mahajan <adityam@umich.edu>: > On Thu, 1 May 2014, Mikael P. Sundqvist wrote: >> \startluacode >> userdata = userdata or {} >> function userdata.lundklippfyllbild(str, bredd, hojd) >> if tex.dimen[0] / tex.dimen[2] < tex.dimen[4] / tex.dimen[6] then >> local skalning = >> -0.5*(tex.dimen[4]/tex.dimen[0]*tex.dimen[2]-tex.dimen[6]) >> context("\\vskip%ssp", skalning) >> context.externalfigure({str},{width=bredd}) >> context.sprint("foo") >> else >> local skalning = >> -0.5*(tex.dimen[6]/tex.dimen[2]*tex.dimen[0]-tex.dimen[4]) >> context("\\hskip%ssp", skalning) >> context.externalfigure({str},{height=hojd}) >> context.sprint("bar") >> end >> end >> \stopluacode >> >> \unexpanded\def\lundklippfyllbild#1#2#3{% >> \startexternalfigurecollection[#1]% >> \useexternalfigure[#1][#1]% >> \stopexternalfigurecollection% >> \clip[ >> width=#2, >> height=#3, >> hoffset=0mm, >> voffset=0mm, >> ]{% >> \framed[width=#2,height=#3,align={middle,lohi},offset=overlay,frame=off]{% >> \dimen0=\externalfigurecollectionminwidth{#1}% >> \dimen2=\externalfigurecollectionmaxheight{#1}% >> \dimen4=#2% >> \dimen6=#3% >> {\ctxlua{userdata.lundklippfyllbild([==[#1]==],[==[#2]==],[==[#3]==])}}}}} >> >> >> >> and then run >> >> >> \lundklippfyllbild{k.jpg}{\textwidth}{\textheight} > > Here is an eTeX solution. > > \unprotect > > \newdimen\d_scaleandclip_actual_wd > \newdimen\d_scaleandclip_actual_ht > > \newdimen\d_scaleandclip_requested_wd > \newdimen\d_scaleandclip_requested_ht > > \newbox\scaleandclip_box > > \installnamespace{scaleandclip} > \installcommandhandler \????scaleandclip {scaleandclip} \????scaleandclip > > \setupscaleandclip > [width=\textwidth, > height=\textheight] > > \unexpanded\def\scaleandclip{\dodoubleempty\doscaleandclip} > > \def\doscaleandclip[#1][#2]% > {\bgroup > \ifsecondargument > \edef\currentscaleandclip{#1}% > \setupcurrentscaleandclip[#2]% > \else\iffirstargument > \doifassignmentelse{#1} > {\let\currentscaleandclip\empty > \setupcurrentscaleandclip[#1]} > {\edef\currentscaleandclip{#1}} > \else > \let\currentscaleandclip\empty > \fi\fi > \dowithnextboxcs\scaleandclip_finish\hbox} > > \def\scaleandclip_finish > {% > \d_scaleandclip_requested_wd \dimexpr\scaleandclipparameter\c!width\relax > \d_scaleandclip_requested_ht \dimexpr\scaleandclipparameter\c!height\relax > % > \d_scaleandclip_actual_wd\wd\nextbox > \d_scaleandclip_actual_ht\dimexpr\ht\nextbox + \dp\nextbox\relax > % > \ifdim\dimexpr\d_scaleandclip_actual_wd*100/\d_scaleandclip_requested_wd < > \dimexpr\d_scaleandclip_actual_ht*100/\d_scaleandclip_requested_ht \relax > \setbox\scaleandclip_box\hbox > {\scale[\c!width=\d_scaleandclip_requested_wd]{\box\nextbox}}% > \scratchdimen=\the\dimexpr(\ht\scaleandclip_box - \d_scaleandclip_requested_ht)/2\relax > \clip > [ > \c!voffset=\scratchdimen, > \c!height=\d_scaleandclip_requested_ht, > ]{\box\scaleandclip_box}% > \else > \setbox\scaleandclip_box\hbox > {\scale[\c!height=\d_scaleandclip_requested_ht]{\box\nextbox}}% > \scratchdimen=\the\dimexpr(\wd\scaleandclip_box - \d_scaleandclip_requested_wd)/2\relax > \clip > [ > \c!hoffset=\scratchdimen, > \c!width=\d_scaleandclip_requested_wd, > ]{\box\scaleandclip_box}% > \fi > \egroup} > > \protect > > The usage is: > > \scaleandclip[width=..., height=...]{ ... any box ...} > > simimlar to the usage of \scale macro. We should convince Hans to add this functionality to the \scale macro with “factor=clip”. Wolfgang ___________________________________________________________________________________ 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 ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2014-05-01 19:31 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2014-05-01 11:50 resize and center and clip image Mikael P. Sundqvist 2014-05-01 13:38 ` Mikael P. Sundqvist 2014-05-01 14:59 ` Otared Kavian 2014-05-01 15:07 ` Mikael P. Sundqvist 2014-05-01 16:43 ` Otared Kavian 2014-05-01 18:00 ` Aditya Mahajan 2014-05-01 19:27 ` Mikael P. Sundqvist 2014-05-01 19:31 ` Wolfgang Schuster
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).