mirror of
https://github.com/oxen-io/session-android.git
synced 2025-12-03 09:12:19 +00:00
committed by
Moxie Marlinspike
parent
b355991b0b
commit
7441c191a7
75
src/org/thoughtcrime/securesms/util/SmilUtil.java
Normal file
75
src/org/thoughtcrime/securesms/util/SmilUtil.java
Normal file
@@ -0,0 +1,75 @@
|
||||
package org.thoughtcrime.securesms.util;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
import org.thoughtcrime.securesms.dom.smil.SmilDocumentImpl;
|
||||
import org.thoughtcrime.securesms.mms.Slide;
|
||||
import org.thoughtcrime.securesms.mms.SlideDeck;
|
||||
import org.w3c.dom.smil.SMILDocument;
|
||||
import org.w3c.dom.smil.SMILElement;
|
||||
import org.w3c.dom.smil.SMILLayoutElement;
|
||||
import org.w3c.dom.smil.SMILMediaElement;
|
||||
import org.w3c.dom.smil.SMILParElement;
|
||||
import org.w3c.dom.smil.SMILRegionElement;
|
||||
import org.w3c.dom.smil.SMILRegionMediaElement;
|
||||
import org.w3c.dom.smil.SMILRootLayoutElement;
|
||||
|
||||
public class SmilUtil {
|
||||
private static final String TAG = SmilUtil.class.getSimpleName();
|
||||
|
||||
public static final int ROOT_HEIGHT = 1024;
|
||||
public static final int ROOT_WIDTH = 1024;
|
||||
|
||||
public static SMILDocument createSmilDocument(SlideDeck deck) {
|
||||
Log.w(TAG, "Creating SMIL document from SlideDeck.");
|
||||
|
||||
SMILDocument document = new SmilDocumentImpl();
|
||||
|
||||
SMILElement smilElement = (SMILElement) document.createElement("smil");
|
||||
document.appendChild(smilElement);
|
||||
|
||||
SMILElement headElement = (SMILElement) document.createElement("head");
|
||||
smilElement.appendChild(headElement);
|
||||
|
||||
SMILLayoutElement layoutElement = (SMILLayoutElement) document.createElement("layout");
|
||||
headElement.appendChild(layoutElement);
|
||||
|
||||
SMILRootLayoutElement rootLayoutElement = (SMILRootLayoutElement) document.createElement("root-layout");
|
||||
rootLayoutElement.setWidth(ROOT_WIDTH);
|
||||
rootLayoutElement.setHeight(ROOT_HEIGHT);
|
||||
layoutElement.appendChild(rootLayoutElement);
|
||||
|
||||
SMILElement bodyElement = (SMILElement) document.createElement("body");
|
||||
smilElement.appendChild(bodyElement);
|
||||
|
||||
SMILParElement par = (SMILParElement) document.createElement("par");
|
||||
bodyElement.appendChild(par);
|
||||
|
||||
for (Slide slide : deck.getSlides()) {
|
||||
SMILRegionElement regionElement = slide.getSmilRegion(document);
|
||||
SMILMediaElement mediaElement = slide.getMediaElement(document);
|
||||
|
||||
if (regionElement != null) {
|
||||
((SMILRegionMediaElement)mediaElement).setRegion(regionElement);
|
||||
layoutElement.appendChild(regionElement);
|
||||
}
|
||||
par.appendChild(mediaElement);
|
||||
}
|
||||
|
||||
return document;
|
||||
}
|
||||
|
||||
public static SMILMediaElement createMediaElement(String tag, SMILDocument document, String src) {
|
||||
SMILMediaElement mediaElement = (SMILMediaElement) document.createElement(tag);
|
||||
mediaElement.setSrc(escapeXML(src));
|
||||
return mediaElement;
|
||||
}
|
||||
|
||||
private static String escapeXML(String str) {
|
||||
return str.replaceAll("&","&")
|
||||
.replaceAll("<", "<")
|
||||
.replaceAll(">", ">")
|
||||
.replaceAll("\"", """)
|
||||
.replaceAll("'", "'");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user