Re: Undocumented functions for working with graphics
- To: mathgroup at smc.vnet.net
- Subject: [mg101223] Re: Undocumented functions for working with graphics
- From: David Reiss <dbreiss at gmail.com>
- Date: Sat, 27 Jun 2009 06:03:18 -0400 (EDT)
- References: <h0qogh$kkq$1@smc.vnet.net> <h0sbok$h8i$1@smc.vnet.net>
Wolfram uses various internal contexts to organize their work. So the
"real meaning" is just just as if you were organizeing your work in
private contexts as when you create a Mathematica package using
BegnPackage["mycontext`"] and Begin["`Private`"].
If you looked at your code using ?? once such a package is loaded then
you will see the internal, Private`, context variables with the
explicit mycontext`Private` contexts explicitly shown.
How Wolfram actually organizes their various internal development
contexts is something that I don't know about (I could probably find
out, but I have not ever developed anything on that level for
Wolfram). My guess is that those contexts date back to Mathematica
version 1.0.
Best,
David
On Jun 26, 6:50 am, Alexey <lehi... at gmail.com> wrote:
> Thank you again!
> But how can I understand the real meaning of such variables (?) as
> Image`ImageDump`cf, Image`ImageDump`list etc.?
>
> On 25 Jun, 15:09, David Reiss <dbre... at gmail.com> wrote:
>
>
>
> > Hi there...
>
> > When I posted the result to MathGroup, I did edit it a bit to remove
> > the Image`ImageDump` context prefixes so that it would be easier to
> > read. I simply did a global replace for the string Image`ImageDump`
> > so that the resulting code fragment would be more readable.
>
> > These bits of code that are high level Mathematica code often have
> > these various contexts in them based on how Wolfram research handles
> > internal not-for-general-consumption Mathematica code.
>
> > Also some folks may have noticed that one gets a different answer if
> > one tries to obtain the code in a fresh Mathematica session. This is
> > because the code in some of these these contexts is not loaded until
> > one actually tries to first make use fo the function.
>
> > So, for example, executing something like
>
> > Image[ {{0, 1, 0}, {1, 0, 1}, {0, 1, 0}}]
>
> > Will load that code and then subsequently going through the process
> > that I outlined will create the code that I showed.
>
> > Best,
>
> > Davidhttp://scientificarts.com/worklife
>
> > On Jun 24, 6:34 am, Alexey <lehi... at gmail.com> wrote:
>
> > > Thank you very much! The method you have described is great. Some
> > > times for using it I must launch Mathematica with "-cleanStart" key
> > > for clearing the dump. But for Image`ToGraphicsRaster I can not get
> > > your "clear" code. My result contains unknown functions like
> > > Image`ImageDump`list with no attributes:
>
> > > In[1]:= ClearAttributes[Image`ToGraphicsRaster, {Protected,
> > > ReadProtected}]
> > > ?Image`ToGraphicsRaster
>
> > > Output:
>
> > > Image`ToGraphicsRaster[Image`ImageDump`list:{_?
> > > Image`ValidImageQ..}]:=Image`ToGraphicsRaster/@Image`ImageDump`list
>
> > > Image`ToGraphicsRaster[Image`ImageDump`img_?Image`ValidImageQ]:=Mod=
ul=
> e
> > > [{Image`ImageDump`width,Image`ImageDump`height,Image`ImageDump`range,=
Im=
> ag=
> > e` =
> > > ImageDump`cf,Image`ImageDump`data,Image`ImageDump`interleaving,Image`=
Im=
> ag=
> > eD =
> > > ump`imsize},
> > > {{Image`ImageDump`width,Image`ImageDump`height},Image`ImageDump`range=
,I=
> ma=
> > ge =
> > > `ImageDump`cf}
> > > =ImageData[Image`ImageDump`img,
> > > {ImageDimensions,DataRange,ColorFunction}];
> > > {Image`ImageDump`interleaving,Image`ImageDump`imsize}=
> > > {Interleaving,ImageSize}/.Options[Image`ImageDump`img]/.Options
> > > [Image];If
> > > [Image`ImageDump`interleaving===False,Image`ImageDump`data=Re=
ve=
> rs=
> > e
> > > [ImageData[Image`ImageDump`img,Interleaving->True]],Image`ImageDump`d=
at=
> a=
> > =Reverse[First
>
> > > [Image`ImageDump`img]]];Graphics[Raster[Image`ImageDump`data,{{0,0},
> > > {Image`ImageDump`width,Image`ImageDump`height}},Image`ImageDump`range=
,C=
> ol=
> > or =
> > > Function->Image`ImageDump`cf],If[Image`ImageDump`imsize===Autom=
at=
> ic=
> > ||
>
> > > Image`ImageDump`imsize===All,ImageSize->
> > > {Image`ImageDump`width,Image`ImageDump`height},ImageSize->Image`Image=
Du=
> mp=
>
> > `imsize],PlotRange->{{0,Image`ImageDump`width},
>
> > > {0,Image`ImageDump`height}}]]
>
> > > How did you get your "clear" code?
>
> > > On 12 Jun, 05:41, David Reiss <dbre... at gmail.com> wrote:
>
> > > > ...just following up on the method for reverse engineering of my
> > > > previous post, here is part of the code for ToGraphicsRaster obt=
ai=
> ne=
> > d
> > > > using that approach:
>
> > > > Image`ToGraphicsRaster[img_?Image`ValidImageQ] :=
> > > > Module[{width, height, range, cf, data, interleaving,
> > > > imsize}, {{width, height}, range, cf} =
> > > > ImageData[
> > > > img, {ImageDimensions, DataRange, ColorFunction}]; {interle=
av=
> in=
> > g,
> > > > imsize} = {Interleaving, ImageSize} /. Options[img] /.
> > > > Options[Image];
> > > > If[interleaving === False,
> > > > data = Reverse[ImageData[img, Interleaving -> True]],
> > > > data = Reverse[First[img]]];
> > > > "Graphics"[
> > > > Raster[data, {{0, 0}, {width, height}}, range,
> > > > ColorFunction -> cf],
> > > > If[imsize === Automatic || imsize === All,
> > > > ImageSize -> {width, height}, ImageSize -> imsize],
> > > > PlotRange -> {{0, width}, {0, height}}]]
>
> > > > On Jun 11, 7:06 am, Alexey <lehi... at gmail.com> wrote:
>
> > > > > Hello,
>
> > > > > Does anyone know where such functions as "Image`ToGraphicsRast=
er=
> " =
> > an=
> > > d
> > > > > "Image`PossibleImageQ" are documented. Are there other such built=
-i=
> n
> > > > > functions? At this moment I even can't imagine from where (except=
t=
> hi=
> > s
> > > > > group) I could learn that functions mentioned exist...