172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project/* 272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Copyright (C) 2007-2008 Esmertec AG. 372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Copyright (C) 2007-2008 The Android Open Source Project 472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * 572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * you may not use this file except in compliance with the License. 772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * You may obtain a copy of the License at 872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * 972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 1072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * 1172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 1272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 1372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * See the License for the specific language governing permissions and 1572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * limitations under the License. 1672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project */ 1772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 1872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectpackage com.android.mms.dom.smil; 1972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 20ab845dee6565a8dfc384186bc8f2e801a2b087e1Ye Wenimport com.android.mms.LogTag; 21ab845dee6565a8dfc384186bc8f2e801a2b087e1Ye Wen 2272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport org.w3c.dom.DOMException; 2372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport org.w3c.dom.smil.SMILDocument; 2472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport org.w3c.dom.smil.SMILRegionElement; 2572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 2672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.util.Log; 2772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 2872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectpublic class SmilRegionElementImpl extends SmilElementImpl implements 2972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project SMILRegionElement { 3072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 3172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project /* 3272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Internal Interface 3372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project */ 3472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 3572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project private static final String HIDDEN_ATTRIBUTE = "hidden"; 3672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project private static final String SLICE_ATTRIBUTE = "slice"; 3772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project private static final String SCROLL_ATTRIBUTE = "scroll"; 3872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project private static final String MEET_ATTRIBUTE = "meet"; 3972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project private static final String FILL_ATTRIBUTE = "fill"; 4072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project private static final String ID_ATTRIBUTE_NAME = "id"; 4172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project private static final String WIDTH_ATTRIBUTE_NAME = "width"; 4272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project private static final String TITLE_ATTRIBUTE_NAME = "title"; 4372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project private static final String HEIGHT_ATTRIBUTE_NAME = "height"; 4472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project private static final String BACKGROUND_COLOR_ATTRIBUTE_NAME = "backgroundColor"; 4572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project private static final String Z_INDEX_ATTRIBUTE_NAME = "z-index"; 4672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project private static final String TOP_ATTRIBUTE_NAME = "top"; 4772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project private static final String LEFT_ATTRIBUTE_NAME = "left"; 4872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project private static final String RIGHT_ATTRIBUTE_NAME = "right"; 4972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project private static final String BOTTOM_ATTRIBUTE_NAME = "bottom"; 5072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project private static final String FIT_ATTRIBUTE_NAME = "fit"; 51ab845dee6565a8dfc384186bc8f2e801a2b087e1Ye Wen private static final String TAG = LogTag.TAG; 5272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project private static final boolean DEBUG = false; 53150c4179995cc0a75f934ef194372f9295957ca2Joe Onorato private static final boolean LOCAL_LOGV = false; 5472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 5572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project SmilRegionElementImpl(SmilDocumentImpl owner, String tagName) { 5672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project super(owner, tagName); 5772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 5872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 5972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project /* 6072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * SMILRegionElement Interface 6172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project */ 6272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 6372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public String getFit() { 6472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project String fit = getAttribute(FIT_ATTRIBUTE_NAME); 6572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (FILL_ATTRIBUTE.equalsIgnoreCase(fit)) { 6672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return FILL_ATTRIBUTE; 6772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } else if (MEET_ATTRIBUTE.equalsIgnoreCase(fit)) { 6872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return MEET_ATTRIBUTE; 6972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } else if (SCROLL_ATTRIBUTE.equalsIgnoreCase(fit)) { 7072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return SCROLL_ATTRIBUTE; 7172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } else if (SLICE_ATTRIBUTE.equalsIgnoreCase(fit)) { 7272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return SLICE_ATTRIBUTE; 7372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } else { 7472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return HIDDEN_ATTRIBUTE; 7572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 7672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 7772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 7872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public int getLeft() { 7972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project try { 8072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return parseRegionLength(getAttribute(LEFT_ATTRIBUTE_NAME), true); 8172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } catch (NumberFormatException _) { 8272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (LOCAL_LOGV) { 8372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project Log.v(TAG, "Left attribute is not set or incorrect."); 8472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 8572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 8672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project try { 8772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project int bbw = ((SMILDocument) getOwnerDocument()).getLayout().getRootLayout().getWidth(); 8872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project int right = parseRegionLength(getAttribute(RIGHT_ATTRIBUTE_NAME), true); 8972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project int width = parseRegionLength(getAttribute(WIDTH_ATTRIBUTE_NAME), true); 9072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return bbw - right - width; 9172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } catch (NumberFormatException _) { 9272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (LOCAL_LOGV) { 9372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project Log.v(TAG, "Right or width attribute is not set or incorrect."); 9472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 9572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 9672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return 0; 9772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 9872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 9972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public int getTop() { 10072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project try { 10172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return parseRegionLength(getAttribute(TOP_ATTRIBUTE_NAME), false); 10272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } catch (NumberFormatException _) { 10372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (LOCAL_LOGV) { 10472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project Log.v(TAG, "Top attribute is not set or incorrect."); 10572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 10672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 10772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project try { 10872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project int bbh = ((SMILDocument) getOwnerDocument()).getLayout().getRootLayout().getHeight(); 10972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project int bottom = parseRegionLength(getAttribute(BOTTOM_ATTRIBUTE_NAME), false); 11072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project int height = parseRegionLength(getAttribute(HEIGHT_ATTRIBUTE_NAME), false); 11172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return bbh - bottom - height; 11272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } catch (NumberFormatException _) { 11372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (LOCAL_LOGV) { 11472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project Log.v(TAG, "Bottom or height attribute is not set or incorrect."); 11572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 11672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 11772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return 0; 11872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 11972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 12072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public int getZIndex() { 12172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project try { 12272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return Integer.parseInt(this.getAttribute(Z_INDEX_ATTRIBUTE_NAME)); 12372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } catch (NumberFormatException _) { 12472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return 0; 12572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 12672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 12772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 12872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public void setFit(String fit) throws DOMException { 12972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (fit.equalsIgnoreCase(FILL_ATTRIBUTE) 13072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project || fit.equalsIgnoreCase(MEET_ATTRIBUTE) 13172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project || fit.equalsIgnoreCase(SCROLL_ATTRIBUTE) 13272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project || fit.equalsIgnoreCase(SLICE_ATTRIBUTE)) { 13372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project this.setAttribute(FIT_ATTRIBUTE_NAME, fit.toLowerCase()); 13472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } else { 13572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project this.setAttribute(FIT_ATTRIBUTE_NAME, HIDDEN_ATTRIBUTE); 13672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 13772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 13872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 13972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public void setLeft(int left) throws DOMException { 14072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project this.setAttribute(LEFT_ATTRIBUTE_NAME, String.valueOf(left)); 14172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 14272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 14372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public void setTop(int top) throws DOMException { 14472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project this.setAttribute(TOP_ATTRIBUTE_NAME, String.valueOf(top)); 14572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 14672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 14772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public void setZIndex(int zIndex) throws DOMException { 14872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (zIndex > 0) { 14972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project this.setAttribute(Z_INDEX_ATTRIBUTE_NAME, Integer.toString(zIndex)); 15072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } else { 15172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project this.setAttribute(Z_INDEX_ATTRIBUTE_NAME, Integer.toString(0)); 15272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 15372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 15472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 15572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public String getBackgroundColor() { 15672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return this.getAttribute(BACKGROUND_COLOR_ATTRIBUTE_NAME); 15772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 15872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 15972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public int getHeight() { 16072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project try { 161e6367524d22c6bfedfb81c7e068e475b0f807053Tom Taylor final int height = parseRegionLength(getAttribute(HEIGHT_ATTRIBUTE_NAME), false); 162e6367524d22c6bfedfb81c7e068e475b0f807053Tom Taylor return height == 0 ? 163e6367524d22c6bfedfb81c7e068e475b0f807053Tom Taylor ((SMILDocument) getOwnerDocument()).getLayout().getRootLayout().getHeight() : 164e6367524d22c6bfedfb81c7e068e475b0f807053Tom Taylor height; 16572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } catch (NumberFormatException _) { 16672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (LOCAL_LOGV) { 16772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project Log.v(TAG, "Height attribute is not set or incorrect."); 16872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 16972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 17072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project int bbh = ((SMILDocument) getOwnerDocument()).getLayout().getRootLayout().getHeight(); 17172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project try { 17272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project bbh -= parseRegionLength(getAttribute(TOP_ATTRIBUTE_NAME), false); 17372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } catch (NumberFormatException _) { 17472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (LOCAL_LOGV) { 17572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project Log.v(TAG, "Top attribute is not set or incorrect."); 17672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 17772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 17872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project try { 17972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project bbh -= parseRegionLength(getAttribute(BOTTOM_ATTRIBUTE_NAME), false); 18072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } catch (NumberFormatException _) { 18172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (LOCAL_LOGV) { 18272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project Log.v(TAG, "Bottom attribute is not set or incorrect."); 18372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 18472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 18572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return bbh; 18672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 18772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 18872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public String getTitle() { 18972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return this.getAttribute(TITLE_ATTRIBUTE_NAME); 19072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 19172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 19272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public int getWidth() { 19372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project try { 194e6367524d22c6bfedfb81c7e068e475b0f807053Tom Taylor final int width = parseRegionLength(getAttribute(WIDTH_ATTRIBUTE_NAME), true); 195e6367524d22c6bfedfb81c7e068e475b0f807053Tom Taylor return width == 0 ? 196e6367524d22c6bfedfb81c7e068e475b0f807053Tom Taylor ((SMILDocument) getOwnerDocument()).getLayout().getRootLayout().getWidth() : 197e6367524d22c6bfedfb81c7e068e475b0f807053Tom Taylor width; 19872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } catch (NumberFormatException _) { 19972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (LOCAL_LOGV) { 20072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project Log.v(TAG, "Width attribute is not set or incorrect."); 20172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 20272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 20372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project int bbw = ((SMILDocument) getOwnerDocument()).getLayout().getRootLayout().getWidth(); 20472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project try { 20572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project bbw -= parseRegionLength(getAttribute(LEFT_ATTRIBUTE_NAME), true); 20672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } catch (NumberFormatException _) { 20772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (LOCAL_LOGV) { 20872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project Log.v(TAG, "Left attribute is not set or incorrect."); 20972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 21072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 21172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project try { 21272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project bbw -= parseRegionLength(getAttribute(RIGHT_ATTRIBUTE_NAME), true); 21372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } catch (NumberFormatException _) { 21472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (LOCAL_LOGV) { 21572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project Log.v(TAG, "Right attribute is not set or incorrect."); 21672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 21772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 21872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return bbw; 21972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 22072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 22172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public void setBackgroundColor(String backgroundColor) throws DOMException { 22272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project this.setAttribute(BACKGROUND_COLOR_ATTRIBUTE_NAME, backgroundColor); 22372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 22472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 22572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public void setHeight(int height) throws DOMException { 22672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project this.setAttribute(HEIGHT_ATTRIBUTE_NAME, String.valueOf(height) + "px"); 22772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 22872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 22972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public void setTitle(String title) throws DOMException { 23072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project this.setAttribute(TITLE_ATTRIBUTE_NAME, title); 23172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 23272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 23372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public void setWidth(int width) throws DOMException { 23472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project this.setAttribute(WIDTH_ATTRIBUTE_NAME, String.valueOf(width) + "px"); 23572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 23672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 23772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project /* 23872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * SMILElement Interface 23972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project */ 24072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 24172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project @Override 24272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public String getId() { 24372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return this.getAttribute(ID_ATTRIBUTE_NAME); 24472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 24572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 24672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project @Override 24772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public void setId(String id) throws DOMException { 24872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project this.setAttribute(ID_ATTRIBUTE_NAME, id); 24972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 25072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 25172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project /* 25272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Internal Interface 25372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project */ 25472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 25572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project private int parseRegionLength(String length, boolean horizontal) { 25672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (length.endsWith("px")) { 25772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project length = length.substring(0, length.indexOf("px")); 25872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return Integer.parseInt(length); 25972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } else if (length.endsWith("%")) { 26072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project double value = 0.01*Integer.parseInt(length.substring(0, length.length() - 1)); 26172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (horizontal) { 26272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project value *= ((SMILDocument) getOwnerDocument()).getLayout().getRootLayout().getWidth(); 26372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } else { 26472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project value *= ((SMILDocument) getOwnerDocument()).getLayout().getRootLayout().getHeight(); 26572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 26672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return (int) Math.round(value); 26772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } else { 26872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return Integer.parseInt(length); 26972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 27072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 27172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 27272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project /* 27372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * (non-Javadoc) 27472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * @see java.lang.Object#toString() 27572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project */ 27672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project @Override 27772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public String toString() { 27872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return super.toString() 27972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project + ": id=" + getId() 28072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project + ", width=" + getWidth() 28172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project + ", height=" + getHeight() 28272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project + ", left=" + getLeft() 28372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project + ", top=" + getTop(); 28472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 28572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project} 286