⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 containerfigure.java

📁 eclipse 的程序源码
💻 JAVA
字号:
/******************************************************************************* * Copyright (c) 2000, 2005 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: *     IBM Corporation - initial API and implementation *******************************************************************************/package org.eclipse.swt.examples.paint;import org.eclipse.swt.graphics.*;/** * Container for Figure objects with stacking preview mechanism. */public class ContainerFigure extends Figure {	private static final int INITIAL_ARRAY_SIZE = 16;		Figure[]   objectStack = null;	int      nextIndex = 0;	/**	 * Constructs an empty Container	 */	public ContainerFigure() {	}	/**	 * Adds an object to the container for later drawing.	 * 	 * @param object the object to add to the drawing list	 */	public void add(Figure object) {		if (objectStack == null) {			objectStack = new Figure[INITIAL_ARRAY_SIZE];		} else if (objectStack.length <= nextIndex) {			Figure[] newObjectStack = new Figure[objectStack.length * 2];			System.arraycopy(objectStack, 0, newObjectStack, 0, objectStack.length);			objectStack = newObjectStack;		}		objectStack[nextIndex] = object;		++nextIndex;	}	/**	 * Determines if the container is empty.	 * @return true if the container is empty	 */	public boolean isEmpty() {		return nextIndex == 0;	}	/**	 * Adds an object to the container and draws its preview then updates the supplied preview state.	 * 	 * @param object the object to add to the drawing list	 * @param gc the GC to draw on	 * @param offset the offset to add to virtual coordinates to get display coordinates	 * @param rememberedState the state returned by a previous drawPreview() or addAndPreview()	 *        using this Container, may be null if there was no such previous call	 * @return object state that must be passed to erasePreview() later to erase this object	 *///	public Object addAndPreview(Figure object, GC gc, Point offset, Object rememberedState) {//		Object[] stateStack = (Object[]) rememberedState;//		if (stateStack == null) {//			stateStack = new Object[INITIAL_ARRAY_SIZE];//		} else if (stateStack.length <= nextIndex) {//			Object[] newStateStack = new Object[stateStack.length * 2];//			System.arraycopy(stateStack, 0, newStateStack, 0, stateStack.length);//			stateStack = newStateStack;//		}//		add(object);//		stateStack[nextIndex - 1] = object.drawPreview(gc, offset);//		return stateStack;//	}	/**	 * Clears the container.	 * <p>	 * Note that erasePreview() cannot be called after this point to erase any previous	 * drawPreview()'s.	 * </p>	 */	public void clear() {		while (--nextIndex > 0) objectStack[nextIndex] = null;		nextIndex = 0;	}	public void draw(FigureDrawContext fdc) {		for (int i = 0; i < nextIndex; ++i) objectStack[i].draw(fdc);	}	public void addDamagedRegion(FigureDrawContext fdc, Region region) {		for (int i = 0; i < nextIndex; ++i) objectStack[i].addDamagedRegion(fdc, region);	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -