AtomUtils.java
上传用户:xjjlds
上传日期:2015-12-05
资源大小:22823k
文件大小:2k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. package com.axiosys.bento4;
  2. import java.util.Iterator;
  3. import java.util.List;
  4. public class AtomUtils {
  5.     public static Atom findAtom(AtomParent parent, String path) {
  6.         Atom atom = null;
  7.         while (path != null) {
  8.             int separator = path.indexOf('/');
  9.             String atomName;
  10.             int index = 0;
  11.             if (separator > 0) {
  12.                 atomName = path.substring(0, separator);
  13.                 path = path.substring(separator+1);
  14.             } else {
  15.                 atomName = path;
  16.                 path = null;
  17.             }
  18.             
  19.             if (atomName.length() != 4) {
  20.                 // we need at least 3 more chars
  21.                 if (atomName.length() < 7) return null;
  22.                 
  23.                 // parse the name trailer
  24.                 if (atomName.charAt(4) != '[' || atomName.charAt(atomName.length()-1) != ']') {
  25.                     return null;
  26.                 }
  27.                 String indexString = atomName.substring(5, atomName.length()-1);
  28.                 index = Integer.parseInt(indexString);
  29.             }
  30.             
  31.             int type = Atom.nameToType(atomName);
  32.             atom = parent.getChild(type, index);
  33.             if (path == null) return atom;
  34.             if (atom instanceof AtomParent) {
  35.                 parent = (AtomParent)atom;
  36.             } else {
  37.                 return null;
  38.             }
  39.         }
  40.         
  41.         return atom;
  42.     }
  43.     public static Atom findChild(List atoms, int type, int index) {
  44.         for (Iterator i = atoms.iterator(); i.hasNext();) {
  45.             Atom atom = (Atom)i.next();
  46.             if (atom.getType() == type) {
  47.                 if (index-- == 0) return atom;
  48.             }
  49.         }
  50.         
  51.         return null;
  52.     }
  53. }