X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/bfec9cc7ab5a396f7662090b208691ec59a69f1b..2f1753cc3e240fa497a87873ed19fe3f11e22331:/doc/xslt/slides/browser/xbStyle-css.js diff --git a/doc/xslt/slides/browser/xbStyle-css.js b/doc/xslt/slides/browser/xbStyle-css.js new file mode 100644 index 00000000..f5b8467e --- /dev/null +++ b/doc/xslt/slides/browser/xbStyle-css.js @@ -0,0 +1,791 @@ +/* + * xbStyle-css.js + * $Revision: 1.2 $ $Date: 2003/02/07 16:04:21 $ + * + */ + +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is Netscape code. + * + * The Initial Developer of the Original Code is + * Netscape Corporation. + * Portions created by the Initial Developer are Copyright (C) 2001 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): Bob Clary + * + * ***** END LICENSE BLOCK ***** */ + +// xbStyle.getClip() + +function cssStyleGetClip() +{ + var clip = this.getEffectiveValue('clip'); + + // hack opera + if (clip == 'rect()') + clip = ''; + + if (clip == '' || clip == 'auto') + { + clip = 'rect(0px, ' + this.getWidth() + 'px, ' + this.getHeight() + 'px, 0px)'; + } + else + { + clip = clip.replace(/px /g, 'px, '); + } + + return clip; +} + +// xbStyle.setClip() + +function cssStyleSetClip(sClipString) +{ + this.styleObj.clip = sClipString; +} + +// xbStyle.getClipTop() + +function cssStyleGetClipTop() +{ + var clip = this.getClip(); + var rect = new xbClipRect(clip); + return rect.top; +} + +// xbStyle.setClipTop() + +function cssStyleSetClipTop(top) +{ + var clip = this.getClip(); + var rect = new xbClipRect(clip); + rect.top = top; + this.styleObj.clip = rect.toString(); +} + +// xbStyle.getClipRight() + +function cssStyleGetClipRight() +{ + var clip = this.getClip(); + var rect = new xbClipRect(clip); + return rect.right; +} + +// xbStyle.setClipRight() + +function cssStyleSetClipRight(right) +{ + var clip = this.getClip(); + var rect = new xbClipRect(clip); + rect.right = right; + this.styleObj.clip = rect.toString(); +} + +// xbStyle.getClipBottom() + +function cssStyleGetClipBottom() +{ + var clip = this.getClip(); + var rect = new xbClipRect(clip); + return rect.bottom; +} + +// xbStyle.setClipBottom() + +function cssStyleSetClipBottom(bottom) +{ + var clip = this.getClip(); + var rect = new xbClipRect(clip); + rect.bottom = bottom; + this.styleObj.clip = rect.toString(); +} + +// xbStyle.getClipLeft() + +function cssStyleGetClipLeft() +{ + var clip = this.getClip(); + var rect = new xbClipRect(clip); + return rect.left; +} + +// xbStyle.setClipLeft() + +function cssStyleSetClipLeft(left) +{ + var clip = this.getClip(); + var rect = new xbClipRect(clip); + rect.left = left; + this.styleObj.clip = rect.toString(); +} + +// xbStyle.getClipWidth() + +function cssStyleGetClipWidth() +{ + var clip = this.getClip(); + var rect = new xbClipRect(clip); + return rect.getWidth(); +} + +// xbStyle.setClipWidth() + +function cssStyleSetClipWidth(width) +{ + var clip = this.getClip(); + var rect = new xbClipRect(clip); + rect.setWidth(width); + this.styleObj.clip = rect.toString(); +} + +// xbStyle.getClipHeight() + +function cssStyleGetClipHeight() +{ + var clip = this.getClip(); + var rect = new xbClipRect(clip); + return rect.getHeight(); +} + +// xbStyle.setClipHeight() + +function cssStyleSetClipHeight(height) +{ + var clip = this.getClip(); + var rect = new xbClipRect(clip); + rect.setHeight(height); + this.styleObj.clip = rect.toString(); +} + +// the CSS attributes left,top are for absolutely positioned elements +// measured relative to the containing element. for relatively positioned +// elements, left,top are measured from the element's normal inline position. +// getLeft(), setLeft() operate on this type of coordinate. +// +// to allow dynamic positioning the getOffsetXXX and setOffsetXXX methods are +// defined to return and set the position of either an absolutely or relatively +// positioned element relative to the containing element. +// +// + +// xbStyle.getLeft() + +function cssStyleGetLeft() +{ + var left = this.getEffectiveValue('left'); + if (typeof(left) == 'number') + return left; + + if (left != '' && left.indexOf('px') == -1) + { + xbDEBUG.dump('xbStyle.getLeft: Element ID=' + this.object.id + ' does not use pixels as units. left=' + left + ' Click Ok to continue, Cancel to Abort'); + return 0; + } + + if (top == 'auto' && this.object && typeof(this.object.offsetTop) == 'number') + { + left = this.object.offsetTop + 'px'; + } + + if (left == '') + left = '0px'; + + return xbToInt(left); +} + +// xbStyle.setLeft() + +function cssStyleSetLeft(left) +{ + if (typeof(this.styleObj.left) == 'number') + this.styleObj.left = left; + else + this.styleObj.left = left + 'px'; +} + +// xbStyle.getTop() + +function cssStyleGetTop() +{ + var top = this.getEffectiveValue('top'); + if (typeof(top) == 'number') + return top; + + if (top != '' && top.indexOf('px') == -1) + { + xbDEBUG.dump('xbStyle.getTop: Element ID=' + this.object.id + ' does not use pixels as units. top=' + top + ' Click Ok to continue, Cancel to Abort'); + return 0; + } + + if (top == 'auto' && this.object && typeof(this.object.offsetTop) == 'number') + { + top = this.object.offsetTop + 'px'; + } + + if (top == '') + top = '0px'; + + return xbToInt(top); +} + +// xbStyle.setTop() + +function cssStyleSetTop(top) +{ + if (typeof(this.styleObj.top) == 'number') + this.styleObj.top = top; + else + this.styleObj.top = top + 'px'; +} + +// xbStyle.getPageX() + +function cssStyleGetPageX() +{ + var x = 0; + var elm = this.object; + var elmstyle; + var position; + + //xxxHack: Due to limitations in Gecko's (0.9.6) ability to determine the + // effective position attribute , attempt to use offsetXXX + + if (typeof(elm.offsetLeft) == 'number') + { + while (elm) + { + x += elm.offsetLeft; + elm = elm.offsetParent; + } + } + else + { + while (elm) + { + if (elm.style) + { + elmstyle = new xbStyle(elm); + position = elmstyle.getEffectiveValue('position'); + if (position != '' && position != 'static') + x += elmstyle.getLeft(); + } + elm = elm.parentNode; + } + } + + return x; +} + +// xbStyle.setPageX() + +function cssStyleSetPageX(x) +{ + var xParent = 0; + var elm = this.object.parentNode; + var elmstyle; + var position; + + //xxxHack: Due to limitations in Gecko's (0.9.6) ability to determine the + // effective position attribute , attempt to use offsetXXX + + if (elm && typeof(elm.offsetLeft) == 'number') + { + while (elm) + { + xParent += elm.offsetLeft; + elm = elm.offsetParent; + } + } + else + { + while (elm) + { + if (elm.style) + { + elmstyle = new xbStyle(elm); + position = elmstyle.getEffectiveValue('position'); + if (position != '' && position != 'static') + xParent += elmstyle.getLeft(); + } + elm = elm.parentNode; + } + } + + x -= xParent; + + this.setLeft(x); +} + +// xbStyle.getPageY() + +function cssStyleGetPageY() +{ + var y = 0; + var elm = this.object; + var elmstyle; + var position; + + //xxxHack: Due to limitations in Gecko's (0.9.6) ability to determine the + // effective position attribute , attempt to use offsetXXX + + if (typeof(elm.offsetTop) == 'number') + { + while (elm) + { + y += elm.offsetTop; + elm = elm.offsetParent; + } + } + else + { + while (elm) + { + if (elm.style) + { + elmstyle = new xbStyle(elm); + position = elmstyle.getEffectiveValue('position'); + if (position != '' && position != 'static') + y += elmstyle.getTop(); + } + elm = elm.parentNode; + } + } + + return y; +} + +// xbStyle.setPageY() + +function cssStyleSetPageY(y) +{ + var yParent = 0; + var elm = this.object.parentNode; + var elmstyle; + var position; + + //xxxHack: Due to limitations in Gecko's (0.9.6) ability to determine the + // effective position attribute , attempt to use offsetXXX + + if (elm && typeof(elm.offsetTop) == 'number') + { + while (elm) + { + yParent += elm.offsetTop; + elm = elm.offsetParent; + } + } + else + { + while (elm) + { + if (elm.style) + { + elmstyle = new xbStyle(elm); + position = elmstyle.getEffectiveValue('position'); + if (position != '' && position != 'static') + yParent += elmstyle.getTop(); + } + elm = elm.parentNode; + } + } + + y -= yParent; + + this.setTop(y); +} + +// xbStyle.getHeight() + +function cssStyleGetHeight() +{ + var display = this.getEffectiveValue('display'); + var height = this.getEffectiveValue('height'); + + if (typeof(height) == 'number') + { + // Opera + return height; + } + + if (height == '' || height == 'auto' || height.indexOf('%') != -1) + { + if (typeof(this.object.offsetHeight) == 'number') + { + height = this.object.offsetHeight + 'px'; + } + else if (typeof(this.object.scrollHeight) == 'number') + { + height = this.object.scrollHeight + 'px'; + } + } + + if (height.indexOf('px') == -1) + { + xbDEBUG.dump('xbStyle.getHeight: Element ID=' + this.object.id + ' does not use pixels as units. height=' + height + ' Click Ok to continue, Cancel to Abort'); + return 0; + } + + height = xbToInt(height); + + return height; +} + +// xbStyle.setHeight() + +function cssStyleSetHeight(height) +{ + if (typeof(this.styleObj.height) == 'number') + this.styleObj.height = height; + else + this.styleObj.height = height + 'px'; +} + +// xbStyle.getWidth() + +function cssStyleGetWidth() +{ + var display = this.getEffectiveValue('display'); + var width = this.getEffectiveValue('width'); + + if (typeof(width) == 'number') + { + // note Opera 6 has a bug in width and offsetWidth where + // it returns the page width. Use clientWidth instead. + if (navigator.userAgent.indexOf('Opera') != -1) + return this.object.clientWidth; + else + return width; + } + + if (width == '' || width == 'auto' || width.indexOf('%') != -1) + { + if (typeof(this.object.offsetWidth) == 'number') + { + width = this.object.offsetWidth + 'px'; + } + else if (typeof(this.object.scrollHeight) == 'number') + { + width = this.object.scrollWidth + 'px'; + } + } + + if (width.indexOf('px') == -1) + { + xbDEBUG.dump('xbStyle.getWidth: Element ID=' + this.object.id + ' does not use pixels as units. width=' + width + ' Click Ok to continue, Cancel to Abort'); + return 0; + } + + width = xbToInt(width); + + return width; +} + +// xbStyle.setWidth() + +function cssStyleSetWidth(width) +{ + if (typeof(this.styleObj.width) == 'number') + this.styleObj.width = width; + else + this.styleObj.width = width + 'px'; +} + +// xbStyle.getVisibility() + +function cssStyleGetVisibility() +{ + return this.getEffectiveValue('visibility'); +} + +// xbStyle.setVisibility() + +function cssStyleSetVisibility(visibility) +{ + this.styleObj.visibility = visibility; +} + +// xbStyle.getzIndex() + +function cssStyleGetzIndex() +{ + return xbToInt(this.getEffectiveValue('zIndex')); +} + +// xbStyle.setzIndex() + +function cssStyleSetzIndex(zIndex) +{ + this.styleObj.zIndex = zIndex; +} + +// xbStyle.getBackgroundColor() + +function cssStyleGetBackgroundColor() +{ + return this.getEffectiveValue('backgroundColor'); +} + +// xbStyle.setBackgroundColor() + +function cssStyleSetBackgroundColor(color) +{ + this.styleObj.backgroundColor = color; +} + +// xbStyle.getColor() + +function cssStyleGetColor() +{ + return this.getEffectiveValue('color'); +} + +// xbStyle.setColor() + +function cssStyleSetColor(color) +{ + this.styleObj.color = color; +} + +// xbStyle.moveAbove() + +function xbStyleMoveAbove(cont) +{ + this.setzIndex(cont.getzIndex()+1); +} + +// xbStyle.moveBelow() + +function xbStyleMoveBelow(cont) +{ + var zindex = cont.getzIndex() - 1; + + this.setzIndex(zindex); +} + +// xbStyle.moveBy() + +function xbStyleMoveBy(deltaX, deltaY) +{ + this.moveTo(this.getLeft() + deltaX, this.getTop() + deltaY); +} + +// xbStyle.moveTo() + +function xbStyleMoveTo(x, y) +{ + this.setLeft(x); + this.setTop(y); +} + +// xbStyle.moveToAbsolute() + +function xbStyleMoveToAbsolute(x, y) +{ + this.setPageX(x); + this.setPageY(y); +} + +// xbStyle.resizeBy() + +function xbStyleResizeBy(deltaX, deltaY) +{ + this.setWidth( this.getWidth() + deltaX ); + this.setHeight( this.getHeight() + deltaY ); +} + +// xbStyle.resizeTo() + +function xbStyleResizeTo(x, y) +{ + this.setWidth(x); + this.setHeight(y); +} + +// xbStyle.setInnerHTML() + +function xbSetInnerHTML(str) +{ + if (typeof(this.object.innerHTML) != 'undefined') + this.object.innerHTML = str; +} + + +// Extensions to xbStyle that are not supported by Netscape Navigator 4 +// but that provide cross browser implementations of properties for +// Mozilla, Gecko, Netscape 6.x and Opera + +// xbStyle.getBorderTopWidth() + +function cssStyleGetBorderTopWidth() +{ + return xbToInt(this.getEffectiveValue('borderTopWidth')); +} + +// xbStyle.getBorderRightWidth() + +function cssStyleGetBorderRightWidth() +{ + return xbToInt(this.getEffectiveValue('borderRightWidth')); +} + +// xbStyle.getBorderBottomWidth() + +function cssStyleGetBorderBottomWidth() +{ + return xbToInt(this.getEffectiveValue('borderBottomWidth')); +} + +// xbStyle.getBorderLeftWidth() + +function cssStyleGetBorderLeftWidth() +{ + return xbToInt(this.getEffectiveValue('borderLeftWidth')); +} + +// xbStyle.getMarginTop() + +function cssStyleGetMarginTop() +{ + return xbToInt(this.getEffectiveValue('marginTop')); +} + +// xbStyle.getMarginRight() + +function cssStyleGetMarginRight() +{ + return xbToInt(this.getEffectiveValue('marginRight')); +} + +// xbStyle.getMarginBottom() + +function cssStyleGetMarginBottom() +{ + return xbToInt(this.getEffectiveValue('marginBottom')); +} + +// xbStyle.getMarginLeft() + +function cssStyleGetMarginLeft() +{ + return xbToInt(this.getEffectiveValue('marginLeft')); +} + +// xbStyle.getPaddingTop() + +function cssStyleGetPaddingTop() +{ + return xbToInt(this.getEffectiveValue('paddingTop')); +} + +// xbStyle.getPaddingRight() + +function cssStyleGetPaddingRight() +{ + return xbToInt(this.getEffectiveValue('paddingRight')); +} + +// xbStyle.getPaddingBottom() + +function cssStyleGetPaddingBottom() +{ + return xbToInt(this.getEffectiveValue('paddingBottom')); +} + +// xbStyle.getPaddingLeft() + +function cssStyleGetPaddingLeft() +{ + return xbToInt(this.getEffectiveValue('paddingLeft')); +} + +// xbStyle.getClientWidth() + +function cssStyleGetClientWidth() +{ + return this.getWidth() + this.getPaddingLeft() + this.getPaddingRight(); + /* + if (typeof(this.object.clientWidth) == 'number') + return this.object.clientWidth; + + return null; + */ +} + +// xbStyle.getClientHeight() + +function cssStyleGetClientHeight() +{ + return this.getHeight() + this.getPaddingTop() + this.getPaddingBottom(); + /* + if (typeof(this.object.clientHeight) == 'number') + return this.object.clientHeight; + + return null; + */ +} + +xbStyle.prototype.getClip = cssStyleGetClip; +xbStyle.prototype.setClip = cssStyleSetClip; +xbStyle.prototype.getClipTop = cssStyleGetClipTop; +xbStyle.prototype.setClipTop = cssStyleSetClipTop; +xbStyle.prototype.getClipRight = cssStyleGetClipRight; +xbStyle.prototype.setClipRight = cssStyleSetClipRight; +xbStyle.prototype.getClipBottom = cssStyleGetClipBottom; +xbStyle.prototype.setClipBottom = cssStyleSetClipBottom; +xbStyle.prototype.getClipLeft = cssStyleGetClipLeft; +xbStyle.prototype.setClipLeft = cssStyleSetClipLeft; +xbStyle.prototype.getClipWidth = cssStyleGetClipWidth; +xbStyle.prototype.setClipWidth = cssStyleSetClipWidth; +xbStyle.prototype.getClipHeight = cssStyleGetClipHeight; +xbStyle.prototype.setClipHeight = cssStyleSetClipHeight; +xbStyle.prototype.getLeft = cssStyleGetLeft; +xbStyle.prototype.setLeft = cssStyleSetLeft; +xbStyle.prototype.getTop = cssStyleGetTop; +xbStyle.prototype.setTop = cssStyleSetTop; +xbStyle.prototype.getPageX = cssStyleGetPageX; +xbStyle.prototype.setPageX = cssStyleSetPageX; +xbStyle.prototype.getPageY = cssStyleGetPageY; +xbStyle.prototype.setPageY = cssStyleSetPageY; +xbStyle.prototype.getVisibility = cssStyleGetVisibility; +xbStyle.prototype.setVisibility = cssStyleSetVisibility; +xbStyle.prototype.getzIndex = cssStyleGetzIndex; +xbStyle.prototype.setzIndex = cssStyleSetzIndex; +xbStyle.prototype.getHeight = cssStyleGetHeight; +xbStyle.prototype.setHeight = cssStyleSetHeight; +xbStyle.prototype.getWidth = cssStyleGetWidth; +xbStyle.prototype.setWidth = cssStyleSetWidth; +xbStyle.prototype.getBackgroundColor = cssStyleGetBackgroundColor; +xbStyle.prototype.setBackgroundColor = cssStyleSetBackgroundColor; +xbStyle.prototype.getColor = cssStyleGetColor; +xbStyle.prototype.setColor = cssStyleSetColor; +xbStyle.prototype.setInnerHTML = xbSetInnerHTML; +xbStyle.prototype.getBorderTopWidth = cssStyleGetBorderTopWidth; +xbStyle.prototype.getBorderRightWidth = cssStyleGetBorderRightWidth; +xbStyle.prototype.getBorderBottomWidth = cssStyleGetBorderBottomWidth; +xbStyle.prototype.getBorderLeftWidth = cssStyleGetBorderLeftWidth; +xbStyle.prototype.getMarginLeft = cssStyleGetMarginLeft; +xbStyle.prototype.getMarginTop = cssStyleGetMarginTop; +xbStyle.prototype.getMarginRight = cssStyleGetMarginRight; +xbStyle.prototype.getMarginBottom = cssStyleGetMarginBottom; +xbStyle.prototype.getMarginLeft = cssStyleGetMarginLeft; +xbStyle.prototype.getPaddingTop = cssStyleGetPaddingTop; +xbStyle.prototype.getPaddingRight = cssStyleGetPaddingRight; +xbStyle.prototype.getPaddingBottom = cssStyleGetPaddingBottom; +xbStyle.prototype.getPaddingLeft = cssStyleGetPaddingLeft; +xbStyle.prototype.getClientWidth = cssStyleGetClientWidth; +xbStyle.prototype.getClientHeight = cssStyleGetClientHeight; +