📄 simplesmilcontrol.java
字号:
if (refElement.attributeValue("src").equalsIgnoreCase(fileName)){
parContent.remove(refElement);
// 如果该桢中已经没有对象,且允许删除桢,则将该桢删除
if (parContent.content().size() == 0 && delSlidIfNoContent){
removeSlid(slidNO);
}
break;
}
}
}
}
/**
* 更新桢的显示时间
* @param slidNO
* @param newTime
* @return 返回老的时间设置
*/
public String updateSlidTimeInterval(int slidNO, int newTime){
List list = body.elements();
if (slidNO > list.size()){
return null;
}
Element parContent = (Element)list.get(slidNO);
String oldTime = parContent.attributeValue("dur");
parContent.setAttributeValue("dur", String.valueOf(newTime) + "s");
return oldTime;
}
/**
* 获得指定内容在哪些桢中
* @param objectName 内容的名称
* @return 桢
*/
public List getObjectAtSlidNo(String objectName){
List result = new LinkedList();
for (int i = 0; i < listSlid.size(); i++){
Element pur = (Element)listSlid.get(i);
List subSrc = pur.elements();
for (int j = 0; j < subSrc.size(); j++){
Element src = (Element)subSrc.get(j);
if (src.attributeValue("src").equalsIgnoreCase(objectName)){
result.add(new Integer(i));
}
}
}
return result;
}
/**
* 返回指定桢内容内的元素名称集合
* @param slidNo 指定桢
* @return 指定桢内容内的元素名称集合
*/
public List getObjectsFromSlid(int slidNo){
List list = body.elements();
int nNo = slidNo;
if (list.size() <= slidNo){
nNo = list.size() - 1;
}
Element purElement = (Element)list.get(nNo);
List mimeNameList = new LinkedList();
for (int i = 0; i < purElement.elements().size(); i++){
mimeNameList.add(((Element)purElement.elements().get(i)).attributeValue("src"));
}
return mimeNameList;
}
/**
* 返回指定桢的显示时间(秒)
* @param slidNO 指定桢
* @return 返回指定桢的显示时间(秒)
*/
public int getSlidTimeinterval(int slidNO){
List list = body.elements();
if (slidNO > list.size()){
return -1;
}
Element parContent = (Element)list.get(slidNO);
String tmp = parContent.attributeValue("dur");
tmp = tmp.substring(0, tmp.length() - 1);
return Integer.parseInt(tmp);
}
/**
* 获得空桢列表
* @return 空桢列表(空桢编号的集合)
*/
public List getNullSlid(){
List list = body.elements();
List result = new LinkedList();
for (int i = 0; i < list.size(); i++){
Element e = (Element)list.get(i);
if (e.elements().size() == 0){
result.add(new Integer(i));
}
}
return result;
}
/**
* 返回该SMIL对象形成的完整XML内容,例如:
* <smil>
* <body>
* <par dur="10000ms">
* <img src = "out_temp_1.gif" />
* <text src = "1.txt" />
* <audio src = "town.mid" />
* </par>
*
* <par dur="10000ms">
* <text src = "interface.txt" />
* </par>
* </body>
* </smil>
*/
public String toString(){
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
try {
XMLWriter outp = new XMLWriter(buffer);
outp.write(doc);
outp.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
buffer.close();
} catch (IOException e1) {
e1.printStackTrace();
}
String result = new String(buffer.toByteArray());
result = result.substring("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r".length());
try {
result = new String(result.getBytes("UTF-8"), "GBK");
} catch (UnsupportedEncodingException e2) {
e2.printStackTrace();
}
System.out.println("获得的SMIL String: " + result);
return result;
}
/**
* 添加指定Mime类型的文件内容到SMIL
* @param mimeType Mime类型
* @param slidNo 指定桢
* @param name 文件名称
* @param pageInsertPos 插入位置
*/
public void addMimeContent(String mimeType, int slidNo, String name, int pageInsertPos){
// 如果是文本类型的
if (mimeType.length() >= "text".length() &&
mimeType.substring(0, 4).equalsIgnoreCase("text")){
addText(slidNo, name, pageInsertPos);
}
// 是图片类型
else if (mimeType.length() >= "image".length() &&
mimeType.substring(0, 5).equalsIgnoreCase("image")){
addImage(slidNo, name, pageInsertPos);
}
// 是声音类型
else if (mimeType.length() >= "audio".length() &&
mimeType.substring(0, 5).equalsIgnoreCase("audio")){
addAudio(slidNo, name, pageInsertPos);
}
// 是声音类型
else if (mimeType.equalsIgnoreCase("text/x-iMelody") ||
mimeType.equalsIgnoreCase("text/x-eMelody")){
addAudio(slidNo, name, pageInsertPos);
}
// 其他类型
else {
addRef(slidNo, name, pageInsertPos);
}
}
/**
* 添加指定Mime类型的文件内容到SMIL
* @param mimeType Mime类型
* @param slidNo 指定桢
* @param name 文件名称
*/
public void addMimeContent(String mimeType, int slidNo, String name){
// 如果是文本类型的
if (mimeType.length() >= "text".length() &&
mimeType.substring(0, 4).equalsIgnoreCase("text")){
addText(slidNo, name);
}
// 是图片类型
else if (mimeType.length() >= "image".length() &&
mimeType.substring(0, 5).equalsIgnoreCase("image")){
addImage(slidNo, name);
}
// 是声音类型
else if (mimeType.length() >= "audio".length() &&
mimeType.substring(0, 5).equalsIgnoreCase("audio")){
addAudio(slidNo, name);
}
// 是声音类型
else if (mimeType.equalsIgnoreCase("text/x-iMelody") ||
mimeType.equalsIgnoreCase("text/x-eMelody")){
addAudio(slidNo, name);
}
// 其他类型
else {
addRef(slidNo, name);
}
}
/* public static void main(String args[]){
SimpleSmilControl c = new SimpleSmilControl();
int n = c.addSlid(1000);
c.addText(n, "1.txt");
c.addImage(n, "myI.jpg");
c.addAudio(n, "myAu.mid");
System.out.println(c.toString());
int m = c.addSlid(2000);
c.addText(m, "2.text");
System.out.println(c.toString());
c.removeSlid(n);
System.out.println(c.toString());
SimpleSmilControl smil = new SimpleSmilControl("<?xml version=\"1.0\" encoding=\"UTF-8\"?><smil><body><par dur=\"20s\"><ref src=\"11206547959530.txt\" /><ref src=\"11206547959681.txt\" /><ref src=\"11206547959682.txt\" /><ref src=\"11206547959684.txt\" /><ref src=\"11206547959686.txt\" /></par><par dur=\"10s\"><ref src=\"11206547959530.txt\" /><ref src=\"11206547959681.txt\" /><ref src=\"11206547959682.txt\" /><ref src=\"11206547959684.txt\" /><ref src=\"11206547959685.txt\" /></par></body></smil>");
System.out.println(smil.toString());
smil.removeObject(0, "11206547959530.txt", true);
smil.removeObject(0, "11206547959681.txt", true);
smil.removeObject(0, "11206547959682.txt", true);
smil.removeObject(0, "11206547959684.txt", true);
System.out.println(smil.toString());
smil.removeObject(0, "11206547959686.txt", true);
System.out.println(smil.toString());
smil.removeSlid(0);
System.out.println(smil.toString());
// System.out.println(smil.getObjectAtSlidNo("11206547959685.txt").toString());
smil.addRef(1, "hihi.txt", 4);
//System.out.println(smil.toString());
int nSlid = smil.addSlid(30);
smil.addRef(nSlid, "wandanle.mid");
System.out.println(smil.toString());
int nSlid = smil.addSlid(100, 0);
smil.addRef(nSlid, "hello.jpg", 0);
smil.updateSlidTimeInterval(nSlid, 50);
System.out.println(smil.toString());
System.out.println(smil.getObjectsFromSlid(2).toString());
smil.addSlid(80);
smil.addSlid(90);
System.out.println(smil.toString());
System.out.println(smil.getSlidTimeinterval(nSlid));
}*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -