/** * Copyright 2010 The ForPlay Authors * * 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. */ package forplay.html; import com.google.gwt.dom.client.Document; import com.google.gwt.dom.client.Element; import com.google.gwt.dom.client.Style.Overflow; import com.google.gwt.dom.client.Style.Unit; import forplay.core.CanvasLayer; import forplay.core.GroupLayer; import forplay.core.Image; import forplay.core.ImageLayer; import forplay.core.SurfaceLayer; class HtmlGraphicsDom extends HtmlGraphics { private final HtmlGroupLayerDom rootLayer; public HtmlGraphicsDom() { Element div = Document.get().createDivElement(); div.getStyle().setOverflow(Overflow.HIDDEN); rootElement.appendChild(div); rootLayer = new HtmlGroupLayerDom(div); setSize(HtmlPlatform.DEFAULT_WIDTH, HtmlPlatform.DEFAULT_HEIGHT); } @Override public CanvasLayer createCanvasLayer(int width, int height) { return new HtmlCanvasLayerDom(width, height); } @Override public GroupLayer createGroupLayer() { return new HtmlGroupLayerDom(); } @Override public ImageLayer createImageLayer() { return new HtmlImageLayerDom(); } @Override public ImageLayer createImageLayer(Image img) { return new HtmlImageLayerDom(img); } @Override public SurfaceLayer createSurfaceLayer(int width, int height) { return new HtmlSurfaceLayerDom(width, height); } @Override public int height() { return rootLayer.element().getOffsetHeight(); } @Override public HtmlGroupLayerDom rootLayer() { return rootLayer; } @Override public void setSize(int width, int height) { super.setSize(width, height); rootLayer.element().getStyle().setWidth(width, Unit.PX); rootLayer.element().getStyle().setHeight(height, Unit.PX); } @Override public int width() { return rootLayer.element().getOffsetWidth(); } void updateLayers() { rootLayer.update(); } @Override Element getRootElement() { return rootLayer.element(); } }