Thanks, Bob, for this.
Can you clarify the purpose of “true”, as in:
var x = load(“filename”, TRUE)
I would like to learn when is it necessary. Your example uses “true” for .png
but not for .cif. The help page shows the TRUE flag showing up elsewhere, as
in the function
x = y.split("", TRUE)
I am uncertain of how to use “true" properly.
Matt
On Aug 22, 2015, at 12:51 AM, Robert Hanson
<[email protected]<mailto:[email protected]>> wrote:
http://sourceforge.net/projects/jmol/files/Jmol-beta/Jmol%2014.3/Jmol%2014.3.16/Jmol-14.3.16_2015.08.21-binary.zip/download
Jmol.___JmolVersion="14.3.16_2015.08.21"
new feature: load var x
-- same as load "@x"
-- similar in syntax to write var x t.png
-- example:
var x = load("quartz.cif")
load var x {1 1 1}
bug fix: creating and running and saving binary hash from PNGJ fails
-- allows creating an associative binary array from a PNGJ file
then modifying it and loading that variable
then saving it as a new PNGJ file
-- initial PNGJ file is not necessary if binary array x is created first
-- example:
var x = load("test.png",true)
load "@x"
write test2.png as PNGJ
bug fix: hover callback is not supposed to be stopped with HOVER OFF
bug fix: atom.sx and atom.sy<http://atom.sy/> and atom.sz<http://atom.sz/>
report incorrectly when antialiasing is on
bug fix: write VAR x "test.png" creates a ZIP file instead of a PNGJ file when
x is from load("test.png",true)
bug fix: write test.png as PNGJ (without initial quotes) fails
comments:
OK, that wasn't so bad. Thank you, Rolf, for suggesting this. It is a nice
complement to write var x.
This completes the capability for Jmol or JSmol to read, modify, load, and
save PNGJ and ZIP files.
1) Reading a PNGJ or ZIP file into a variable using TRUE to indicate binary
file:
x = load("test.png", TRUE)
# [x is a binary associative array]
print x.keys
$_BINARY_$
JmolManifest.txt
Jmol_version_14.3.16_2015.08.21__2015-08-21_09.06
_IMAGE_
http___cactus.nci.nih.gov_chemical_structure_caffeine_file_format_sdf_get3d_True
state.spt
where "$_BINARY_$" indicates that entries are byte arrays.
and _IMAGE_ is the PNG image, indicating this is from a PNGJ file
2) modifying that file if desired
# coerce to string:
s = "" + x["state.spt"]
# ...modify here...
# replace state.spt in PNGJ file data
x["state.spt"] = s
# Or, for example, adding an image that will be used for an optional background
image
x = load("test.png",true)
# a standard binary associative array will have just two keys, $BINARY$ and
_DATA_
# only PNGJ has _IMAGE_
x["z.jpg"] = load("z.jpg",true)._DATA_
print x.keys
write var x "test3.png"
....sometime later...
load "test3.png"
background image "test3.png|z.jpg"
3) write to a new PNGJ file
write var x "test2.png"
4) optionally, load that PNGJ data directly from the variable, perhaps to see
that the modifications are correct:
load var x
(new syntax; same as older load "@x")
Note that both of these syntaxes work with standard string file data and can be
extended with options:
x = load("quartz.cif")
load var x {1 1 1}
Bob
------------------------------------------------------------------------------
_______________________________________________
Jmol-users mailing list
[email protected]<mailto:[email protected]>
https://lists.sourceforge.net/lists/listinfo/jmol-users
------------------------------------------------------------------------------
_______________________________________________
Jmol-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jmol-users