123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219 |
- // Copyright 2007 The Closure Library Authors. All Rights Reserved.
- //
- // Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS-IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
- /**
- * @fileoverview Graphics surface type.
- * @author robbyw@google.com (Robby Walker)
- */
- goog.provide('goog.graphics.ext.Graphics');
- goog.require('goog.events');
- goog.require('goog.events.EventType');
- goog.require('goog.graphics');
- goog.require('goog.graphics.ext.Group');
- /**
- * Wrapper for a graphics surface.
- * @param {string|number} width The width in pixels. Strings
- * expressing percentages of parent with (e.g. '80%') are also accepted.
- * @param {string|number} height The height in pixels. Strings
- * expressing percentages of parent with (e.g. '80%') are also accepted.
- * @param {?number=} opt_coordWidth The coordinate width - if
- * omitted or null, defaults to same as width.
- * @param {?number=} opt_coordHeight The coordinate height. - if
- * omitted or null, defaults to same as height.
- * @param {goog.dom.DomHelper=} opt_domHelper The DOM helper object for the
- * document we want to render in.
- * @param {boolean=} opt_isSimple Flag used to indicate the graphics object will
- * be drawn to in a single pass, and the fastest implementation for this
- * scenario should be favored. NOTE: Setting to true may result in
- * degradation of text support.
- * @constructor
- * @extends {goog.graphics.ext.Group}
- * @final
- */
- goog.graphics.ext.Graphics = function(
- width, height, opt_coordWidth, opt_coordHeight, opt_domHelper,
- opt_isSimple) {
- var surface = opt_isSimple ?
- goog.graphics.createSimpleGraphics(
- width, height, opt_coordWidth, opt_coordHeight, opt_domHelper) :
- goog.graphics.createGraphics(
- width, height, opt_coordWidth, opt_coordHeight, opt_domHelper);
- this.implementation_ = surface;
- goog.graphics.ext.Group.call(this, null, surface.getCanvasElement());
- goog.events.listen(
- surface, goog.events.EventType.RESIZE, this.updateChildren, false, this);
- };
- goog.inherits(goog.graphics.ext.Graphics, goog.graphics.ext.Group);
- /**
- * The root level graphics implementation.
- * @type {goog.graphics.AbstractGraphics}
- * @private
- */
- goog.graphics.ext.Graphics.prototype.implementation_;
- /**
- * @return {goog.graphics.AbstractGraphics} The graphics implementation layer.
- */
- goog.graphics.ext.Graphics.prototype.getImplementation = function() {
- return this.implementation_;
- };
- /**
- * Changes the coordinate size.
- * @param {number} coordWidth The coordinate width.
- * @param {number} coordHeight The coordinate height.
- */
- goog.graphics.ext.Graphics.prototype.setCoordSize = function(
- coordWidth, coordHeight) {
- this.implementation_.setCoordSize(coordWidth, coordHeight);
- goog.graphics.ext.Graphics.superClass_.setSize.call(
- this, coordWidth, coordHeight);
- };
- /**
- * @return {goog.math.Size} The coordinate size.
- */
- goog.graphics.ext.Graphics.prototype.getCoordSize = function() {
- return this.implementation_.getCoordSize();
- };
- /**
- * Changes the coordinate system position.
- * @param {number} left The coordinate system left bound.
- * @param {number} top The coordinate system top bound.
- */
- goog.graphics.ext.Graphics.prototype.setCoordOrigin = function(left, top) {
- this.implementation_.setCoordOrigin(left, top);
- };
- /**
- * @return {!goog.math.Coordinate} The coordinate system position.
- */
- goog.graphics.ext.Graphics.prototype.getCoordOrigin = function() {
- return this.implementation_.getCoordOrigin();
- };
- /**
- * Change the size of the canvas.
- * @param {number} pixelWidth The width in pixels.
- * @param {number} pixelHeight The height in pixels.
- */
- goog.graphics.ext.Graphics.prototype.setPixelSize = function(
- pixelWidth, pixelHeight) {
- this.implementation_.setSize(pixelWidth, pixelHeight);
- var coordSize = this.getCoordSize();
- goog.graphics.ext.Graphics.superClass_.setSize.call(
- this, coordSize.width, coordSize.height);
- };
- /**
- * @return {goog.math.Size?} Returns the number of pixels spanned by the
- * surface, or null if the size could not be computed due to the size being
- * specified in percentage points and the component not being in the
- * document.
- */
- goog.graphics.ext.Graphics.prototype.getPixelSize = function() {
- return this.implementation_.getPixelSize();
- };
- /**
- * @return {number} The coordinate width of the canvas.
- * @override
- */
- goog.graphics.ext.Graphics.prototype.getWidth = function() {
- return this.implementation_.getCoordSize().width;
- };
- /**
- * @return {number} The coordinate width of the canvas.
- * @override
- */
- goog.graphics.ext.Graphics.prototype.getHeight = function() {
- return this.implementation_.getCoordSize().height;
- };
- /**
- * @return {number} Returns the number of pixels per unit in the x direction.
- * @override
- */
- goog.graphics.ext.Graphics.prototype.getPixelScaleX = function() {
- return this.implementation_.getPixelScaleX();
- };
- /**
- * @return {number} Returns the number of pixels per unit in the y direction.
- * @override
- */
- goog.graphics.ext.Graphics.prototype.getPixelScaleY = function() {
- return this.implementation_.getPixelScaleY();
- };
- /**
- * @return {Element} The root element of the graphics surface.
- */
- goog.graphics.ext.Graphics.prototype.getElement = function() {
- return this.implementation_.getElement();
- };
- /**
- * Renders the underlying graphics.
- *
- * @param {Element} parentElement Parent element to render the component into.
- */
- goog.graphics.ext.Graphics.prototype.render = function(parentElement) {
- this.implementation_.render(parentElement);
- };
- /**
- * Never transform a surface.
- * @override
- */
- goog.graphics.ext.Graphics.prototype.transform = goog.nullFunction;
- /**
- * Called from the parent class, this method resets any pre-computed positions
- * and sizes.
- * @protected
- * @override
- */
- goog.graphics.ext.Graphics.prototype.redraw = function() {
- this.transformChildren();
- };
|