コード例 #1
0
ファイル: TagReader.java プロジェクト: Mur4ik/dsl4xml
  @Override
  public boolean read(ReadingContext aContext) {
    if (mappers == null) {
      withPCDataMappedTo(tagName);
    }

    if (aContext.isStartTagNamed(namespace, tagName)) {
      maybePushNewContextObject(aContext);

      try {
        if (attributes != null) attributes.read(aContext);

        while (aContext.isNotEndTag(namespace, tagName)) {
          for (XmlReader _m : mappers) {
            if (_m.read(aContext)) {
              break;
            }
          }
          aContext.next();
        }
        return true;
      } catch (XmlReadingException anExc) {
        throw anExc;
      } catch (Exception anExc) {
        throw new XmlReadingException(anExc);
      } finally {
        maybePopContext(aContext);
      }
    } else {
      return false;
    }
  }
コード例 #2
0
 protected void readVector(int voxelVectorIndex) throws Exception {
   String data = xr.getXmlData("jvxlVolumeVector", tempDataXml, true, true);
   tempDataXml = tempDataXml.substring(tempDataXml.indexOf(data) + data.length());
   int n = parseIntStr(XmlReader.getXmlAttrib(data, "count"));
   if (n == Integer.MIN_VALUE) vertexDataOnly = true;
   voxelCounts[voxelVectorIndex] = (n < 0 ? 0 : n);
   volumetricVectors[voxelVectorIndex].setT(xr.getXmlPoint(data, "vector"));
   if (isAnisotropic) setVectorAnisotropy(volumetricVectors[voxelVectorIndex]);
 }
コード例 #3
0
 @Override
 protected void readSurfaceData(boolean isMapDataIgnored) throws Exception {
   thisInside = !params.isContoured;
   if (readSurfaceDataXML()) return;
   tempDataXml = xr.getXmlData("jvxlEdgeData", null, true, false);
   bsVoxelBitSet =
       JvxlCoder.jvxlDecodeBitSet(xr.getXmlData("jvxlEdgeData", tempDataXml, false, false));
   // if (thisInside)
   // bsVoxelBitSet = BitSetUtil.copyInvert(bsVoxelBitSet,
   // bsVoxelBitSet.size());
   readSurfaceDataJXR();
 }
コード例 #4
0
  private void getNewNodes() {
    Vector levelNodes = new Vector();
    Vector nextLevelNodes = new Vector();
    Vector passedNodes = new Vector();
    levelNodes.add(centerNode.name);
    for (int level = 0; level <= Config.navigationDepth; level++) {
      for (Enumeration e = levelNodes.elements(); e.hasMoreElements(); ) {
        String nodeName = (String) e.nextElement();

        if (!passedNodes.contains(nodeName)) {
          passedNodes.add(nodeName);

          Node node = graph.nodeFromName(nodeName);
          if (node == null) {
            node = xmlReader.getNode(nodeName);
            graph.add(node);
          }
          node.passed = true;

          Set linkSet = node.links.keySet();
          for (Iterator it = linkSet.iterator(); it.hasNext(); ) {
            String neighbourName = (String) it.next();
            if (!passedNodes.contains(neighbourName) && !levelNodes.contains(neighbourName)) {
              nextLevelNodes.add(neighbourName);
            }
          }
        }
      }
      levelNodes = nextLevelNodes;
      nextLevelNodes = new Vector();
    }
  }
コード例 #5
0
 /**
  * "edge" data includes two parts -- a compressed bitset indicating exactly which edges, in order
  * or processing by Jmol, are crossed by the surface, and a set of fractions indicating how far
  * along that edge (good to 1 part in 8100) that surface crosses that edge. We are just reading he
  * fractions here.
  *
  * <p>"color" data comprises the corresponding sequence of data mapping values, again stored to a
  * precision of 1 part in 8100, relative to a range of values.
  *
  * @param type
  * @param nPoints
  * @return data
  */
 protected String jvxlReadFractionData(String type, int nPoints) {
   String str;
   try {
     if (type.equals("edge")) {
       str = JvxlCoder.jvxlDecompressString(XmlReader.getXmlAttrib(tempDataXml, "data"));
     } else {
       String data = xr.getXmlData("jvxlColorData", null, true, false);
       jvxlData.isJvxlPrecisionColor = getEncoding(data).endsWith("2");
       str = JvxlCoder.jvxlDecompressString(XmlReader.getXmlAttrib(data, "data"));
     }
   } catch (Exception e) {
     Logger.error("Error reading " + type + " data " + e);
     throw new NullPointerException();
   }
   return str;
 }
コード例 #6
0
ファイル: XmlDemo.java プロジェクト: jbudynk/starjava
  public static void main(String argv[]) {
    File file = new File("xml1.xml");
    XmlReader reader;
    XmlWriter writer;
    XmlDocument document;
    String xmlout;

    // Construct a document and parse it
    System.out.println("We are going to parse from " + file + ".");
    System.out.println("The parser will be set to verbose mode\n");

    document = new XmlDocument(file);
    reader = new XmlReader();
    reader.setVerbose(true);
    try {
      reader.parse(document);
    } catch (Exception e) {
      e.printStackTrace();
    }
    int errors = reader.getErrorCount();
    int warnings = reader.getWarningCount();

    System.err.println("Completed: " + errors + " errors, " + warnings + " warnings");
    if (errors > 0) {
      System.err.println("Unrecoverable errors in XML. Stop.");
      return;
    }

    // Now print it
    System.out.println("\nHaving parsed the document, we will print it out.");
    System.out.println("Here is the DTD:\n");

    writer = new XmlWriter();
    Writer out = new OutputStreamWriter(System.out);
    try {
      writer.writeDTD(document, out);
    } catch (Exception e) {
      e.printStackTrace();
    }

    System.out.println("\nHere is the XML:\n");
    try {
      writer.write(document, out);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
コード例 #7
0
 @Override
 protected void gotoData(int n, int nPoints) throws Exception {
   if (n > 0) Logger.info("skipping " + n + " data sets, " + nPoints + " points each");
   vertexDataOnly = jvxlData.vertexDataOnly = (nPoints == 0);
   for (int i = 0; i < n; i++) {
     jvxlSkipData(nPoints, true);
   }
   xr.toTag("jvxlSurface");
   jvxlReadSurfaceInfo();
 }
コード例 #8
0
ファイル: xmlUpdateFromURL.java プロジェクト: blairc/gsh
 /**
  * Update Groups Registry from XML at URL.
  *
  * <p>
  *
  * @param i BeanShell interpreter.
  * @param stack BeanShell call stack.
  * @param url Use the XML at this <tt>URL</tt> for updates.
  * @return True if successful.
  * @throws GrouperShellException
  * @since 0.1.0
  */
 public static boolean invoke(Interpreter i, CallStack stack, URL url)
     throws GrouperShellException {
   GrouperShell.setOurCommand(i, true);
   try {
     GrouperSession s = GrouperShell.getSession(i);
     XmlImporter importer = new XmlImporter(s, new Properties());
     importer.update(XmlReader.getDocumentFromURL(url));
     return true;
   } catch (GrouperException eG) {
     GrouperShell.error(i, eG);
   }
   return false;
 } // public static boolean invoke(i, stack, url)
コード例 #9
0
 protected void jvxlDecodeContourData(JvxlData jvxlData, String data) throws Exception {
   List<List<Object>> vs = new List<List<Object>>();
   SB values = new SB();
   SB colors = new SB();
   int pt = -1;
   jvxlData.vContours = null;
   if (data == null) return;
   while ((pt = data.indexOf("<jvxlContour", pt + 1)) >= 0) {
     List<Object> v = new List<Object>();
     String s = xr.getXmlData("jvxlContour", data.substring(pt), true, false);
     float value = parseFloatStr(XmlReader.getXmlAttrib(s, "value"));
     values.append(" ").appendF(value);
     int color = getColor(XmlReader.getXmlAttrib(s, "color"));
     short colix = C.getColix(color);
     colors.append(" ").append(Escape.escapeColor(color));
     String fData = JvxlCoder.jvxlDecompressString(XmlReader.getXmlAttrib(s, "data"));
     BS bs = JvxlCoder.jvxlDecodeBitSet(xr.getXmlData("jvxlContour", s, false, false));
     int n = bs.length();
     IsosurfaceMesh.setContourVector(v, n, bs, value, colix, color, SB.newS(fData));
     vs.addLast(v);
   }
   int n = vs.size();
   if (n > 0) {
     jvxlData.vContours = AU.createArrayOfArrayList(n);
     // 3D contour values and colors
     jvxlData.contourColixes = params.contourColixes = new short[n];
     jvxlData.contourValues = params.contoursDiscrete = new float[n];
     for (int i = 0; i < n; i++) {
       jvxlData.vContours[i] = vs.get(i);
       jvxlData.contourValues[i] = ((Float) jvxlData.vContours[i].get(2)).floatValue();
       jvxlData.contourColixes[i] = ((short[]) jvxlData.vContours[i].get(3))[0];
     }
     jvxlData.contourColors = C.getHexCodes(jvxlData.contourColixes);
     Logger.info("JVXL read: " + n + " discrete contours");
     Logger.info("JVXL read: contour values: " + values);
     Logger.info("JVXL read: contour colors: " + colors);
   }
 }
コード例 #10
0
 public boolean deserializeChild(
     final DeserializationFactory<T, M> factory, @NotNull final XmlReader in) throws XmlException {
   if (ProcessConsts.Engine.NAMESPACE.equals(in.getNamespaceUri())) {
     switch (in.getLocalName().toString()) {
       case EndNode.ELEMENTLOCALNAME:
         factory.deserializeEndNode(asM(), in);
         return true;
       case Activity.ELEMENTLOCALNAME:
         factory.deserializeActivity(asM(), in);
         return true;
       case StartNode.ELEMENTLOCALNAME:
         factory.deserializeStartNode(asM(), in);
         return true;
       case Join.ELEMENTLOCALNAME:
         factory.deserializeJoin(asM(), in);
         return true;
       case Split.ELEMENTLOCALNAME:
         factory.deserializeSplit(asM(), in);
         return true;
     }
   }
   return false;
 }
コード例 #11
0
 /**
  * decode vertex data found within <jvxlVertexData> element as created by jvxlEncodeVertexData
  * (see above)
  *
  * @param data tag and contents
  * @param asArray or just addVertexCopy
  * @return Point3f[] if desired
  * @throws Exception
  */
 public P3[] jvxlDecodeVertexData(String data, boolean asArray) throws Exception {
   int vertexCount = parseIntStr(XmlReader.getXmlAttrib(data, "count"));
   if (!asArray) Logger.info("Reading " + vertexCount + " vertices");
   int ptCount = vertexCount * 3;
   P3[] vertices = (asArray ? new P3[vertexCount] : null);
   P3 p = (asArray ? null : new P3());
   float fraction;
   String vData = XmlReader.getXmlAttrib(data, "data");
   String encoding = getEncoding(data);
   if ("none".equals(encoding)) {
     if (vData.length() == 0) vData = xr.getXmlData("jvxlVertexData", data, false, false);
     float[] fdata = PT.parseFloatArray(vData);
     // first point is count -- ignored.
     if (fdata[0] != vertexCount * 3)
       Logger.info(
           "JvxlXmlReader: vertexData count="
               + ((int) fdata[0])
               + "; expected "
               + (vertexCount * 3));
     for (int i = 0, pt = 1; i < vertexCount; i++) {
       p = P3.new3(fdata[pt++], fdata[pt++], fdata[pt++]);
       if (asArray) vertices[i] = p;
       else addVertexCopy(p, 0, i);
     }
   } else {
     P3 min = xr.getXmlPoint(data, "min");
     P3 range = xr.getXmlPoint(data, "max");
     range.sub(min);
     int colorFractionBase = jvxlData.colorFractionBase;
     int colorFractionRange = jvxlData.colorFractionRange;
     String s = JvxlCoder.jvxlDecompressString(vData);
     if (s.length() == 0) s = xr.getXmlData("jvxlVertexData", data, false, false);
     for (int i = 0, pt = -1; i < vertexCount; i++) {
       if (asArray) p = vertices[i] = new P3();
       fraction =
           JvxlCoder.jvxlFractionFromCharacter2(
               s.charAt(++pt), s.charAt(pt + ptCount), colorFractionBase, colorFractionRange);
       p.x = min.x + fraction * range.x;
       fraction =
           JvxlCoder.jvxlFractionFromCharacter2(
               s.charAt(++pt), s.charAt(pt + ptCount), colorFractionBase, colorFractionRange);
       p.y = min.y + fraction * range.y;
       fraction =
           JvxlCoder.jvxlFractionFromCharacter2(
               s.charAt(++pt), s.charAt(pt + ptCount), colorFractionBase, colorFractionRange);
       p.z = min.z + fraction * range.z;
       if (!asArray) addVertexCopy(p, 0, i);
     }
   }
   return vertices;
 }
コード例 #12
0
  public static <T extends ProcessNode<T, M>, M extends ProcessModelBase<T, M>> M deserialize(
      final DeserializationFactory<T, M> factory, final M processModel, final XmlReader in)
      throws XmlException {

    XmlReaderUtil.skipPreamble(in);
    final QName elementName = ELEMENTNAME;
    assert XmlReaderUtil.isElement(in, elementName)
        : "Expected " + elementName + " but found " + in.getLocalName();
    for (int i = in.getAttributeCount() - 1; i >= 0; --i) {
      processModel.deserializeAttribute(
          in.getAttributeNamespace(i), in.getAttributeLocalName(i), in.getAttributeValue(i));
    }

    EventType event = null;
    loop:
    while (in.hasNext() && event != XmlStreaming.END_ELEMENT) {
      switch ((event = in.next())) {
        case START_ELEMENT:
          if (processModel.deserializeChild(factory, in)) {
            continue loop;
          }
          XmlReaderUtil.unhandledEvent(in);
          break;
        case TEXT:
        case CDSECT:
          if (false) {
            continue loop;
          }
        default:
          XmlReaderUtil.unhandledEvent(in);
      }
    }

    for (final T node : processModel.getModelNodes()) {
      for (final Identifiable pred : node.getPredecessors()) {
        final T predNode = processModel.getNode(pred);
        if (predNode != null) {
          predNode.addSuccessor(node);
        }
      }
    }
    return processModel;
  }
コード例 #13
0
  /**
   * Parses all xml in a given src dir for xml to compare with the deploy from src xml looking for
   * destructive changes to create.
   *
   * @param origPath
   *     <p>The original path where the metadata type being parsed lives in the src dir.
   * @param toPath
   *     <p>The dir path to the src dir of the Salesforce org to be deployed to.
   * @param fromPath
   *     <p>The dir path to the src dir of the Salesforce org being deployed from.
   * @param metaType
   *     <p>The metadata type (2nd property in each line in package.properties) to be parsed for
   *     destruction.
   * @param dirName
   *     <p>The directory name where the metadata type (1st property in each line in
   *     package.properties) lives in the src dir.
   * @param searchTerm
   *     <p>This term (4th property in each line in package.properties) determines the xml data node
   *     name to search for. This is usually fullName, but not always.
   * @param packageName
   *     <p>The metadata type (2nd property in each line in package.properties) to be parsed for
   *     destruction.
   */
  private void seekAndDestroy(
      final String origPath,
      String toPath,
      String fromPath,
      String metaType,
      String dirName,
      String searchTerm,
      String packageName) {

    File root = new File(toPath);
    File[] list = root.listFiles();

    for (File f : list) {
      if (f.isDirectory()) {
        seekAndDestroy(origPath, f.getPath(), fromPath, metaType, dirName, searchTerm, packageName);
      } else {
        // Compare xml
        File fromFile =
            new File(
                f.getPath()
                    .replace(
                        orgTo.getSourceFolder().getPath(), orgFrom.getSourceFolder().getPath()));

        if (fromFile.exists() && !fromFile.getName().endsWith(".xml")) {
          ArrayList<String> rets =
              XmlReader.compareXml(f.getPath(), fromFile.getPath(), metaType, searchTerm);

          String name = f.getName();
          name = name.substring(0, name.indexOf('.'));
          for (String component : rets) {
            if (component.indexOf('|') > -1) {
              component = component.replace("|", ".");
            }

            addDestructiveComponents(packageName, component, name);
          }
        }
      }
    }
  }
コード例 #14
0
 @Override
 protected void readParameters() throws Exception {
   String s = xr.getXmlData("jvxlFileTitle", null, false, false);
   jvxlFileHeaderBuffer = SB.newS(s);
   xr.toTag("jvxlVolumeData");
   String data = tempDataXml = xr.getXmlData("jvxlVolumeData", null, true, false);
   volumetricOrigin.setT(xr.getXmlPoint(data, "origin"));
   isAngstroms = true;
   readVector(0);
   readVector(1);
   readVector(2);
   line = xr.toTag("jvxlSurfaceSet");
   nSurfaces = parseIntStr(XmlReader.getXmlAttrib(line, "count"));
   Logger.info("jvxl file surfaces: " + nSurfaces);
   Logger.info("using default edge fraction base and range");
   Logger.info("using default color fraction base and range");
   cJvxlEdgeNaN = (char) (edgeFractionBase + edgeFractionRange);
 }
コード例 #15
0
 /**
  * retrieve Jvxl 2.0 format vertex/triangle/edge/color data found within <jvxlSurfaceData> element
  *
  * @throws Exception
  */
 protected void getEncodedVertexData() throws Exception {
   // get vertices
   String sdata = xr.getXmlData("jvxlSurfaceData", null, true, false);
   jvxlDecodeVertexData(xr.getXmlData("jvxlVertexData", sdata, true, false), false);
   // get triangles
   String tData = xr.getXmlData("jvxlTriangleData", sdata, true, false);
   String edgeData = xr.getXmlData("jvxlTriangleEdgeData", sdata, true, false);
   // note: polygon color data is always between tags, not an attribute, and not compressed:
   String polygonColorData = xr.getXmlData("jvxlPolygonColorData", sdata, false, false);
   jvxlDecodeTriangleData(tData, edgeData, polygonColorData);
   // get vertex value data or vertex color data:
   String cData = xr.getXmlData("jvxlColorData", sdata, true, false);
   jvxlColorEncodingRead = getEncoding(cData);
   jvxlData.isJvxlPrecisionColor = jvxlColorEncodingRead.endsWith("2");
   cData = getData(cData, "jvxlColorData");
   jvxlColorDataRead =
       (jvxlColorEncodingRead.equals("none") ? cData : JvxlCoder.jvxlDecompressString(cData));
   jvxlDataIsColorMapped =
       ((params.colorRgb == Integer.MIN_VALUE || params.colorRgb == Integer.MAX_VALUE)
           && jvxlColorDataRead.length() > 0);
   // get contours
   if (haveContourData)
     jvxlDecodeContourData(jvxlData, xr.getXmlData("jvxlContourData", null, false, false));
 }
コード例 #16
0
 public void navigateFirst(String nodeName) {
   Node node = xmlReader.getNode(nodeName);
   graph.add(node);
   navigateTo(node);
 }
コード例 #17
0
  @Override
  protected boolean gotoAndReadVoxelData(boolean isMapData) {
    initializeVolumetricData();
    if (nPointsX < 0 || nPointsY < 0 || nPointsZ < 0) return true;
    try {
      gotoData(params.fileIndex - 1, nPointsX * nPointsY * nPointsZ);
      if (vertexDataOnly) return true;
      volumeData.setMappingPlane(params.thePlane);
      readSurfaceData(isMapData);
      volumeData.setMappingPlane(null);

      if (edgeDataCount > 0) jvxlEdgeDataRead = jvxlReadFractionData("edge", edgeDataCount);
      params.bsExcluded = jvxlData.jvxlExcluded = new BS[4];
      hasColorData = (colorDataCount > 0); // for nonXML version of JVXL
      if (hasColorData) jvxlColorDataRead = jvxlReadFractionData("color", colorDataCount);
      if (excludedVertexCount > 0) {
        jvxlData.jvxlExcluded[0] =
            JvxlCoder.jvxlDecodeBitSet(xr.getXmlData("jvxlExcludedVertexData", null, false, false));
        if (xr.isNext("jvxlExcludedPlaneData"))
          jvxlData.jvxlExcluded[2] =
              JvxlCoder.jvxlDecodeBitSet(
                  xr.getXmlData("jvxlExcludedPlaneData", null, false, false));
      }
      if (excludedTriangleCount > 0)
        jvxlData.jvxlExcluded[3] =
            JvxlCoder.jvxlDecodeBitSet(
                xr.getXmlData("jvxlExcludedTriangleData", null, false, false));
      if (invalidatedVertexCount > 0)
        jvxlData.jvxlExcluded[1] =
            JvxlCoder.jvxlDecodeBitSet(
                xr.getXmlData("jvxlInvalidatedVertexData", null, false, false));
      if (haveContourData)
        jvxlDecodeContourData(jvxlData, xr.getXmlData("jvxlContourData", null, false, false));
      if (jvxlDataIsColorMapped && jvxlData.nVertexColors > 0) {
        jvxlData.vertexColorMap = new Hashtable<String, BS>();
        String vdata = xr.getXmlData("jvxlVertexColorData", null, true, false);
        String baseColor = XmlReader.getXmlAttrib(vdata, "baseColor");
        jvxlData.baseColor = (baseColor.length() > 0 ? baseColor : null);
        for (int i = 0; i < jvxlData.nVertexColors; i++) {
          String s = xr.getXmlData("jvxlColorMap", vdata, true, false);
          String color = XmlReader.getXmlAttrib(s, "color");
          BS bs = JvxlCoder.jvxlDecodeBitSet(xr.getXmlData("jvxlColorMap", s, false, false));
          jvxlData.vertexColorMap.put(color, bs);
        }
      }

    } catch (Exception e) {
      Logger.error(e.toString());
      return false;
    }
    return true;
  }
コード例 #18
0
 /**
  * decode triangle data found within <jvxlTriangleData> element as created with
  * jvxlEncodeTriangleData (see above)
  *
  * @param tdata tag and contents
  * @param edgeData
  * @param colorData
  * @throws Exception
  */
 void jvxlDecodeTriangleData(String tdata, String edgeData, String colorData) throws Exception {
   int nTriangles = parseIntStr(XmlReader.getXmlAttrib(tdata, "count"));
   if (nTriangles < 0) return;
   int[] nextc = new int[1];
   int nColors = (colorData == null ? -1 : PT.parseIntNext(colorData, nextc));
   int color = 0;
   Logger.info("Reading " + nTriangles + " triangles");
   String encoding = getEncoding(tdata);
   tdata = getData(tdata, "jvxlTriangleData");
   String edata = getData(edgeData, "jvxlTriangleEdgeData");
   int[] vertex = new int[3];
   int[] nextp = new int[1];
   int[] nexte = null;
   int edgeMask = 7;
   boolean haveEdgeInfo;
   boolean haveEncoding = !"none".equals(encoding);
   if (haveEncoding) {
     tdata = JvxlCoder.jvxlDecompressString(tdata);
     edata = JvxlCoder.jvxlDecompressString(edata).trim();
     haveEdgeInfo = (edata.length() == nTriangles);
   } else {
     int n = PT.parseIntNext(tdata, nextp);
     haveEdgeInfo = (edata.length() > 0);
     if (haveEdgeInfo) {
       nexte = new int[1];
       PT.parseIntNext(edata, nexte); // throw away count
     } else if (n > 0) {
       Logger.info("JvxlXmlReader: jvxlTriangleEdgeData count=" + n + "; expected " + nTriangles);
     }
   }
   for (int i = 0, v = 0, p = 0, pt = -1; i < nTriangles; ) {
     if (haveEncoding) {
       char ch = tdata.charAt(++pt);
       int diff;
       switch (ch) {
         case '!':
           diff = 0;
           break;
         case '+':
         case '.':
         case ' ':
         case '\n':
         case '\r':
         case '\t':
         case ',':
           continue;
         case '-':
         case '0':
         case '1':
         case '2':
         case '3':
         case '4':
         case '5':
         case '6':
         case '7':
         case '8':
         case '9':
           nextp[0] = pt;
           diff = PT.parseIntNext(tdata, nextp);
           pt = nextp[0] - 1;
           break;
         default:
           diff = ch - 92; // '\' character
       }
       v += diff;
     } else {
       v = PT.parseIntNext(tdata, nextp) - 1;
     }
     vertex[p] = v;
     if (++p == 3) {
       p = 0;
       if (haveEdgeInfo) {
         edgeMask =
             (nexte == null ? edata.charAt(i) - '0' : javajs.util.PT.parseIntNext(edata, nexte));
         if (edgeMask < 0 || edgeMask > 7) edgeMask = 7;
       }
       if (nColors > 0) {
         int c = PT.parseIntNext(colorData, nextc);
         if (c == Integer.MIN_VALUE) nColors = 0;
         else color = c;
         nColors--;
       }
       addTriangleCheck(vertex[0], vertex[1], vertex[2], edgeMask, 0, false, color);
       i++;
     }
   }
 }
コード例 #19
0
 private static String getEncoding(String data) {
   // original JVXL does not include "encoding"
   if (XmlReader.getXmlAttrib(data, "len").length() > 0) return "";
   String s = XmlReader.getXmlAttrib(data, "encoding");
   return (s.length() == 0 ? "none" : s);
 }
コード例 #20
0
 private String getData(String sdata, String name) throws Exception {
   String data = XmlReader.getXmlAttrib(sdata, "data");
   if (data.length() == 0) data = xr.getXmlData(name, sdata, false, false);
   return data;
 }
コード例 #21
0
  protected void jvxlReadSurfaceInfo() throws Exception {
    String s;
    String data = xr.getXmlData("jvxlSurfaceInfo", null, true, true);
    isXLowToHigh = XmlReader.getXmlAttrib(data, "isXLowToHigh").equals("true");
    jvxlCutoff = parseFloatStr(XmlReader.getXmlAttrib(data, "cutoff"));
    if (!Float.isNaN(jvxlCutoff)) Logger.info("JVXL read: cutoff " + jvxlCutoff);
    int nContourData = parseIntStr(XmlReader.getXmlAttrib(data, "nContourData"));
    haveContourData = (nContourData > 0);
    params.isContoured = XmlReader.getXmlAttrib(data, "contoured").equals("true");
    if (params.isContoured) {
      int nContoursRead = parseIntStr(XmlReader.getXmlAttrib(data, "nContours"));
      if (nContoursRead <= 0) {
        nContoursRead = 0;
      } else {
        s = XmlReader.getXmlAttrib(data, "contourValues");
        if (s.length() > 0) {
          jvxlData.contourValues = params.contoursDiscrete = parseFloatArrayStr(s);
          Logger.info("JVXL read: contourValues " + Escape.eAF(jvxlData.contourValues));
        }
        s = XmlReader.getXmlAttrib(data, "contourColors");
        if (s.length() > 0) {
          jvxlData.contourColixes = params.contourColixes = C.getColixArray(s);
          jvxlData.contourColors = C.getHexCodes(jvxlData.contourColixes);
          Logger.info("JVXL read: contourColixes " + C.getHexCodes(jvxlData.contourColixes));
        }
        params.contourFromZero = XmlReader.getXmlAttrib(data, "contourFromZero").equals("true");
      }
      params.nContours = (haveContourData ? nContourData : nContoursRead);
      // TODO ? params.contourFromZero = false; // MEP data to complete the plane
    }
    jvxlData.nVertexColors = parseIntStr(XmlReader.getXmlAttrib(data, "nVertexColors"));
    params.isBicolorMap = XmlReader.getXmlAttrib(data, "bicolorMap").equals("true");
    if (params.isBicolorMap) {
      // TODO -- not quite right, because
      s = XmlReader.getXmlAttrib(data, "colorPositive");
      if (s.length() > 0
          && params.colorRgb == Integer.MIN_VALUE
          && params.colorPos == Parameters.defaultColorPositive)
        params.colorPos = CU.getArgbFromString(s);
      s = XmlReader.getXmlAttrib(data, "colorNegative");
      if (s.length() > 0
          && params.colorRgb == Integer.MIN_VALUE
          && params.colorNeg == Parameters.defaultColorNegative)
        params.colorNeg = CU.getArgbFromString(s);
    }
    if (params.isBicolorMap || params.colorBySign) jvxlCutoff = 0;
    jvxlDataIsColorMapped =
        ((params.colorRgb == Integer.MIN_VALUE || params.colorRgb == Integer.MAX_VALUE)
            && (params.isBicolorMap || XmlReader.getXmlAttrib(data, "colorMapped").equals("true")));
    // isJvxlPrecisionColor is for information only -- will be superceded by encoding attribute of
    // jvxlColorData
    jvxlData.isJvxlPrecisionColor = XmlReader.getXmlAttrib(data, "precisionColor").equals("true");
    jvxlData.jvxlDataIsColorDensity =
        params.colorDensity =
            (params.colorRgb == Integer.MIN_VALUE
                && XmlReader.getXmlAttrib(data, "colorDensity").equals("true"));
    if (jvxlData.jvxlDataIsColorDensity && Float.isNaN(params.pointSize)) {
      s = XmlReader.getXmlAttrib(data, "pointSize");
      if (s.length() > 0) jvxlData.pointSize = params.pointSize = parseFloatStr(s);
    }
    s = XmlReader.getXmlAttrib(data, "allowVolumeRender");
    jvxlData.allowVolumeRender =
        params.allowVolumeRender = (s.length() == 0 || s.equalsIgnoreCase("true"));
    s = XmlReader.getXmlAttrib(data, "plane");
    if (s.indexOf("{") >= 0) {
      params.thePlane = null;
      params.mapLattice = null;
      try {
        params.thePlane = (P4) Escape.uP(s);
        s = XmlReader.getXmlAttrib(data, "maplattice");
        Logger.info("JVXL read: plane " + params.thePlane);
        if (s.indexOf("{") >= 0) {
          params.mapLattice = (P3) Escape.uP(s);
          Logger.info("JVXL read: mapLattice " + params.mapLattice);
        }
        if (params.scale3d == 0)
          params.scale3d = parseFloatStr(XmlReader.getXmlAttrib(data, "scale3d"));
        if (Float.isNaN(params.scale3d)) params.scale3d = 0;
      } catch (Exception e) {
        if (params.thePlane == null) {
          Logger.error("JVXL Error reading plane definition -- setting to 0 0 1 0  (z=0)");
          params.thePlane = P4.new4(0, 0, 1, 0);
        } else {
          Logger.error("JVXL Error reading mapLattice definition -- ignored");
        }
      }
      surfaceDataCount = 0;
      edgeDataCount = 0;
    } else {
      params.thePlane = null;
      surfaceDataCount = parseIntStr(XmlReader.getXmlAttrib(data, "nSurfaceInts"));
      edgeDataCount = parseIntStr(XmlReader.getXmlAttrib(data, "nBytesUncompressedEdgeData"));
    }
    excludedVertexCount = parseIntStr(XmlReader.getXmlAttrib(data, "nExcludedVertexes"));
    excludedTriangleCount = parseIntStr(XmlReader.getXmlAttrib(data, "nExcludedTriangles"));
    invalidatedVertexCount = parseIntStr(XmlReader.getXmlAttrib(data, "nInvalidatedVertexes"));
    s = XmlReader.getXmlAttrib(data, "slabInfo");
    if (s.length() > 0) jvxlData.slabInfo = s;
    colorDataCount =
        Math.max(0, parseIntStr(XmlReader.getXmlAttrib(data, "nBytesUncompressedColorData")));
    jvxlDataIs2dContour = (params.thePlane != null && jvxlDataIsColorMapped);

    // new Jmol 12.1.50
    jvxlData.color = XmlReader.getXmlAttrib(data, "color");
    if (jvxlData.color.length() == 0 || jvxlData.color.indexOf("null") >= 0)
      jvxlData.color = "orange";
    jvxlData.translucency = parseFloatStr(XmlReader.getXmlAttrib(data, "translucency"));
    if (Float.isNaN(jvxlData.translucency)) jvxlData.translucency = 0;
    s = XmlReader.getXmlAttrib(data, "meshColor");
    if (s.length() > 0) jvxlData.meshColor = s;
    s = XmlReader.getXmlAttrib(data, "rendering");
    if (s.length() > 0) jvxlData.rendering = s;
    jvxlData.colorScheme = XmlReader.getXmlAttrib(data, "colorScheme");
    if (jvxlData.colorScheme.length() == 0) jvxlData.colorScheme = null;
    if (jvxlData.thisSet < 0) {
      int n = parseIntStr(XmlReader.getXmlAttrib(data, "set"));
      if (n > 0) jvxlData.thisSet = n - 1;
    }
    jvxlData.slabValue = parseIntStr(XmlReader.getXmlAttrib(data, "slabValue"));
    jvxlData.isSlabbable = (XmlReader.getXmlAttrib(data, "slabbable").equalsIgnoreCase("true"));
    jvxlData.diameter = parseIntStr(XmlReader.getXmlAttrib(data, "diameter"));
    if (jvxlData.diameter == Integer.MIN_VALUE) jvxlData.diameter = 0;

    if (jvxlDataIs2dContour) params.isContoured = true;

    if (params.colorBySign) params.isBicolorMap = true;
    boolean insideOut = XmlReader.getXmlAttrib(data, "insideOut").equals("true");
    float dataMin = Float.NaN;
    float dataMax = Float.NaN;
    float red = Float.NaN;
    float blue = Float.NaN;
    if (jvxlDataIsColorMapped) {
      dataMin = parseFloatStr(XmlReader.getXmlAttrib(data, "dataMinimum"));
      dataMax = parseFloatStr(XmlReader.getXmlAttrib(data, "dataMaximum"));
      red = parseFloatStr(XmlReader.getXmlAttrib(data, "valueMappedToRed"));
      blue = parseFloatStr(XmlReader.getXmlAttrib(data, "valueMappedToBlue"));
      if (Float.isNaN(dataMin)) {
        dataMin = red = -1f;
        dataMax = blue = 1f;
      }
    }
    jvxlSetColorRanges(dataMin, dataMax, red, blue, insideOut);
  }
コード例 #22
0
 protected void jvxlSkipData(
     @SuppressWarnings("unused") int nPoints, @SuppressWarnings("unused") boolean doSkipColorData)
     throws Exception {
   readLine();
   xr.skipTag("jvxlSurface");
 }