- From: David Birnbaum <djbpitt@gmail.com>
- Date: Sat, 8 Mar 2025 10:39:46 -0500
- To: Wendell Piez <wapiez@wendellpiez.com>
- Cc: XProc Dev <xproc-dev@w3.org>
- Message-ID: <CAP4v81p_3m42GjYhh95GcPyHKo4UrceJEDvb7jrPNewp8xACMA@mail.gmail.com>
About this use of <p:identity> to clarify pipeline structure see also Erik's book, pp. 201–02. On Fri, Mar 7, 2025 at 3:29 PM Wendell Piez <wapiez@wendellpiez.com> wrote: > Sorry, in usual fashion I just sent this only to Norm: > > > ---------- Forwarded message --------- > From: Wendell Piez <wapiez@wendellpiez.com> > Date: Fri, Mar 7, 2025 at 3:28 PM > Subject: Re: XProc-based rasterizer > To: Norm Tovey-Walsh <ndw@nwalsh.com> > > > Hi again, > > Recently I was asked what are uses of p:identity. Here is one. As an > alternative to what I just posted: > > <p:identity name="svg-file"/> > > <p:insert > match="/descendant::fo:instream-foreign-object[@id='svg-placement']" > position="first-child"> > <p:with-input port="insertion" pipe="@svg-file"/> > <p:with-input port="source"> > <fo:root> ... > > Since the SVG is on the main input, the identity allows us to capture that > without having to reference the source port of the pipeline directly. > > Question: which one is easier to understand? > > Regards, Wendell > > > On Fri, Mar 7, 2025 at 3:21 PM Wendell Piez <wapiez@wendellpiez.com> > wrote: > >> Hi, >> >> Thanks Norm and John for comments so far. After reflection, I don't >> actually regard this as a casting problem but a rendering problem, at least >> when inputs are SVG. :-) >> >> In any case since the same host of questions asked by Norm arises also in >> the XSL-FO context, I am exploring that option. >> >> Apparently FOP can be made to do this (i.e., produce PNG), perhaps I can >> get that written to the file system somehow. >> I am looking at prior art as documented here: >> https://www.oxygenxml.com/pipermail/oxygen-user/2011-June/003664.html >> >> This is what I have so far, with an SVG document on the input port: >> >> <p:insert >> match="/descendant::fo:instream-foreign-object[@id='svg-placement']" >> position="first-child"> >> <p:with-input port="insertion" pipe="source@make-png-from-svg"/> >> <p:with-input port="source"> >> <fo:root> >> <fo:layout-master-set> >> <fo:simple-page-master master-name="svg" >> page-height="{$height}" page-width="{$width}"> >> <fo:region-body/> >> </fo:simple-page-master> >> </fo:layout-master-set> >> <fo:page-sequence master-reference="svg"> >> <fo:flow flow-name="xsl-region-body"> >> <fo:block> >> <fo:instream-foreign-object id="svg-placement"/> >> </fo:block> >> </fo:flow> >> </fo:page-sequence> >> </fo:root> >> </p:with-input> >> </p:insert> >> >> >> The question will be how to invoke the formatter to do the right thing. >> >> Since I also have some animal bones on the fire (er, beef short ribs in a >> braise), this is as far as I have made it so far today. >> >> If you know already this won't work (even producing a PNG file as a side >> effect), I'll be interested in more details. >> >> Thanks! Wendell >> >> >> >> >> >> On Fri, Mar 7, 2025 at 12:39 PM Norm Tovey-Walsh <ndw@nwalsh.com> wrote: >> >>> John Dziurlaj <john@turnout.rocks> writes: >>> > I'm not sure casting content types would be enough to fully effectuate >>> a cast that is inherently lossy. When casting from a vector to raster >>> image, resolution, color spaces, bit depths, aliasing among other things >>> need to be considered. Such nuances could be handled via option parameters, >>> but those are implementation-defined. >>> >>> I fear even in a rasterize step, some of those are going to be >>> implementation-defined parameters. Different raster formats support >>> different color spaces, may support limited resolutions or bit depths, etc. >>> >>> What would the “general” parameters be, I wonder? >>> >>> - Size >>> - If width and height are provided, does that change the aspect ratio? >>> - Resolution >>> - Color >>> - Bit depth? Color space? I’m not even sure what the options are >>> >>> > There is also the question of which set of casts are supported by a >>> given XProc processor. Built for purpose steps on the other hand give a >>> clear contract as to which functionalities are available and which aren't. >>> >>> I agree. I think a step is the better answer here. >>> >>> Be seeing you, >>> norm >>> >>> -- >>> Norm Tovey-Walsh <ndw@nwalsh.com> >>> https://norm.tovey-walsh.com/ >>> >>> > The one serious conviction that a man should have is that nothing is to >>> > be taken too seriously.--Nicholas Butler >>> >> >> >> -- >> ...Wendell Piez... ...wendell -at- nist -dot- gov... >> ...wendellpiez.com... ...pellucidliterature.org... ...pausepress.org... >> ...github.com/wendellpiez... ...gitlab.coko.foundation/wendell... >> > > > -- > ...Wendell Piez... ...wendell -at- nist -dot- gov... > ...wendellpiez.com... ...pellucidliterature.org... ...pausepress.org... > ...github.com/wendellpiez... ...gitlab.coko.foundation/wendell... > > > -- > ...Wendell Piez... ...wendell -at- nist -dot- gov... > ...wendellpiez.com... ...pellucidliterature.org... ...pausepress.org... > ...github.com/wendellpiez... ...gitlab.coko.foundation/wendell... >
Received on Saturday, 8 March 2025 15:40:02 UTC