use of org.w3c.dom.smil.SMILRegionElement in project qksms by moezbhatti.
the class SmilHelper method setRegion.
private static boolean setRegion(SMILRegionMediaElement srme, ArrayList<SMILRegionElement> smilRegions, SMILLayoutElement smilLayout, String regionId, boolean regionPresentInLayout) {
SMILRegionElement smilRegion = findRegionElementById(smilRegions, regionId);
if (!regionPresentInLayout && smilRegion != null) {
srme.setRegion(smilRegion);
smilLayout.appendChild(smilRegion);
return true;
}
return false;
}
use of org.w3c.dom.smil.SMILRegionElement in project qksms by moezbhatti.
the class SmilHelper method createSmilDocument.
private static SMILDocument createSmilDocument(SlideshowModel slideshow) {
if (Config.LOGV) {
Log.v(TAG, "Creating SMIL document from SlideshowModel.");
}
SMILDocument document = new SmilDocumentImpl();
// Create SMIL and append it to document
SMILElement smilElement = (SMILElement) document.createElement("smil");
document.appendChild(smilElement);
// Create HEAD and append it to SMIL
SMILElement headElement = (SMILElement) document.createElement("head");
smilElement.appendChild(headElement);
// Create LAYOUT and append it to HEAD
SMILLayoutElement layoutElement = (SMILLayoutElement) document.createElement("layout");
headElement.appendChild(layoutElement);
// Create ROOT-LAYOUT and append it to LAYOUT
SMILRootLayoutElement rootLayoutElement = (SMILRootLayoutElement) document.createElement("root-layout");
LayoutModel layouts = slideshow.getLayout();
rootLayoutElement.setWidth(layouts.getLayoutWidth());
rootLayoutElement.setHeight(layouts.getLayoutHeight());
String bgColor = layouts.getBackgroundColor();
if (!TextUtils.isEmpty(bgColor)) {
rootLayoutElement.setBackgroundColor(bgColor);
}
layoutElement.appendChild(rootLayoutElement);
// Create REGIONs and append them to LAYOUT
ArrayList<RegionModel> regions = layouts.getRegions();
ArrayList<SMILRegionElement> smilRegions = new ArrayList<>();
for (RegionModel r : regions) {
SMILRegionElement smilRegion = (SMILRegionElement) document.createElement("region");
smilRegion.setId(r.getRegionId());
smilRegion.setLeft(r.getLeft());
smilRegion.setTop(r.getTop());
smilRegion.setWidth(r.getWidth());
smilRegion.setHeight(r.getHeight());
smilRegion.setFit(r.getFit());
smilRegions.add(smilRegion);
}
// Create BODY and append it to the document.
SMILElement bodyElement = (SMILElement) document.createElement("body");
smilElement.appendChild(bodyElement);
for (SlideModel slide : slideshow) {
boolean txtRegionPresentInLayout = false;
boolean imgRegionPresentInLayout = false;
// Create PAR element.
SMILParElement par = addPar(document);
par.setDur(slide.getDuration() / 1000f);
addParElementEventListeners((EventTarget) par, slide);
// Add all media elements.
for (MediaModel media : slide) {
SMILMediaElement sme = null;
String src = media.getSrc();
if (media instanceof TextModel) {
TextModel text = (TextModel) media;
if (TextUtils.isEmpty(text.getText())) {
if (LOCAL_LOGV) {
Log.v(TAG, "Empty text part ignored: " + text.getSrc());
}
continue;
}
sme = SmilHelper.createMediaElement(SmilHelper.ELEMENT_TAG_TEXT, document, src);
txtRegionPresentInLayout = setRegion((SMILRegionMediaElement) sme, smilRegions, layoutElement, LayoutModel.TEXT_REGION_ID, txtRegionPresentInLayout);
} else if (media instanceof ImageModel) {
sme = SmilHelper.createMediaElement(SmilHelper.ELEMENT_TAG_IMAGE, document, src);
imgRegionPresentInLayout = setRegion((SMILRegionMediaElement) sme, smilRegions, layoutElement, LayoutModel.IMAGE_REGION_ID, imgRegionPresentInLayout);
} else if (media instanceof VideoModel) {
sme = SmilHelper.createMediaElement(SmilHelper.ELEMENT_TAG_VIDEO, document, src);
imgRegionPresentInLayout = setRegion((SMILRegionMediaElement) sme, smilRegions, layoutElement, LayoutModel.IMAGE_REGION_ID, imgRegionPresentInLayout);
} else if (media instanceof AudioModel) {
sme = SmilHelper.createMediaElement(SmilHelper.ELEMENT_TAG_AUDIO, document, src);
} else {
Log.w(TAG, "Unsupport media: " + media);
continue;
}
// Set timing information.
int begin = media.getBegin();
if (begin != 0) {
sme.setAttribute("begin", String.valueOf(begin / 1000));
}
int duration = media.getDuration();
if (duration != 0) {
sme.setDur((float) duration / 1000);
}
par.appendChild(sme);
addMediaElementEventListeners((EventTarget) sme, media);
}
}
if (LOCAL_LOGV) {
ByteArrayOutputStream out = new ByteArrayOutputStream();
SmilXmlSerializer.serialize(document, out);
Log.v(TAG, out.toString());
}
return document;
}
use of org.w3c.dom.smil.SMILRegionElement in project Signal-Android by WhisperSystems.
the class SmilRegionMediaElementImpl method getRegion.
public SMILRegionElement getRegion() {
if (mRegion == null) {
SMILDocument doc = (SMILDocument) this.getOwnerDocument();
NodeList regions = doc.getLayout().getElementsByTagName("region");
SMILRegionElement region = null;
for (int i = 0; i < regions.getLength(); i++) {
region = (SMILRegionElement) regions.item(i);
if (region.getId().equals(this.getAttribute("region"))) {
mRegion = region;
}
}
}
return mRegion;
}
use of org.w3c.dom.smil.SMILRegionElement in project Signal-Android by WhisperSystems.
the class SmilUtil method createSmilDocument.
private static SMILDocument createSmilDocument(PduBody body) {
Log.w(TAG, "Creating SMIL document from PduBody.");
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 (int i = 0; i < body.getPartsNum(); i++) {
PduPart part = body.getPart(i);
SMILRegionElement regionElement = getRegion(document, part);
SMILMediaElement mediaElement = getMediaElement(document, part);
if (regionElement != null) {
((SMILRegionMediaElement) mediaElement).setRegion(regionElement);
layoutElement.appendChild(regionElement);
}
par.appendChild(mediaElement);
}
return document;
}
use of org.w3c.dom.smil.SMILRegionElement in project android-aosp-mms by slvn.
the class SmilHelper method createSmilDocument.
private static SMILDocument createSmilDocument(SlideshowModel slideshow) {
if (Config.LOGV) {
Log.v(TAG, "Creating SMIL document from SlideshowModel.");
}
SMILDocument document = new SmilDocumentImpl();
// Create SMIL and append it to document
SMILElement smilElement = (SMILElement) document.createElement("smil");
document.appendChild(smilElement);
// Create HEAD and append it to SMIL
SMILElement headElement = (SMILElement) document.createElement("head");
smilElement.appendChild(headElement);
// Create LAYOUT and append it to HEAD
SMILLayoutElement layoutElement = (SMILLayoutElement) document.createElement("layout");
headElement.appendChild(layoutElement);
// Create ROOT-LAYOUT and append it to LAYOUT
SMILRootLayoutElement rootLayoutElement = (SMILRootLayoutElement) document.createElement("root-layout");
LayoutModel layouts = slideshow.getLayout();
rootLayoutElement.setWidth(layouts.getLayoutWidth());
rootLayoutElement.setHeight(layouts.getLayoutHeight());
String bgColor = layouts.getBackgroundColor();
if (!TextUtils.isEmpty(bgColor)) {
rootLayoutElement.setBackgroundColor(bgColor);
}
layoutElement.appendChild(rootLayoutElement);
// Create REGIONs and append them to LAYOUT
ArrayList<RegionModel> regions = layouts.getRegions();
ArrayList<SMILRegionElement> smilRegions = new ArrayList<SMILRegionElement>();
for (RegionModel r : regions) {
SMILRegionElement smilRegion = (SMILRegionElement) document.createElement("region");
smilRegion.setId(r.getRegionId());
smilRegion.setLeft(r.getLeft());
smilRegion.setTop(r.getTop());
smilRegion.setWidth(r.getWidth());
smilRegion.setHeight(r.getHeight());
smilRegion.setFit(r.getFit());
smilRegions.add(smilRegion);
}
// Create BODY and append it to the document.
SMILElement bodyElement = (SMILElement) document.createElement("body");
smilElement.appendChild(bodyElement);
for (SlideModel slide : slideshow) {
boolean txtRegionPresentInLayout = false;
boolean imgRegionPresentInLayout = false;
// Create PAR element.
SMILParElement par = addPar(document);
par.setDur(slide.getDuration() / 1000f);
addParElementEventListeners((EventTarget) par, slide);
// Add all media elements.
for (MediaModel media : slide) {
SMILMediaElement sme = null;
String src = media.getSrc();
if (media instanceof TextModel) {
TextModel text = (TextModel) media;
if (TextUtils.isEmpty(text.getText())) {
if (LOCAL_LOGV) {
Log.v(TAG, "Empty text part ignored: " + text.getSrc());
}
continue;
}
sme = SmilHelper.createMediaElement(SmilHelper.ELEMENT_TAG_TEXT, document, src);
txtRegionPresentInLayout = setRegion((SMILRegionMediaElement) sme, smilRegions, layoutElement, LayoutModel.TEXT_REGION_ID, txtRegionPresentInLayout);
} else if (media instanceof ImageModel) {
sme = SmilHelper.createMediaElement(SmilHelper.ELEMENT_TAG_IMAGE, document, src);
imgRegionPresentInLayout = setRegion((SMILRegionMediaElement) sme, smilRegions, layoutElement, LayoutModel.IMAGE_REGION_ID, imgRegionPresentInLayout);
} else if (media instanceof VideoModel) {
sme = SmilHelper.createMediaElement(SmilHelper.ELEMENT_TAG_VIDEO, document, src);
imgRegionPresentInLayout = setRegion((SMILRegionMediaElement) sme, smilRegions, layoutElement, LayoutModel.IMAGE_REGION_ID, imgRegionPresentInLayout);
} else if (media instanceof AudioModel) {
sme = SmilHelper.createMediaElement(SmilHelper.ELEMENT_TAG_AUDIO, document, src);
} else {
Log.w(TAG, "Unsupport media: " + media);
continue;
}
// Set timing information.
int begin = media.getBegin();
if (begin != 0) {
sme.setAttribute("begin", String.valueOf(begin / 1000));
}
int duration = media.getDuration();
if (duration != 0) {
sme.setDur((float) duration / 1000);
}
par.appendChild(sme);
addMediaElementEventListeners((EventTarget) sme, media);
}
}
if (LOCAL_LOGV) {
ByteArrayOutputStream out = new ByteArrayOutputStream();
SmilXmlSerializer.serialize(document, out);
Log.v(TAG, out.toString());
}
return document;
}
Aggregations